В чем может быть ошибка? Нахождение третьего по величине элемента во второй половине массива - 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));