Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2017, 09:58   #1
laketych
Пользователь
 
Регистрация: 22.12.2015
Сообщений: 37
По умолчанию Как найти второй минимальный элемент массива

Нужно найти второй минимальный елемент массива из первой половины 100елементного массива.

Код:
#include <stdio.h>
#include <Windows.h>
#define SIZE 100
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int array[SIZE];
    int min2;
    static min;
 
 
    for (int i = 0; i < SIZE; i++)
    {
        array[i] = rand() % 20;
    }
 
    for (int i = 0; i < SIZE; i++)
    {
        printf("%d ", array[i]);
    }
 
 
    printf("\n\n\nПервая часть массиву: ");
    for (int i = 0; i < SIZE / 2; i++)
    {
        printf("%d ", array[i]);
    }
 
 
    printf("\n\n\nВторой минимальный элемент первой половины массива: ");
    min = array[0]; min2 = array[0];
    for (int i = 0; i < SIZE / 2; i++) {
        if (array[i] > min) {
            min = array[i];
        }
        if (array[i] > min2) {
            min2 = array[i];
        }
        if (min < min2) {
            printf("2min el: %d", min2);
        }
    }
 
}
Знаю что ошибка находить в после цикле for, не могу переделать его.
laketych вне форума Ответить с цитированием
Старый 19.01.2017, 10:45   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Отсортировать по возрастанию и брать хоть 2-ой, хоть 10-ый
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.01.2017, 11:40   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а если даны такие (допустим) числа: 4 1 3 2 1
какой второй минимальный элемент?


Цитата:
Сообщение от Аватар Посмотреть сообщение
Отсортировать по возрастанию и брать хоть 2-ой, хоть 10-ый
можно и так.
Но, если нужны всего два элемента, то сортировать необязательно.
достаточно воспользоваться таким алгоритмом:
Код:

    int min1=0, min2=0;
    if (array[0]<array[1]) {
    	min1 = array[0];
    	min2 = array[1];
    }
    else {
     	min1 = array[0];
    	min2 = array[1];
    }
    for (int i = 2; i < SIZE / 2; i++) {
    	if(array[i]<min1){
    		min2 = min1;
    		min1 = array[i];
    	}
    	else {
    		if(array[i]<min2){
    			min2 = array[i];
    		}
    	}
    }
    printf("первый минимальный: %d второй минимальный: %d ", min1, min2);
p.s. и поместите в начале программы иницилизацию ГПСЧ
Код:
 srand(time(NULL));
, иначе случайные числа будут всегда одни и те же.

Последний раз редактировалось Serge_Bliznykov; 19.01.2017 в 11:43.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1. Задан двумерный целочисленный массив Х(6,6). Найти минимальный элемент каждой строки и максимальный элемент каждого столбца массива и записать их в одномерный массив А. Greeb S Фриланс 5 15.12.2016 10:48
Вычислить минимальный элемент массива(вернусь ссылку на него ), заменить этой суммой минимальный элемент mari_ly Общие вопросы C/C++ 1 30.03.2016 16:31
Найти максимальный и минимальный элемент массива и сложить их OlgaRostov Помощь студентам 3 09.12.2015 19:37
Ввести элементы массива и найти минимальный элемент C# WPF Lilylov WPF, UWP, WinRT, XAML 1 19.10.2014 11:44
Исправте ошибку.Надо найти минимальный элемент массива!!! viknik Помощь студентам 1 13.03.2011 18:57