1

Тема: Допоможіть розв'язати задачу на Сі.

Потрібно створити одновимірний цілочисловий масив, у який занести всі трицифрові числа Фібоначчі. Надрукувати цей масив і вказати, чи потрапило число,задане користувачем в даний масив.
Ось пробував зробити код. Але чомусь не виводить перші два числа( 1 1). Як вивести лише трицифрові числа?

#include <stdio.h>
#include <stdlib.h>
#define N 16

int main()
{
    int  i;
    int arr[N];
    arr[0] = arr[1] = 1;
    for (i = 2; i < N; i++) {
     arr[i] = arr[i - 1] + arr[i - 2];
     printf("%d\n", arr[i]);
    }
    return 0;
}

2

Re: Допоможіть розв'язати задачу на Сі.

for (i = 2;

3

Re: Допоможіть розв'язати задачу на Сі.

for (i = 2;

Не розумію що ви маєте на увазі. Якщо змінити for (i = 1; , то виводить сміття

4

Re: Допоможіть розв'язати задачу на Сі.

думай

5

Re: Допоможіть розв'язати задачу на Сі.

як воно має вивести ті два перших числа, якщо ви записали їх в

arr[0] та arr[1]

а коли виводите їх значення використовуючи i

printf("%d\n", arr[i]);

то з самого початку робите, щоб те i було 2 ?

i = 2

, звісно, ви ніколи не побачите

arr[0] та arr[1]

, бо воно почне показувати значення починаючи з

arr[2]

ганьба!

6

Re: Допоможіть розв'язати задачу на Сі.

Даруйте, але не розумію взагалі що не так

#include <stdio.h>
#include <stdlib.h>
#define N 16

int main()
{
    int  i;
    int arr[N];
    for (i = 0; i < N; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];
        printf("%d\n", arr[i]);
    }
    return 0;
}

7

Re: Допоможіть розв'язати задачу на Сі.

при i = 0, i-1 чому буде дорівнювати? чи є такий елемент в масиві?

8

Re: Допоможіть розв'язати задачу на Сі.

Щось ось таке вийшло

#include <stdio.h>
#include <stdlib.h>
#define N 15

int main()
{
    int  i;
    int arr[N];
    arr[0] = arr[1] = 1;
    i = 0;
    while ( i < N) {
        i++;
        if (i<2)
       printf("%d\n", arr[i]);
        
        else arr[i] = arr[i - 1] + arr[i - 2];
        printf("%d\n", arr[i]);
    }
    getchar();
}

9

Re: Допоможіть розв'язати задачу на Сі.

*FACEPALM*

 printf("%d\n", arr[i]);
        
        else arr[i] = arr[i - 1] + arr[i - 2];
        printf("%d\n", arr[i]);

10

Re: Допоможіть розв'язати задачу на Сі.

Підкажіть що не так, будь ласка

ur_naz написав:

*FACEPALM*

 printf("%d\n", arr[i]);
        
        else arr[i] = arr[i - 1] + arr[i - 2];
        printf("%d\n", arr[i]);

11 Востаннє редагувалося lucas-kane (24.01.2021 21:36:52)

Re: Допоможіть розв'язати задачу на Сі.

SiriusBlack написав:

Потрібно створити одновимірний цілочисловий масив, у який занести всі трицифрові числа Фібоначчі.
Надрукувати цей масив і вказати, чи потрапило число, задане користувачем в даний масив.

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

Ось пробував зробити код.
Але чомусь не виводить перші два числа(1 1). Як вивести лише трицифрові числа?

#include <stdio.h>
#include <stdlib.h>

#define N 16

int main()
{
    int  i;
    int arr[N];
    arr[0] = arr[1] = 1;
    for (i = 2; i < N; i++) {
     arr[i] = arr[i - 1] + arr[i - 2];
     printf("%d\n", arr[i]);
    }
    return 0;
}

Ви вирішуєте проблему, але не читаєте умови задачі! Дивно.
Для розв'язку перечитайте, ще раз завдання. Незрозуміло! Тоді ще раз читаємо. І так доти поки не дійде )) Напевне.

Отже, щоб вирішити задачу, Вам потрібно розбити її на менші підзадачі:
1. Для початку розібратись, що таке числа Фібоначчі та реалізувати підпрограму, яка буде проходити по цій послідовності;
2. Рухаючись по цій послідовності потрібно вибрати із неї всі трицифрові числа та записати їх в окремий масив;
3. Вивести повідомлення, коли при порівнювані числа користувача із елементами масиву є збіги;
4. Надрукувати цей масив.

P.S. Не потрібно кожного разу коли Вам задають в універів завдання створювати гілку на форумі типу "Розв'яжіть завдання".
Переписуючи Ви ніколи не навчитесь програмувати. Саме це Ви говорили минулого посту: Що ви Аж дуже хочете програмувати.

12

Re: Допоможіть розв'язати задачу на Сі.

Так краще?

#include <stdio.h>
#include <stdlib.h>
#define N 16

int main() {

    int arr[N];

    arr[0] = 1;
    arr[1] = 1;


    for (int i = 2; i < N; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }

    for (int i = 0; i < N; i++) {
        printf("%d\n", arr[i]);
    }
}

13

Re: Допоможіть розв'язати задачу на Сі.

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

Так краще?

#include <stdio.h>
#include <stdlib.h>
#define N 16

int main() {

    int arr[N];

    arr[0] = 1;
    arr[1] = 1;


    for (int i = 2; i < N; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }

    for (int i = 0; i < N; i++) {
        printf("%d\n", arr[i]);
    }
}

Перший пункт виконано. Робіть далі. Тільки в масив Вам потрібно заносити не всю послідовність Фібоначчі а трицифрові числа цієї послідовності.

14

Re: Допоможіть розв'язати задачу на Сі.

#include <stdio.h>
#include <stdlib.h>
#define N 20

int main() {

    int arr[N], x;
    system("chcp 1251");
    printf("Введіть ціле число:");
    scanf_s("%d", &x);
    arr[0] = 1;
    arr[1] = 1;


    for (int i = 2; i < N; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];
    }
    printf("Масив:\n");
    for (int i = 0; i < N; i++) {
        if (arr[i] >= 100 && arr[i] <= 999)
            printf("%d\n", arr[i]);
    }
}
   

Не знаю як останній пункт реалізувати

15

Re: Допоможіть розв'язати задачу на Сі.

Прихований текст
#include <stdio.h>

int main()
{
    int a[5] = {0}; // Масив для зберігання трицифрових чисел послідовності
    int f0, f1, F;

    f0 = 0;
    f1 = 1;

    size_t i, it;
    for (it = 0, i = 0; it < 20; ++it)
    {
        // тут знаходимо послідовність Фібоначчі...
        F = f0 + f1,
        f0 = f1,
        f1 = F;

        // ... та запам'ятовуємо лише числа із 3-ма цифрами...
        if (F >= 100 && F <= 999)
            a[i] = F, i++;
    }

    int x = 233; // Число введене користувачем ...

    for (i = 0; i < 5; ++i)
    {
        printf("a[%d] - %d: ", (i + 1), a[i]); // А тут друкуємо масив...
        if (a[i] == x)                         // ... перевіряємо на збіг...
            printf("Є збіг!");
        printf("\n");
    }

    return 0;
}

Ви не уважно читаєте умову. Масив має містити лише трицифрові числа послідовності... Не всю послідовність. А довжина числа елемента послідовності має бути лише 3 цифри... Їх є всього п'ять елементів https://oeis.org/A000045

16

Re: Допоможіть розв'язати задачу на Сі.

Ну мені  виводить тільки трицифрові числа від 144 до 987

17

Re: Допоможіть розв'язати задачу на Сі.

SiriusBlack написав:

Ну мені  виводить тільки трицифрові числа від 144 до 987

Ну що я можу сказати. Прочитай ще раз умову задачі. Зайди на початок теми і прочитай своє перше повідомлення.

18

Re: Допоможіть розв'язати задачу на Сі.

lucas-kane написав:

Ну що я можу сказати. Прочитай ще раз умову задачі. Зайди на початок теми і прочитай своє перше повідомлення.

А щось не так?

19

Re: Допоможіть розв'язати задачу на Сі.

SiriusBlack написав:

масив, у який занести всі трицифрові числа Фібоначчі. Надрукувати
не виводить перші два числа( 1 1)

Число 1 - не трицифрове.

20

Re: Допоможіть розв'язати задачу на Сі.

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

масив, у який занести всі трицифрові числа Фібоначчі. Надрукувати
не виводить перші два числа( 1 1)

Число 1 - не трицифрове.

Прошу вибачення, це було для початкової програми. Робив спочатку просто для чисел Фібоначчі. А вже потім для трицифрових.