Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Рома123
3 / 3 / 0
Регистрация: 18.05.2010
Сообщений: 140
#1

Заполнить массив первыми 12 членами последовательности Фиббоначи. - C++

28.06.2010, 13:25. Просмотров 1044. Ответов 15
Метки нет (Все метки)

Заполнить массив первыми 12 членами последовательности Фиббоначи.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
clrscr();
    const int SIZE = 13;
    int i;
    int Array[SIZE];
    for(i =2; i < SIZE; ++i)
    {
    Array[i]=(i-1)+(i-2);
    cout << "Array[" << i << "] = " << Array[i] << endl;
    }
    return 0;
}
Ее нужно сделать с помощью указателей...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2010, 13:25     Заполнить массив первыми 12 членами последовательности Фиббоначи.
Посмотрите здесь:

C++ Заполнить массив первыми 10 членами арифметической прогрессии с известным первым членом прогрессии А и разницей Р.
Заполнить массив первыми 20 числами делящимся на 13 или 17 C++
Заполнить массив двенадцатью первыми членами последовательности Фибоначчи C++
Заполнить массив первыми N положительными нечетными числами C++
Массив. Найти, сколько членов первой последовательности совпадает с членами второй последовательности C++
Заполнить массив из двадцати элементов первыми натуральными пятизначными числами C++
C++ Заполнить одномерный массив двадцатью первыми натуральными числами, кратными 5-ти или 7-ми
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
28.06.2010, 13:34     Заполнить массив первыми 12 членами последовательности Фиббоначи. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    const int n = 12;
    int* a = new int[n];
    *a = 0, *(a+1) = 1;
    for(int *ptr = a+2; ptr < a+n; ptr++)
        *ptr = *(ptr-1) + *(ptr-2);
    for(int *ptr = a; ptr < a + n; ptr++)
        cout << *ptr << ' ';
    getch();
}
ValeryB
28.06.2010, 13:34
  #3

Не по теме:

Исправить ошыбку
Исправляю: ошибка

Рома123
3 / 3 / 0
Регистрация: 18.05.2010
Сообщений: 140
28.06.2010, 13:41  [ТС]     Заполнить массив первыми 12 членами последовательности Фиббоначи. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
        const int n = 12;
        int* a = new int[n];
        *a = 0, *(a+1) = 1;
        for(int *ptr = a+2; ptr < a+n; ptr++)
                *ptr = *(ptr-1) + *(ptr-2);
        for(int *ptr = a; ptr < a + n; ptr++)
                cout << *ptr << ' ';
        getch();
}
Не компилится, ругается на "ptr" =(
easybudda
Эксперт С++
9454 / 5467 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
28.06.2010, 13:44     Заполнить массив первыми 12 членами последовательности Фиббоначи. #5
Рома123, просто из любопытства: а с какой целью два первых элемента в массиве пропускаются?
Рома123
3 / 3 / 0
Регистрация: 18.05.2010
Сообщений: 140
28.06.2010, 13:47  [ТС]     Заполнить массив первыми 12 членами последовательности Фиббоначи. #6
Цитата Сообщение от easybudda Посмотреть сообщение
Рома123, просто из любопытства: а с какой целью два первых элемента в массиве пропускаются?
Ну это последовательность Фиббоначи, т.е. его елемент, это сума двох предыдущих елементов
Crudelis
Шаровик затейник
670 / 412 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
28.06.2010, 13:47     Заполнить массив первыми 12 членами последовательности Фиббоначи. #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
clrscr();
        const int SIZE = 13;
        int i;
        int Array[SIZE];
        int *pArray=Array;
        for(i =2; i < SIZE; ++i)
        {
        *(pArray+i)=(i-1)+(i-2);
        cout << "Array[" << i << "] = " << *(pArray+i)<< endl;
        }
        return 0;
}
Рома123
3 / 3 / 0
Регистрация: 18.05.2010
Сообщений: 140
28.06.2010, 13:53  [ТС]     Заполнить массив первыми 12 членами последовательности Фиббоначи. #8
Цитата Сообщение от Crudelis Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
clrscr();
        const int SIZE = 13;
        int i;
        int Array[SIZE];
        int *pArray=Array;
        for(i =2; i < SIZE; ++i)
        {
        *(pArray+i)=(i-1)+(i-2);
        cout << "Array[" << i << "] = " << *(pArray+i)<< endl;
        }
        return 0;
}
Последовательность Фиббоначи выводится неверно: 1 3 5 7 9 11 13 15 17 19 21
А должно быть:1 1 2 3 5 8 13 21 34 55 89 144
Crudelis
Шаровик затейник
670 / 412 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
28.06.2010, 13:56     Заполнить массив первыми 12 членами последовательности Фиббоначи. #9
Рома123, вы написали в самом верху программу и попросили переделать её с помощью указателей, что я и сделал

Добавлено через 1 минуту
тогда может
for(i =0; i < SIZE; ++i)
Рома123
3 / 3 / 0
Регистрация: 18.05.2010
Сообщений: 140
28.06.2010, 16:44  [ТС]     Заполнить массив первыми 12 членами последовательности Фиббоначи. #10
Цитата Сообщение от Crudelis Посмотреть сообщение
Рома123, вы написали в самом верху программу и попросили переделать её с помощью указателей, что я и сделал

Добавлено через 1 минуту
тогда может
for(i =0; i < SIZE; ++i)
Нет, так тоже неполучается, выходит:-3 -1 1 3 5 7 9 11 13 15 17 19 21

Добавлено через 2 часа 3 минуты
на правах UP'a
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
28.06.2010, 16:58     Заполнить массив первыми 12 членами последовательности Фиббоначи. #11
Такой вариант пойдет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
int main(){
        const int SIZE=15;
        int MAS[SIZE];
        int *first=MAS;
        //
        *first=1;
        *(first+1)=1;
        //
        for (int i=2; i<SIZE; i++)
            *(first+i)=*(first+i-1) + *(first+i-2);
 
        std::cout << "Rezult: ";
        for (int i=0; i<SIZE; i++)
            std::cout << *(first+i) << " ";
        std::cout << std::endl;
 
        system ("pause");
        return 0;
}
Результат: http://codepad.org/DTqOuw0j
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
28.06.2010, 21:23     Заполнить массив первыми 12 членами последовательности Фиббоначи. #12
А так правильно (только здесь без динамического выделения памяти)???

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main()
{
    const int n=13;
    int mass[n]={0,1,2,3,4,5,6,7,8,9,10,11,12};
    int mfib[13];
    for(int j=0, i=2; j<n, i<n; j++, i++)
    {mfib[j]=mass[i-2]+mass[i-1];}
    for(int i=0; i<11; i++)
    {cout<<mfib[i]<<"  ";}
}
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,841
28.06.2010, 21:26     Заполнить массив первыми 12 членами последовательности Фиббоначи. #13
Сказано же, с помощью указателей ..
easybudda
Эксперт С++
9454 / 5467 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
28.06.2010, 21:40     Заполнить массив первыми 12 членами последовательности Фиббоначи. #14
если я всё правильно понял, первые два элемента уже должны иметь какие-то значения...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
#define SIZE 13
 
int main(void){
    int arr[SIZE] = { 0, 1 }, * p;
    
    for ( p = arr + 2; p < arr + SIZE; ++p )
        *p = *(p - 1) + *(p - 2);
    
    for ( p = arr; p < arr + SIZE; ++p )
        printf("%d ", *p);
    printf("\n");
    
    return 0;
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
28.06.2010, 21:47     Заполнить массив первыми 12 членами последовательности Фиббоначи. #15
Цитата Сообщение от easybudda Посмотреть сообщение
первые два элемента уже должны иметь какие-то значения...
зачем? по заданию вроде первыми 12 числами последовательности
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2010, 21:51     Заполнить массив первыми 12 членами последовательности Фиббоначи.
Еще ссылки по теме:

Заполнить массив членами натурального ряда пока их произведение не станет больше заданного C++
Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300 C++
C++ Заполнить массив десятью первыми членами геометрической прогрессии
Заполнить массив, членами натурального ряда, кратным трем. Найти сумму элементов массива и их число. C++
C++ Заполнить массив десятью первыми простыми числами

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9454 / 5467 / 926
Регистрация: 25.07.2009
Сообщений: 10,490
28.06.2010, 21:51     Заполнить массив первыми 12 членами последовательности Фиббоначи. #16
Цитата Сообщение от fasked Посмотреть сообщение
зачем?
ну, если очередное число - это сумма двух предыдущих, то первые-то два откуда-то взять нужно, не?
Yandex
Объявления
28.06.2010, 21:51     Заполнить массив первыми 12 членами последовательности Фиббоначи.
Ответ Создать тему
Опции темы

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