Найти наименьшее число в массиве - 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'));
 
}

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

В этом коде:

  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
Похожие ответы