В чем может быть ошибка? Нахождение третьего по величине элемента во второй половине массива - C (СИ)
Формулировка задачи:
Читала, что для массивов нужно грамотно выделять память, эффективней всего динамическую. Честно говоря, не знаю, правильно ли я это сделала, так как не очень поняла как именно ее выделять. Если не сложно, укажите, что не так
Нужно найти то, что я описала в заголовке, и вот, у меня получилось их найти (максимальный элемент, второй по величине и третий), но после пересохранения файла под другим именем и компиляции уже его, стал появляться мусор, а не такие желанные для меня значения. Вопрос: что же не так? У меня должно получится 93, 90 и 88, но как видите, не вышло.
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 100 int main() { int mass[N], i, max, max2, max3; int *a =(int*)malloc(N*sizeof(int)); a = &mass[N]; printf("\r\nElements of massive: \r\n"); printf("\r\n= = = = = = = = = = = = = = =\r\n"); for (i = 0; i < N; i++) { mass[i] = rand ()%100; printf("\r\n[%d] = %d\r\n", i, mass[i]); } printf("\r\n= = = = = = = = = = = = = = =\r\n"); for (i = N/2; i < N; i++) { if (mass[i] > max) { max = 0; max = mass[i]; } } for (i = N/2; i < N; i++) { if ((mass[i] != max)&&(mass[i] > max2)) { max2 = 0; max2 = mass[i]; } } for (i = N/2; i < N; i++) { if ((mass[i] > max3) && (mass[i] != max) && (mass[i] != max2)) { max3 = 0; max3 = mass[i]; } } printf("\r\nThe maximal value is: %d\r\n", max); printf("\r\nThe second maximal value is: %d\r\n", max2); printf("\r\nThe third maximal value is: %d\r\n", max3); free (a); *a = 0; getch (); return 0; }
Решение задачи: «В чем может быть ошибка? Нахождение третьего по величине элемента во второй половине массива»
textual
Листинг программы
int *mass; mass =(int*)malloc(N*sizeof(int));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д