1

Тема: Як знайти другий елемент масиву першої половини

Доброго дня, знаю все всім набрид з цим завданням. Допоможіть будь ласка.
Требя знайти другий елемент масиву першої половини, масиву з 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' невірний, допоможіть його перероби. Дякую!

2

Re: Як знайти другий елемент масиву першої половини

Спробуйте так (я не перевіряв)

for (int i = SIZE / 2; i < SIZE; i++) {
        if (array[i] > min) {
            min = array[i];
        }
        if (array[i] > min2) {
            min2 = array[i];
        }
        if (min < min2) {
            printf("2min el: %d", min2);
        }
    }

3 Востаннє редагувалося laketych (19.01.2017 09:06:47)

Re: Як знайти другий елемент масиву першої половини

Betterthanyou написав:

Спробуйте так (я не перевіряв)

for (int i = SIZE / 2; i < SIZE; i++) {
        if (array[i] > min) {
            min = array[i];
        }
        if (array[i] > min2) {
            min2 = array[i];
        }
        if (min < min2) {
            printf("2min el: %d", min2);
        }
    }

Неа. А чомуSIZE / 2 а потім i < SIZE. Це ж будет SIZE / 2 = 50. Отже це буде від 50 до 100. А мені требя від 0 до 50, але не в цьому справа, самі логічні операторі неправильні, на мою думку.

Подякували: Betterthanyou1

4

Re: Як знайти другий елемент масиву першої половини

За що я люблю Python...
from random import random #аналог include
SIZE = 100 #розмір
array = [int(random()*100) for _ in range(SIZE)] #масив
print(array)
half = array[:SIZE//2] #половина
half.pop(half.index(min(half))) #видаляємо з половини перший мінімальний
print(min(half))

або ж (замість останніх 2-х рядків)

print(sorted(half)[1])

5

Re: Як знайти другий елемент масиву першої половини

А ваша проблема в тому, що вам, фактично, треба створити відсортований масив з 2-х елементів (min і min2). Тобто, якщо це робити вручну, то

        int t;
        if (array[i] < min) { //умову ви теж переплутали!
            t = min;//запам'ятали min
            min = array[i];
        } else {
            t = array[i];
        }
        if (t < min2) { //а тепер записуємо в min2
            min2 = t;
        }

А якщо спитати 3-є мінімальне значення, то треба додати 3-й if і ще одну змінну, або окремий цикл... тут легше вже відсортувати - або стандартним sort, або прокрутити два цикли "бульбашки".

Подякували: laketych1