Нужно Обьяснить Код Программы.

  • Автор темы mccartney
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

mccartney

#1
Здравствуйте, проблему следующая:
Есть код двух программ, который нужно обьяснить корректным русским языком максимально подробно, каждую строку, в идеале даже каждую скобку
Программы рабочие, но возможно не корректно или не правильно написан код.. по сути дела никакого значения это не имеет, главное обьяснить действия которые выполняются в этом коде

Первая программа: (язык С)
консольное приложение, эмитирующее работу простого калькулятора.

требования к программе:
- приложение должно позволять производить бинарные операции: сложение, вычитание, умножение, деление;
- при запуске приложения должен производиться ввод первого числа, затем - знака операции или управляющей команды, затем, в первом случае, второго числа, после чего должен производиться вывод результата и ввод следующей операции или управляющей команды (одно-символьные);
- по одной из управляющих команд (“сброс”) должен производиться возврат на ввод первого числа, по другой (“конец”)– закрытие приложения;
- произведенные операции должны накапливаться в файле текстового формата в папке программы;
- для ввода и вывода использовать только стандартные функции C.

краткая инструкция по работе с программой:
Ввести первое значение
Ввести символ операции +, -, *, /.
Ввести второе значение
Получаем результат
Ввести символ операции +, -, *, /.
Ввести третье значение
Получаем результат
Опрерацию можно выполнять несколько раз
Посде вычислений результата можно сбросить введя букву «c»
И проделать предыдущие шаги заного
Чтобы выйти из программы нужно ввести кнопку «q»

код программы:

int main(int argc, char *argv[])
{

double a,b;
char oper, isoper;

FILE*f;
f=fopen("asd.txt", "w");

fprintf(f, "Begin\n");
m1:;
printf("Vvedite 1 chislo: ");
scanf("%lf", &a);
m2:;
printf("Vvedite deistvie: ");
scanf("%c", &oper);
scanf("%c", &oper);

isoper=((oper=='+') || (oper=='-') || (oper=='/') || (oper=='*') || (oper=='c') || (oper=='q'));

if (!isoper)
{
printf("Unncorrect\n");
fprintf(f, "Unncorrect\n");
goto m2;
}
if (oper=='c')
{
fprintf(f, "Reset\n");
goto m1;
}
if (oper=='q')
{
fprintf(f, "End");
goto m3;
}
printf("Vvedite 2 chislo: ");
scanf("%lf", &:);

if (oper=='+')
{
fprintf(f, "%.2lf", a); fprintf(f, "%c", oper);
fprintf(f, "%.2lf", B); fprintf(f, "=");
a=a+b;
printf("Otvet=%.2lf\n", a);
fprintf(f, "%.2lf", a); fprintf(f, "\n");
goto m2;
}
if (oper=='-')
{
fprintf(f, "%.2lf", a); fprintf(f, "%c", oper);
fprintf(f, "%.2lf", B); fprintf(f, "=");
a=a-b;
printf("Otvet=%.2lf\n", a);
fprintf(f, "%.2lf", a); fprintf(f, "\n");
goto m2;
}

if (oper=='/')
{
fprintf(f, "%.2lf", a); fprintf(f, "%c", oper);
fprintf(f, "%.2lf", B); fprintf(f, "=");
a=a/b;
printf("Otvet=%.2lf\n", a);
fprintf(f, "%.2lf", a); fprintf(f, "\n");
goto m2;
}
if (oper=='*')
{
fprintf(f, "%.2lf", a); fprintf(f, "%c", oper);
fprintf(f, "%.2lf", B); fprintf(f, "=");
a=a*b;
printf("Otvet=%.2lf\n", a);
fprintf(f, "%.2lf", a); fprintf(f, "\n");
goto m2;
}
m3:;
fprintf(f, "\n");
fclose(f);

system ("PAUSE");
return 0;
}

вторая программа: (язык С++)
консольное приложение, производящее табулирование заданной функции и определение максимального и минимального значения функции в таблице.

Требования к программе:
Вводится: начало диапазона табулирования, конец диапазона табулирования, число шагов табулирования.
Выводится: столбцы соответствующих значений аргумента и функции, минимальное и максимальное значения функции.
Таблица значений аргумента и функции должна, кроме того, сохраняться в файле текстового формата в папке программы. Для ввода и вывода использовать стандартные объекты и классы C++;

Краткая инструкция по пользованию программой
1 ввести начало диапазона
2 ввести конец диапазона
3 ввести количество шагов
4 смотреть результат

код программы:

int main(int argc, char *argv[])
{
FILE*file1;
file1=fopen("save1.txt","a");

double y, i, xmin, xmax, xshag, ymin,ymax;
printf("Vvedite nachalo diapazona\n");
scanf("%lf", &xmin);
printf("Vvedite konec diapazona\n");
scanf("%lf", &xmax);
printf("Vvedite kolichestvo shagov\n");
scanf("%lf", &xshag);
xshag = (xmax-xmin)/xshag;
printf("|----------------------|\n");
fprintf(file1,"|----------------------|\n");
printf("| X Y |\n");
fprintf(file1,"| X Y |\n");
printf("|----------------------|\n");
fprintf(file1,"|----------------------|\n");
y = ((xmin+log(xmin*xmin*xmin+1))/(xmin*xmin+pow(2.3,xmin)))*(xmin-sin(xmin));
ymin = y;
ymax = y;
while (xmin <= xmax)
{
y = ((xmin+pow(3.2,2*xmin)) / (xmin*xmin+log(xmin*xmin+1)))*(xmin-sin(xmin));
printf("|%.5le ",xmin);
fprintf(file1,"|%.5le ",xmin);
printf("%.5le |",y);
fprintf(file1,"%.5le |",y);
printf("\n");
fprintf(file1,"\n");
xmin=xmin+xshag;
if (ymin>y) (ymin=y);
if (ymax<y) (ymax=y);
}
printf("|----------------------|\n");
fprintf(file1,"|----------------------|\n");
printf("ymin=%.5le ",ymin);
fprintf(file1,"ymin=%.5le ",ymin);
printf("\n");
fprintf(file1,"\n");
printf("ymax=%.5le ",ymax);
fprintf(file1,"ymax=%.5le ",ymax);
printf("\n");
fprintf(file1,"\n");
fclose(file1);



system("PAUSE");
return EXIT_SUCCESS;
}


я конечно могу ошибаться, но думаю обьяснить код намного легче чем написать его) Заранее выражаю благодарность всем кто поможет! очень нужна ваша помощь!
 
Статус
Закрыто для дальнейших ответов.