1 Востаннє редагувалося panpol (26.12.2018 19:11:15)

Тема: різниця максимального і мінімального числа

Допоможіть знайти помилку у коді. Система не приймає задачу
задача
Знайти різницю між найбільшим та найменшим числом.
ТУ. Числа задаються у вхідному потоці по одному числу у рядку. Кількість чисел не більше 100000, числа не перевищують по модулю 100000.
Результат вивести у вихідний потік.

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int s, max, min,  k;
    unsigned short int n;
    cin >> k;
    cin >> n;
    min = max = n;

    for(s = 1; s < k; s++)
    {
        cin >> n;
        if(n <= 100000)
        {
            if(n > max) max = abs(n);
            else if(n < min) min = abs(n);
        }
        else break;
    }
    int c = max - min;
    cout << c;
}

2 Востаннє редагувалося Eff1c (26.12.2018 19:15:51)

Re: різниця максимального і мінімального числа

Напишіть текст помилки будь ласка.

3

Re: різниця максимального і мінімального числа

числа по модулю не повинні перевищувати 100 000

4

Re: різниця максимального і мінімального числа

"числа не перевищують по модулю 100000" - це не завдання для вас, це вхідна умова. Звісно, те, що ви її перевіряєте - це чудово, але ця гілка не має спрацьовувати ніколи. Завданням могло б бути "ігнорувати числа, що перевищують 1000000" чи "якщо якесь із чисел перевищує, вивести повідомлення "помилка".
Причому перевіряєте ви неправильно - в умові "не перевищують по модулю 100000", а ви модуль не обчислюєте. Натомість ви обчислюєте модуль, коли шукаєте максимум і мінімум - а там же не сказано "модуль максимального значення".

5

Re: різниця максимального і мінімального числа

Ви могли б написати як зробити правильн.

6 Востаннє редагувалося koala (26.12.2018 21:46:52)

Re: різниця максимального і мінімального числа

Біда у тому, що якщо я так зроблю, то ви не запам'ятаєте, як це правильно робити (бо зробив би я, а не ви) - ви запам'ятаєте, що треба не робити, а питати на форумах. Так що зробіть самі. Знову не вийде - знову спитаєте.

7

Re: різниця максимального і мінімального числа

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

8

Re: різниця максимального і мінімального числа

А вам і не треба ці умови записувати, вам ДАНО, що вони виконуються. Так само вам дано, що на вході будуть саме числа, а не літери - ви ж не перевіряєте, чи не літери на вході.

9

Re: різниця максимального і мінімального числа

тобто мені треба забрати строчку
if (n<100000)

10

Re: різниця максимального і мінімального числа

По-хорошому - так. Але можете залишити - він не має впливати на результат, бо і так виконується. Ну, хіба що виправити - там же "не перевищують", а у вас - менше.

11

Re: різниця максимального і мінімального числа

Чи можна для цієї задачі використати інший вид циклу, наприклад "поки"? І чи є інший алгоритм розв'язку, бо за цю задачу мені дано не максимальний бал.

12

Re: різниця максимального і мінімального числа

Можливо там потрібто ввести умову за якої буде вибивати помилку? (Якщо числа по модулю перевищуватимуть 100000)

13 Востаннє редагувалося koala (27.12.2018 08:44:02)

Re: різниця максимального і мінімального числа

panpol написав:

Чи можна для цієї задачі використати інший вид циклу, наприклад "поки"? І чи є інший алгоритм розв'язку, бо за цю задачу мені дано не максимальний бал.

Змінювати цикл не має сенсу.

for(ініціалізація;умова;перехід)
    тіло;

еквівалентний

ініціалізація;
while(умова) {
    тіло;
    перехід;
}

просто компактніше записується.
А ви точно прочитали, що я вище вам писав? Код виправили? Покажіть, що вийшло, ми ж не телепати.

14

Re: різниця максимального і мінімального числа

До речі, в unsigned short int 1000000 може не влізти. І ніхто не казав, що числа будуть додатними.

15

Re: різниця максимального і мінімального числа

Виправлений код. Може якимось іншим способом ввести числа?

#include <iostream>
#include <cmath>
using namespace std;
int main()
{

        int s, max, min,  k;
      unsigned short int n;
       // int absi(int n);
cin>>k;
         cin >> n;
        min = max = n;

        for(s=1;s<k;  s++)
        {
                cin >> n;
               
                if (n>max) max=n;
                else if (n<min) min=n;
              else  break;
                        }
        int c=max-min;
        cout<<c;

}

16 Востаннє редагувалося koala (27.12.2018 16:33:12)

Re: різниця максимального і мінімального числа

А break ви нащо робите?
Тип n чому не виправили?
Ну і теги [ code ] та вирівнювання не забувайте. Якщо хочете, щоб вам допомагали - зробіть так, щоб це було зручно.

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

17

Re: різниця максимального і мінімального числа

#include <iostream> //cin, cout
#include <algorithm> //min, max
int main()
{
    int max = -1000000;
    int min = 1000000;
    int n;
    std::cin>>n; //викидаємо це значення
    while(std::cin>>n) {//std::istream при помилці перетворюється у false
        min = std::min(min, n);
        max = std::max(max, n);
    }
    std::cout<<max-min;
}

18

Re: різниця максимального і мінімального числа

виправлений код

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int s, max, min, n, k;
             cin>>k;
         cin >> n;
        min = max = n;

        for(s=1;s<k;  s++)
        {
                cin >> n;
                if (n>max) max=n;
                else if (n<min) min=n;
          }
        int c=max-min;
        cout<<c;
}

19

Re: різниця максимального і мінімального числа

1. Відступи.
2. Що таке s?

20

Re: різниця максимального і мінімального числа

За допомогою s я хотів задати кроки циклу