Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Segmentation fault. Выполнял задание с нахождением минимального и максимального значения в массиве

Антон Профи (531), открыт 12 часов назад
#include <stdio.h>

int main() {
int arr[5] = {-14, 2, 1, 13 ,5};
int proverka = 0;
int minVal, maxVal;

for (int i = 0; i < 5; i++) { //Минимальный массив
if (arr[proverka] < arr[i]) {
arr[minVal] = arr[proverka];
proverka++;
}
}

for (int i = 0; i < 5; i++) { //Максимальный массив
if (arr[proverka] > arr[i]) {
arr[maxVal] = arr[proverka];
proverka++;
}
}
printf("%d\n", arr[minVal]);
printf("%d\n", arr[maxVal]);
return 0;
}
2 ответа
etar125 Мыслитель (5460) 12 часов назад
#include <stdio.h>

int main(void) {
int arr[5] = { -14, 2, 1, 13, 5 };
int min = 0, max = 0;
for(int i = 0; i < 5; i++) {
if(arr[i] > max) { max = arr[i]; }
else if(arr[i] < min) { min = arr[i]; }
}
printf("min:%d\nmax:%d\n", min, max);
return 0;
}
Переменные не инициализированы и ты их используешь как индекс. Отсюда и сегфолт походу.
АнтонПрофи (531) 11 часов назад
Ок, все исправил. Переменные назначил изначально нулевыми, убрал proverka и просто стал засовывать в minVal и maxVal нужные значения при сравнивании
АнтонПрофи (531) 11 часов назад
Хотя до этого этот код как-то работал, но там был определитель только минимального значения :\
Антон, то, что ты написал, это неработающий говнокод. Если его выхлоп случайно совпал на одном тесте, это не значит, что он работает.
S.H.I. Оракул (72672) 11 часов назад
#include <stdio.h>

int main() {
int arr[5] = {-14, 2, 1, 13, 5};
int minVal = arr[0]; // Инициализируем минимум первым элементом
int maxVal = arr[0]; // Инициализируем максимум первым элементом

for (int i = 1; i < 5; i++) { // Начинаем с индекса 1
if (arr[i] < minVal) {
minVal = arr[i]; // Обновляем минимум
}

if (arr[i] > maxVal) {
maxVal = arr[i]; // Обновляем максимум
}
}

printf("Минимальное значение: %d\n", minVal);
printf("Максимальное значение: %d\n", maxVal);
return 0;
}
Похожие вопросы