Программа находит минимум в массиве, а максимум нет - 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();
 
}

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. В начале программы объявляются переменные:
    • Pi - значение числа π,
    • x, y - переменные для хранения текущих значений координат,
    • xn, xk, xh - переменные для задания диапазона значений координаты x,
    • min, max - переменные для хранения минимального и максимального значений функции соответственно,
    • xmin, xmax - переменные для хранения соответствующих координат.
  2. Затем выводится шаблон таблицы:
    • printf(\n    X    Y\n);
  3. Далее выполняется цикл по переменной x от xn до xk с шагом xh:
    • for (x=xn;x <= xk;x+=xh)
  4. Внутри цикла определяются значения 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);}
  5. Выводится текущее значение x и y:
    • printf(%5.2f %5.2f\n,x,y);
  6. Если текущее значение y больше максимального, то обновляется max и xmax:
    • if (y > max) {max=y; xmax=x;}
  7. Если текущее значение y меньше минимального, то обновляется min и xmin:
    • if (y < min) {min=y; xmin=x;}
  8. После завершения цикла выводятся минимальное и максимальное значения функции, а также соответствующие им значения x:
    • printf(Min= %5.2f ??? x=%5.2f\n,min,xmin);
    • printf(Max= %5.2f ??? x=%5.2f\n,max,xmax);
  9. В конце программы выполняется задержка, чтобы программа не закрылась сразу после вывода:
    • getch();
  10. Все завершается возвратом из функции main():
    • return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы