Найти наименьшее число в массиве - C (СИ)
Формулировка задачи:
Всем добрый день , прошу вашей помощи в дописании программы :
Само задание по программе : Массив из N элементов состоящий из натуральных чисел . Найти наименьшее число в массиве (если эти числа повторяются , тогда первое число с левого края ) и поменять местами это с первым элементом массива .
Как видите программа чуток сделана уже , но она тока на 50 % готова , незнаю как сделать что-бы он менял местами и если одинаковые числа - брал самое левое ... Если кто-то может помочь я буду тока рад = зарее всем спасибо за помощь
Листинг программы
- #pragma hdrstop
- #pragma argsused
- #include <stdio.h>
- #include <conio.h>
- #ifdef _WIN32
- #include <tchar.h>
- #else
- typedef char _TCHAR;
- #define _tmain main
- #endif
- void main () {
- int ns, i, mas[5], min ;
- char ch; // atkartosanai
- int min_value = mas[0];
- do {
- printf("Vvedite 5 naturalnih cisel, otdelaja ih SPACE:\n");
- for (i = 0; i <= 5; i++) {
- scanf ("%d", &mas[i]); }
- for(i = 0; i < 5; i++)
- if(mas[i] < min_value) min_value = mas[i];
- printf("%i", min_value);
- printf("\n\nPovtorit y, esli ne hotite, togda lubuju druguju knopku\n");
- flushall();
- scanf("%c", &ch);
- clrscr();
- }
- while (ch == 'y' || ch == 'Y');
- getch();
- }
Решение задачи: «Найти наименьшее число в массиве»
textual
Листинг программы
- #include <stdio.h>
- void main(void)
- {
- unsigned int N, min, min_index, mas[1000];
- char ch;
- do
- {
- printf("Vvedite razmer massiva: ");
- scanf("%d", &N);
- printf("Vvedite elementu massiva: ");
- for (int i = 0; i < N; i++)
- {
- scanf("%d", &mas[i]);
- }
- min = mas[0];
- min_index = 0;
- for (int i = 0; i < N; i++)
- {
- if (mas[i] <= min)
- if ((mas[i]!=min)&&(i>min_index))
- {
- min_index = i;
- min = mas[i];
- }
- }
- unsigned int temp = mas[0];
- mas[0] = mas[min_index];
- mas[min_index] = temp;
- for (unsigned int i = 0; i < N; i++)
- {
- printf("%d ", mas[i]);
- }
- printf("\nPovtorit y, esli ne hotite, togda lubuju druguju knopku\n");
- scanf("%s", &ch);
- } while ((ch == 'y') || (ch == 'Y'));
- }
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
N
- размер массива;min
- наименьшее число;min_index
- индекс наименьшего числа;mas[1000]
- массив для хранения чисел;ch
- символ для проверки наличия желания повторить ввод.
- В цикле do-while происходит ввод данных и поиск наименьшего числа в массиве:
- В начале цикла пользователь вводит размер массива;
- Затем происходит заполнение массива числами;
- Переменная
min
инициализируется первым элементом массива, а переменнаяmin_index
инициализируется индексом этого элемента; - Далее происходит проход по всем элементам массива. Если текущий элемент меньше
min
, то он становится новымmin
, а его индекс становится новымmin_index
, если текущий элемент не равенmin
и его индекс большеmin_index
. - После прохода по всем элементам массива наименьшее число перемещается в начало массива, а его индекс становится первым в цикле.
- В цикле от 0 до N происходит вывод элементов массива.
- После вывода элементов массива пользователю предлагается ввести 'y' или 'Y' для повторного ввода, любую другую клавишу для выхода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д