Тема: Масив. Модуль різниці має найменше значення

Прошу вибачення за мою тупість, але на задачці заклинило.
Задано одновимірний масив. Знайти два серед його елементів, модуль різниці яких має найменше значення.
Дякую

2

Re: Масив. Модуль різниці має найменше значення

В подвійному циклі перебираєте всі елементи по два рази і шукаєте потрібні. Не забудьте тільки виключити випадок, коли це той самий елемент.
В принципі, можна і оптимальніше, але складніше (спершу відсортувати).

3

Re: Масив. Модуль різниці має найменше значення

#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "russian");
    const int size = 5;
    int mas[size];
    int tmp;
    // Введення даних у масив користувачем
    for (int i = 0; i < size; i++){
        cout << "Введіть " << i << " елемент масиву ";
        cin >> mas[i];
    }
    // обробка
    int x = 32000;
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (abs(i - j) < x & (i != j))
            {
                x = abs(i - j);
            }
        }
    }
    cout << " Найменший модуль різниці двох елементів має значення " << x << endl;
    system("pause");
    return 0;
}

Що не так?

4

Re: Масив. Модуль різниці має найменше значення

Мені вже набридло це  повторювати, але: ідеального коду не існує. В будь-якому коді можна вказати, що "не так". Це ви скажіть, що вас не влаштовує в цьому коді.

5

Re: Масив. Модуль різниці має найменше значення

koala прошу, не гнівайтесь. Я не програміст, лише учитель у середній школі. Намагаюся розібратися з цією задачею. Розумію, що не добре, коли учитель на такому елементарному "обламується", але мені потрібна ваша допомога, щоб наші діти росли на "чистому молоці, без води". Мені легше дати їм погратися на компі, але хочу чомусь їх навчити. Вибачте, що у нас в Україні такі вчителі.

Подякували: Joker, koala2

6

Re: Масив. Модуль різниці має найменше значення

Я більше скажу, я погодився б платити комусь за те, щоб мене підучили програмуванню

7

Re: Масив. Модуль різниці має найменше значення

офтоп

koala прошу, не гнівайтесь. Я не програміст, лише учитель у середній школі. Намагаюся розібратися з цією задачею. Розумію, що не добре, коли учитель на такому елементарному "обламується", але мені потрібна ваша допомога, щоб наші діти росли на "чистому молоці, без води". Мені легше дати їм погратися на компі, але хочу чомусь їх навчити. Вибачте, що у нас в Україні такі вчителі.

Дякую поставив за чесність, я б не зумів так сказати. (учень)

8

Re: Масив. Модуль різниці має найменше значення

Вибачте, якщо сприйняли мій тон як агресію; я просто хочу сказати, що аби щось зробити, треба розібратися в тому, що саме треба зробити. Власне, все програмування - про те, як якомога точніше висловити свої думки. Тому без вашої думки, що саме ви хотіли б покращити, ми вам не допоможемо.

9

Re: Масив. Модуль різниці має найменше значення

#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "russian");
    const int size = 5;
    int mas[size];
    int tmp;
    int x = 32000;
    // Введення даних у масив користувачем
    for (int i = 0; i < size; i++){
        cout << "Введіть " << i << " елемент масиву ";
        cin >> mas[i];
    }
    // обробка
    
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (i != j)
            {
                if (abs(i - j) < x)
                {
                    x = abs(i - j);
                }
            }
        }
    }
    cout << "Найменший модуль різниці двох елементів має значення " << x << endl;
    system("pause");
    return 0;
}

Ось трішки відкорегований код, але я все одно не розумію чому мені програма викидає результат одиницю

10

Re: Масив. Модуль різниці має найменше значення

Roma_Kononenko написав:

Ось трішки відкорегований код, але я все одно не розумію чому мені програма викидає результат одиницю

А це вже абсолютно коректне і прийнятне питання. Одиниця там виходить тому, що вам треба знайти мінімум із abs( mas[ i ] - mas[ j ] ), а ви шукаєте його серед abs( i - j ).

11 Востаннє редагувалося Roma_Kononenko (21.01.2015 23:07:49)

Re: Масив. Модуль різниці має найменше значення

вибачте. дякую

12 Востаннє редагувалося Roma_Kononenko (21.01.2015 23:14:36)

Re: Масив. Модуль різниці має найменше значення

вкотре я переконуюся, що просто не уважний

// mas.cpp : main project file.

#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "russian");
    const int size = 5;
    int mas[size];
    int tmp;
    int x = 32000;
    // Введення даних у масив користувачем
    for (int i = 0; i < size; i++){
        cout << "Введіть " << i << " елемент масиву ";
        cin >> mas[i];
    }
    // обробка
    
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (i != j)
            {
                if (abs(mas[i] - mas[j]) < x)
                {
                    x = abs(mas[i] - mas[j]);
                }
            }
        }
    }
    cout << "Найменший модуль різниці двох елементів має значення " << x << endl;
    system("pause");
    return 0;
}

От і все

Post's attachments

Безымянный.jpg 37.44 kb, 154 downloads since 2015-01-21 

13

Re: Масив. Модуль різниці має найменше значення

Roma_Kononenko написав:

вибачте. дякую

Тут не варто вибачатися, це абсолютно нормальна частина процесу. Всі туплять над програмами.

А, власне, нащо вам ця програма? Збираєтеся вчити учнів у школі C++? Перебирайтесь на Python чи JavaScript, вони значно простіші і зрозуміліші для новачків.

14 Востаннє редагувалося Roma_Kononenko (21.01.2015 23:26:45)

Re: Масив. Модуль різниці має найменше значення

мені казали, що головне навчитися програмувати, типу будь-яка мова програмування підійде чи то Basic, Pascal, C, C++ байдуже, головне — вміти програмувати. Я спочатку вчився на Pascal потім на С++ (цей перехід для мене був дуже важким, дітям мабуть теж буде складно). Вважаю, що С++ це мова програмування з перспективою, тому і викладаю її дітям, а що таке Pascal? З Python-ом не знайомий, а JavaScript це ж мова програмування скриптів, вона, здається, не дозволена програмою міністерства

15

Re: Масив. Модуль різниці має найменше значення

Roma_Kononenko, вибачте, а вчитель якої дисципліни Ви?

16

Re: Масив. Модуль різниці має найменше значення

Соромно признатися, але інформатики

17

Re: Масив. Модуль різниці має найменше значення

Roma_Kononenko написав:

Соромно признатися, але інформатики

Прихований текст

Боже, бережи Україну!

18

Re: Масив. Модуль різниці має найменше значення

краще було цього не писати

19

Re: Масив. Модуль різниці має найменше значення

В нас вже є вчитель, який не розуміє як WriteLn в паскалі працює, ви не соромтеся, всі вчителя такі - інших нема.

20

Re: Масив. Модуль різниці має найменше значення

Шкода, але це правда. Ті,хто вміє програмувати, у школі не сидять

Подякували: 0xDADA11C71