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

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


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

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

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