Найти два минимальных элемента массива - 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;
}
Объяснение кода листинга программы
В этом коде:
- Сначала программа запрашивает у пользователя количество элементов в массиве (переменная N).
- Затем программа генерирует массив случайных целых чисел от 0 до 40 (используя функцию rand() и оператор модуля %).
- Далее программа выводит на экран все числа этого массива (используя цикл for и функцию printf()).
- Затем программа ищет два минимальных числа в массиве (используя два вложенных цикла for).
- Первый минимум запоминается в переменной minimum1, а второй - в переменной minimum2.
- Наконец, программа выводит на экран значения minimum1 и minimum2 (используя функцию printf()). Код корректно работает, если в нем не делать ошибок (например, не выделять память под массив или не проверять, что пользователь ввел корректное число при запросе количества элементов).