Программа находит минимум в массиве, а максимум нет - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float Pi=M_PI;
float x,y,xn=-3,xk=6,xh=1,min=1E+10,max=-1E+10,xmin,xmax;
printf("\n X Y\n");
for (x=xn;x <= xk;x+=xh)
{
if (x<0) {y=pow(x,3)+ 2*(pow(x,2))-2;}
if (x>1) {y=pow(x,2)+log(x);} else {y=pow(x,2*x-1)+cos(x);}
printf("%5.2f %5.2f\n",x,y);
if (y > max) {max=y; xmax=x;}
if (y < min) {min=y; xmin=x;}
}
printf("Min= %5.2f ??? x=%5.2f\n",min,xmin);
printf("Max= %5.2f ??? x=%5.2f\n",max,xmax);
getch();
}Решение задачи: «Программа находит минимум в массиве, а максимум нет»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
float Pi=M_PI;
float x,y,xn=-3,xk=6,xh=1,min=1E+10,max=-1E+10,xmin,xmax;
printf("\n X Y\n");
for (x=xn;x <= xk;x+=xh)
{
if (x<0) {y=pow(x,3)+ 2*(pow(x,2))-2;}
if (x>1) {y=pow(x,2)+log(x);}
if (x) {y=pow(x,2*x-1)+cos(x);}
printf("%5.2f %5.2f\n",x,y);
if (y > max) {max=y; xmax=x;}
if (y < min) {min=y; xmin=x;}
}
printf("Min= %5.2f ??? x=%5.2f\n",min,xmin);
printf("Max= %5.2f ??? x=%5.2f\n",max,xmax);
getch();
}
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- В начале программы объявляются переменные:
- Pi - значение числа π,
- x, y - переменные для хранения текущих значений координат,
- xn, xk, xh - переменные для задания диапазона значений координаты x,
- min, max - переменные для хранения минимального и максимального значений функции соответственно,
- xmin, xmax - переменные для хранения соответствующих координат.
- Затем выводится шаблон таблицы:
- printf(
\n X Y\n);
- printf(
- Далее выполняется цикл по переменной x от xn до xk с шагом xh:
- for (x=xn;x <= xk;x+=xh)
- Внутри цикла определяются значения y в зависимости от значения x:
- if (x<0) {y=pow(x,3)+ 2*(pow(x,2))-2;}
- if (x>1) {y=pow(x,2)+log(x);}
- if (x) {y=pow(x,2*x-1)+cos(x);}
- Выводится текущее значение x и y:
- printf(
%5.2f %5.2f\n,x,y);
- printf(
- Если текущее значение y больше максимального, то обновляется max и xmax:
- if (y > max) {max=y; xmax=x;}
- Если текущее значение y меньше минимального, то обновляется min и xmin:
- if (y < min) {min=y; xmin=x;}
- После завершения цикла выводятся минимальное и максимальное значения функции, а также соответствующие им значения x:
- printf(
Min= %5.2f ??? x=%5.2f\n,min,xmin); - printf(
Max= %5.2f ??? x=%5.2f\n,max,xmax);
- printf(
- В конце программы выполняется задержка, чтобы программа не закрылась сразу после вывода:
- getch();
- Все завершается возвратом из функции main():
- return 0;