Найти два минимальных элемента массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Собственно сам вопрос в заголовке. Сделал что-то такое, но не всегда правильно работает:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
int main(){
      srand(time(NULL));
      int N;
      printf("N=");
      scanf("%d",&N);
 
      int *tab=(int*)malloc(sizeof(int)*N);
 
      int element;
 
         for(int i=0;i<N;i++){
               element=rand()%41;
               tab[i]=element;
         }
 
         for(int i=0;i<N;i++){
               printf("%d",tab[i]);
               printf("\n");
         }
 
      int minimum1;
      int minimum2;

   minimum2=tab[1];
      for(int i=1;i<N;i++){
            if(tab[i]<minimum2){
                  minimum2=tab[i];
            }
      }
 
   minimum1=tab[0];
      for(int i=0;i<N;i++){
           if(minimum1<minimum2){
                  minimum1=tab[i];
              }
      }
 
      printf("Minimum1 = %d ",minimum1);
      printf("\n Minimum2 = %d ",minimum2);
 
   return 0;
}
Скажите, как сделать правильно? Заранее спасибо!

Решение задачи: «Найти два минимальных элемента массива»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
int main(void){
    srand(time(NULL));
    int N, ind;
    printf("N=");
    scanf("%d",&N);
    int *tab=(int*)malloc(sizeof(int)*N);
    for(int i=0;i<N;i++)
    {
        tab[i]=rand()%41;
    }
 
    for(int i=0;i<N;i++)
    {
        printf("%d",tab[i]);
        printf("\n");
    }
    int minimum1,minimum2;
    minimum1=tab[0];
    for(int i=1;i<N;i++)
        if(tab[i]<minimum1)
        {
            minimum1=tab[i];
            ind=i;
        }
    minimum2=tab[0];
    for(int i=1;i<N;i++)
    {
        if(tab[i]<minimum2 && ind!=i)
        {
            minimum2=tab[i];
        }
    }
 
      printf("Minimum1 = %d ",minimum1);
      printf("\n Minimum2 = %d ",minimum2);
 
   return 0;
}

Объяснение кода листинга программы

В этом коде:

  1. Сначала программа запрашивает у пользователя количество элементов в массиве (переменная N).
  2. Затем программа генерирует массив случайных целых чисел от 0 до 40 (используя функцию rand() и оператор модуля %).
  3. Далее программа выводит на экран все числа этого массива (используя цикл for и функцию printf()).
  4. Затем программа ищет два минимальных числа в массиве (используя два вложенных цикла for).
  5. Первый минимум запоминается в переменной minimum1, а второй - в переменной minimum2.
  6. Наконец, программа выводит на экран значения minimum1 и minimum2 (используя функцию printf()). Код корректно работает, если в нем не делать ошибок (например, не выделять память под массив или не проверять, что пользователь ввел корректное число при запросе количества элементов).

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


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

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

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