Другие языки программирования и технологии

Поможете найти и исправить тут ошибку. (СИ программирование)

Не ищет правильно минимальное значение массива. Спасибо за ответ!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 15
#define M 100
int main(void) {
int i, mx, mn;
double avg;
int x[N];
srand((unsigned)time(NULL));
for (i = 0; i < N; ++i) x[i] = rand() % M;
for (i = 0; i < N; ++i) printf("%4i", x[i]);
putchar('\n');
mx = mn = x[0];
for (i = 1; i < N; ++i) {
if (x[i] < mn) mn = x[i];
if (x[i] > mx) mx = x[i];
}
avg = (mx + mn) / 2.0;
printf(" max: %i\n min: %i\n average: %.1Lf", mx, mn, avg);
getchar();
return 0;
}
Анатолий Шурубченко
Анатолий Шурубченко
90 848
Лучший ответ
Строка 27. У вас значение массива сравнивается с MIN, которое не определено и по-умолчанию равно 0.00. Ничто в массиве не будет меньше чем 0.00.
Олег Щульцов
Олег Щульцов
85 402
А крупнее фото или текст выложи
вы работаете в инте так что мин и макс можно в инт превратить и им задать НАЧАЛЬНЫЕ ЗНАЧЕНИЯ

int MIN = INT_MAX, MAX = INT_MIN;
либо присвоить им значения первых элементов массива после заполнения
int MIN,MAX;
//filling
MIN = X[0]; MAX = X[0];
//search

а так у вас непонятный мусор в переменных и неизвестно как он соотносится с числом в массиве и выполнятся ли у вас когда либо ваши условия

ваш код в один прогон (компилил там же на чистом С)

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#define a 15

int main()
{
srand(time(NULL));
float x[a];
float max, min;

for (int i = 0; i < a; i++)
{
x[i] = rand() % 100;
printf("Array[%d]: %f\r\n", i, x[i]);
if (i == 0) { min = x[0]; max = x[0]; continue; }
if (x[i] > max) max = x[i];
if (x[i] < min) min = x[i];
}

printf("max: %f; min: %f; e: %f\r\n", max, min, (max + min) / 2);

return 0;
}