Найти наименьшее число в массиве - C (СИ)

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

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

Всем добрый день , прошу вашей помощи в дописании программы : Само задание по программе : Массив из N элементов состоящий из натуральных чисел . Найти наименьшее число в массиве (если эти числа повторяются , тогда первое число с левого края ) и поменять местами это с первым элементом массива . Как видите программа чуток сделана уже , но она тока на 50 % готова , незнаю как сделать что-бы он менял местами и если одинаковые числа - брал самое левое ... Если кто-то может помочь я буду тока рад = зарее всем спасибо за помощь
Листинг программы
  1. #pragma hdrstop
  2. #pragma argsused
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #ifdef _WIN32
  6. #include <tchar.h>
  7. #else
  8. typedef char _TCHAR;
  9. #define _tmain main
  10. #endif
  11. void main () {
  12. int ns, i, mas[5], min ;
  13. char ch; // atkartosanai
  14. int min_value = mas[0];
  15. do {
  16. printf("Vvedite 5 naturalnih cisel, otdelaja ih SPACE:\n");
  17. for (i = 0; i <= 5; i++) {
  18. scanf ("%d", &mas[i]); }
  19. for(i = 0; i < 5; i++)
  20. if(mas[i] < min_value) min_value = mas[i];
  21. printf("%i", min_value);
  22. printf("\n\nPovtorit y, esli ne hotite, togda lubuju druguju knopku\n");
  23. flushall();
  24. scanf("%c", &ch);
  25. clrscr();
  26. }
  27. while (ch == 'y' || ch == 'Y');
  28. getch();
  29. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. void main(void)
  4. {
  5.     unsigned int N, min, min_index, mas[1000];
  6.     char ch;
  7.  
  8.     do
  9.     {
  10.         printf("Vvedite razmer massiva: ");
  11.         scanf("%d", &N);
  12.         printf("Vvedite elementu massiva: ");
  13.         for (int i = 0; i < N; i++)
  14.         {
  15.             scanf("%d", &mas[i]);
  16.         }
  17.         min = mas[0];
  18.         min_index = 0;
  19.         for (int i = 0; i < N; i++)
  20.         {
  21.             if (mas[i] <= min)
  22.             if ((mas[i]!=min)&&(i>min_index))
  23.             {
  24.                 min_index = i;
  25.                 min = mas[i];
  26.                
  27.             }
  28.         }
  29.             unsigned int temp = mas[0];
  30.             mas[0] = mas[min_index];
  31.             mas[min_index] = temp;
  32.        
  33.         for (unsigned int i = 0; i < N; i++)
  34.         {
  35.             printf("%d ", mas[i]);
  36.         }
  37.    
  38.         printf("\nPovtorit y, esli ne hotite, togda lubuju druguju knopku\n");
  39.         scanf("%s", &ch);
  40.  
  41.     } while ((ch == 'y') || (ch == 'Y'));
  42.  
  43. }

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

В этом коде:

  1. Объявлены переменные:
    • N - размер массива;
    • min - наименьшее число;
    • min_index - индекс наименьшего числа;
    • mas[1000] - массив для хранения чисел;
    • ch - символ для проверки наличия желания повторить ввод.
  2. В цикле do-while происходит ввод данных и поиск наименьшего числа в массиве:
    • В начале цикла пользователь вводит размер массива;
    • Затем происходит заполнение массива числами;
    • Переменная min инициализируется первым элементом массива, а переменная min_index инициализируется индексом этого элемента;
    • Далее происходит проход по всем элементам массива. Если текущий элемент меньше min, то он становится новым min, а его индекс становится новым min_index, если текущий элемент не равен min и его индекс больше min_index.
    • После прохода по всем элементам массива наименьшее число перемещается в начало массива, а его индекс становится первым в цикле.
  3. В цикле от 0 до N происходит вывод элементов массива.
  4. После вывода элементов массива пользователю предлагается ввести 'y' или 'Y' для повторного ввода, любую другую клавишу для выхода.

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


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

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

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы