Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
kuwmen
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 23
1

Помогите в написании программы(массив)

23.10.2011, 15:33. Просмотров 418. Ответов 4
Метки нет (Все метки)

Дан массив целых чисел. Вывести те из них, индексы которых являются числами Фибоначчи.

В си совсем новичок. Сам пытался разобраться, гуглил. Не получилось. Прошу помощи у вас.
Для справки числа Фибоначчи вычисляются по формуле F1 =1, F2 = 1, F3=F2+F1 и тд


Имеется код программы для вывода первых N чисел фибоначчи, если потребуется.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
 
void main()
{
    int fib1 = 0, fib2 = 1, fib=0, n, i;
 
 
    printf("Vvedite chislo\n ");
    scanf("%d", &n);
 
    fib = 1;
 
    for (i = 1; i <= n; i++)
    {
        fib = fib2 + fib1;
        fib2 = fib1;
        fib1 = fib;
 
        printf("%d  ", fib);
    }
 
    getch();
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2011, 15:33
Ответы с готовыми решениями:

написании программы мини программы
Люди плиз кто понимает в си. Через 3 часа контрольная 1 курс. Помогите плиз. Скинь свою ссылку вк....

Ошибка при написании программы
Код на скриншоте.

Трудности при написании программы
Здравствуйте. Разбирал циклы for, while и do while, принцип их работы я понял, но меня поставила в...

Помогите в написании программы (C++)
За каждый ход генерируется случай n-ое число от 0 до 6 (моделируется выпадание игрального кубика)....

При написании программы выходит ошибка, помогите разобраться
При написании программы выходит ошибка, помогите разобраться в ней Error using inline/subsref...

4
Thinker
Эксперт С++
4238 / 2212 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2011, 16:36 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 100
 
void PrintFib(int *a, int n)
{
    int buf, i, j;
    printf("a[%d] = %d\n", 1, a[1]);
    i = 1; j = 2;
    while (j < n)
    {
       printf("a[%d] = %d\n", j, a[j]);
       buf = i + j; i = j; j = buf;
    }
}
 
int main( )
{
    int a[N], i;
    srand(time(NULL));
    for (i = 0; i < N; i++)
       printf("%d ", a[i] = rand()%100);
    puts("\n");
    PrintFib(a, N);
    getch();
    return 0;
}
2
kuwmen
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 23
23.10.2011, 18:33  [ТС] 3
Цитата Сообщение от Thinker Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 100
 
void PrintFib(int *a, int n)
{
    int buf, i, j;
    printf("a[%d] = %d\n", 1, a[1]);
    i = 1; j = 2;
    while (j < n)
    {
       printf("a[%d] = %d\n", j, a[j]);
       buf = i + j; i = j; j = buf;
    }
}
 
int main( )
{
    int a[N], i;
    srand(time(NULL));
    for (i = 0; i < N; i++)
       printf("%d ", a[i] = rand()%100);
    puts("\n");
    PrintFib(a, N);
    getch();
    return 0;
}

Спасибо большое, почти всё работает, но.
1) Программа правильно выводит числа, порядковый номер которых является числом фибоначчи, но т.к. фиб1=фиб2 должно выводиться первое и второе число массива и далее по писку, но начинает выводить со второго. Подскажи как исправить?
0
Thinker
Эксперт С++
4238 / 2212 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.10.2011, 19:03 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 100
 
void PrintFib(int *a, int n)
{
    int buf, i, j;
    printf("a[%d] = %d\n", 0, a[0]);
    printf("a[%d] = %d\n", 1, a[1]);
    i = 1; j = 2;
    while (j < n)
    {
       printf("a[%d] = %d\n", j, a[j]);
       buf = i + j; i = j; j = buf;
    }
}
 
int main( )
{
    int a[N], i;
    srand(time(NULL));
    for (i = 0; i < N; i++)
       printf("%d ", a[i] = rand()%100);
    puts("\n");
    PrintFib(a, N);
    getch();
    return 0;
}
2
kuwmen
0 / 0 / 1
Регистрация: 23.10.2011
Сообщений: 23
23.10.2011, 19:28  [ТС] 5
Цитата Сообщение от Thinker Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define N 100
 
void PrintFib(int *a, int n)
{
    int buf, i, j;
    printf("a[%d] = %d\n", 0, a[0]);
    printf("a[%d] = %d\n", 1, a[1]);
    i = 1; j = 2;
    while (j < n)
    {
       printf("a[%d] = %d\n", j, a[j]);
       buf = i + j; i = j; j = buf;
    }
}
 
int main( )
{
    int a[N], i;
    srand(time(NULL));
    for (i = 0; i < N; i++)
       printf("%d ", a[i] = rand()%100);
    puts("\n");
    PrintFib(a, N);
    getch();
    return 0;
}
Всё отлично, спасибо
0
23.10.2011, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2011, 19:28

Ребят помогите в написании
Составить программу, которая формирует одномерный массив из средних арифметических элементов каждой...

Помогите в написании функции
Такой вид она имеет в DELPHI: ------------------------------- Function a_b:boolean; var...

Помогите в написании макроса сверки и заполнения
Макрос должен сверять две таблицы по одному одном столбцу, если во второй таблице нет такого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru