Найти два минимальных элемента массива - 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()). Код корректно работает, если в нем не делать ошибок (например, не выделять память под массив или не проверять, что пользователь ввел корректное число при запросе количества элементов).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д