Найти наименьшее число в массиве - 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' для повторного ввода, любую другую клавишу для выхода.