1

Тема: Однакові сусідні числа

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

#include <iostream>
#include <stdio.h>
int main()
{
    unsigned int i, n;
    double a;
    printf("n=");
    scanf_s("%u", &n);
    for (i = 1; i <= n; i++)
    {
        printf("a%u=", i);
        scanf_s("%f", &a);
    }
}

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

2

Re: Однакові сусідні числа

Скажіть, а вам узагалі щось по алгоритмах пояснюють? От ви можете розкласти кубики і на кубиках показати, як перевірити, чи є два однакові сусідні кубики?

3

Re: Однакові сусідні числа

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

4

Re: Однакові сусідні числа

Гаразд, одна підказка: треба запам'ятовувати останнє введене число і з ним порівнювати.
Якщо це не допоможе, то доведеться вам розписувати, що саме ви "логічно розумієте".

5

Re: Однакові сусідні числа

я розумію, що ви маєте на увазі.. але я не можу зрозуміти, як і де це прописати.. наведу приклад: щоб знайти максимальне значення, перед циклом я прописувала, що max=x, а потім кожне значення з послідовності перевірялося і так  вичислялось, яке значення є насправді максимальним.. вираз для цього if (x > max) max = x; я прописала в циклі... так я розумію і тут.. треба, щоб запам'ятовувалось останнє значення і з ним порівнювались наступні так, як ви і казали.. але як це можна записати у моєму вищенаведеному коді я зрозуміти не можу.. як там можна це зробити? там треба ще якусь змінну ввести чи як?

6

Re: Однакові сусідні числа

Akos_Bond написав:

там треба ще якусь змінну ввести чи як?

Саме так - щоб щось запам'ятати, вам потрібна окрема змінна для цього.

7

Re: Однакові сусідні числа

ну добре.. ввожу я, наприклад, змінну t, порівнюю її з послідовністю чисел, тобто пишу, що t=a; а що далі? як мені прописати, що саме сусідні числа мають дорівнювати, а не просто з послідовності? if(t!=a) t=a;  може, якщо t не дорівнює а, то перевіряється інше число.. а потім вивести на екран два значення.. я просто до кінця не можу це повністю зрозуміти

8

Re: Однакові сусідні числа

У вас немає в програмі послідовності чисел. У вас є лише поточний елемент послідовності. І вираз t=a не порівнює t із a, ви щось наплутали.

9

Re: Однакові сусідні числа

стоп.. як це немає послідовності, якщо в завданні вказано, що є послідовність цілих чисел? я щось добре не можу зрозуміти це завдання.. все, що зрозуміла, я пояснила вище

10

Re: Однакові сусідні числа

Порівнювати треба два числа. Тому має бути дві змінні: для попереднього числа та для наступного. Перший раз попереднє число вводиться перед циклом (має бути ще один scanf), усі наступні — в циклі. В цьому ж циклі робиться перевірка, і якщо попереднє й наступне число однакові, це слід записати у ще одну додаткову змінну-результат (в якій початково лежить нуль, і записується один, коли потрібну пару чисел знайдено). Оскільки порівнювати треба не всі наступні числа з першим введеним, а пари сусідніх чисел, укінці цього ж циклу наступне число (яке при наступному проході циклу стане попереднім) копіюється в змінну, де лежить попереднє число. Після того, як цикл закінчено, виводимо «так» чи «ні» в залежності від того, яке значення лежить у змінній-результаті.

11

Re: Однакові сусідні числа

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

#include <iostream>
#include <stdio.h>
int main()
{
    setlocale(LC_CTYPE, "ukr");
    unsigned int i, n, t, a, q, Rez=0;
    printf("n=");
    scanf_s("%u", &n);
    printf("Ввести 1 число:");
    scanf_s("%lf", &a);
    for (i = 1; i <= n; i++)
    {
        printf("a%u=", i);
        scanf_s("%f", &a);
        if (a=i) Rez= ;
    }
    
}

я не розумію, що стосується тих двох змінних.. наприклад, додаю тут дві змінні q, t, але, що з ними робити далі і я не можу зрозуміти, що саме треба записати в змінну Rez

12

Re: Однакові сусідні числа

...
    unsigned int old = a; //проголошувати змінні бажано якомога ближче до першого використання, 
                                   //а імена їм варто давати змістовні. t і q - незрозуміло. old - старе значення
    for (i = 2; i <= n; i++) //1-е число ми вже ввели, тому починаємо з 2
    {
        printf("a%u=", i);
        scanf_s("%f", &a);//a тепер нове, а old - попереднє
        if (a==old) //розберіться вже, чим = відрізняється від ==
            .... //тут позначаємо, що у нас однакові значення поруч
        old = a; //тепер нове значення стає старим
    }
    

13

Re: Однакові сусідні числа

ага, дуже дякую.. це я зрозуміла, але ще таке питання.. повністю мій код так виглядає:

#include <iostream>
#include <stdio.h>
int main()
{
    unsigned int i, n, a, Rez=0;
    printf("n=");
    scanf_s("%u", &n);
    unsigned int old = a;
    for (i = 2; i <= n; i++)
    {
        printf("a%u=", i);
        scanf_s("%f", &a);
        if (a == old)
            Rez = 1;
        old = a;
    }
    printf("Результат: %u", Rez);
    getchar();
    return 0;
}

і мені здається, що проблеми тепер у самому виводі

14

Re: Однакові сусідні числа

я спробувала трішки змінити і в мене вийшло, але хочу знати, що там не так
Змінений код:

#include <iostream>
#include <stdio.h>
#include <locale>
int main()
{
    unsigned int old = 0, i, n, a, Rez = 0;
    setlocale(LC_CTYPE, "ukr");
    printf("n=");
    scanf_s("%i", &n);
    for (i = 1; i <= n; i++)
    {
        printf("a%u=", i);
        scanf_s("%i", &a);
        if (Rez != 1)
        {
            if (a == old)
                Rez = 1;
            else
                Rez = 0;
            old = a;
        }
    }
    printf("Результат: %i\n", Rez);
    system("pause");
    return 0;
}

15

Re: Однакові сусідні числа

Akos_Bond написав:

і мені здається, що проблеми тепер у самому виводі

чому вам так здається?

16

Re: Однакові сусідні числа

ааа, стоп.. я напевно зрозуміла, в першому олд значень не мало, але перевірялось з а, а якщо ми присвоїмо 0 олд, то в циклі пройде добре перевірка

17

Re: Однакові сусідні числа

koala написав:
Akos_Bond написав:

і мені здається, що проблеми тепер у самому виводі

чому вам так здається?

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

18

Re: Однакові сусідні числа

Нічого не зрозумів. Проблема в тому, що програма працює некоректно, чи в тому, що ви не розумієте, як вона працює?

19

Re: Однакові сусідні числа

проблема в тому, що програма не працює.. вибиває помилку в зборці і я не  можу зрозуміти, що там не так.. коли я спробувала переробити програму трохи легшим способом(я скидала вище), то мені пішло все на відладку без проблем

20

Re: Однакові сусідні числа

Akos_Bond написав:

вибиває помилку в зборці

Яку саме помилку? Невже про %f? Так я цей фрагмент коду у вас брав.