Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
#1

Написал программу которая показывает числа из ряда Фибоначчи - C++

15.07.2013, 19:41. Просмотров 710. Ответов 11
Метки нет (Все метки)

Вот написал программу которая...Ай, мне сложновато объяснить, напишу сразу алгоритм её действия:
1.Пользователь вводит номер числа из ряда Фибоначчи.
2.Программа делает некоторые вычисления
3.Выводит запрашиваемое число пользователю

Вот так вот
Но я столкнулся с ошибкой при компилировании, смысл которой от меня немного ускальзывает.
ПОтом я её исправил, появилась другая ошибка...
Не подскажете, в чём тут проблема?
А то я не могу понять
Вот код:

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
31
32
33
34
35
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
bool int fibon_elem( int pos, int &elem) {
    if ( pos <= 0 || pos > 1024)
    { elem = 0; return false; }
    int elem = 1; // ÕðГ*Г*ГЁГІ âîçâðГ*Г№Г*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ
    int n_2 = 1, n_1 = 1; // Äëÿ õðГ*Г*ГҐГ*ГЁГї äâóõ ïðåäûäóùèõ Г§Г*Г*Г·ГҐГ*ГЁГ©
    for ( int ix = 3; ix <= pos; ++ix) 
    {
        elem = n_2 + n_1;
        n_2 = n_1;n_1 = elem;
    }
    return true;
    }
 
bool fibon_elem( int, int& );
 
int main()
{
    int pos;
    cout << "Please, enter the item number: ";
    cin >> pos;
    int elem;
    if ( fibon_elem( pos, elem)) {
        cout << "The value of the element # " << pos << " equally " << elem << endl;
        }
    else {
        cout << "Sorry, I can not calculate the value of # " << pos << endl;
        }
    system("pause");
    return 0;
}
P.S. Заголовок (название) темы неправильно написал наверное, ну ладно, всё равно
http://www.cyberforum.ru/cpp-beginners/thread1193980.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 19:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Написал программу которая показывает числа из ряда Фибоначчи (C++):

Рекурсия в нахождении числа ряда Фибоначчи.
Лаба: написать программу, находящуую заданный элемент ряда Фибоначчи. Написал:...

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

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

Составьте программу, позволяющую найти все числа Фибоначчи, меньшие заданного числа N
Помогите, пожалуйста. Вот сама задача: Пара кроликов каждый месяц дает...

Написать рекурсивную функцию вычисления числа из ряда Фибоначчи, номер которого вводится с клавиатуры
2. Написать рекурсивную функцию вычисления числа из ряда Фибоначчи, номер...

11
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 19:48 #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
30
31
32
#include <iostream>
 
using namespace std;
bool fibon_elem( int pos, int &elem) {
    if ( pos <= 0 || pos > 1024)
    { elem = 0; return false; }
    int n_2 = 1, n_1 = 1; // Для хранения двух предыдущих значений
    for ( int ix = 3; ix <= pos; ++ix) 
    {
        elem = n_2 + n_1;
        n_2 = n_1;n_1 = elem;
    }
    return true;
    }
 
 
 
int main()
{
    int pos;
    cout << "Please, enter the item number: ";
    cin >> pos;
    int elem;
    if ( fibon_elem( pos, elem)) {
        cout << "The value of the element # " << pos << " equally " << elem << endl;
        }
    else {
        cout << "Sorry, I can not calculate the value of # " << pos << endl;
        }
    system("pause");
    return 0;
}
1
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.07.2013, 19:48 #3
по-твоему мы должны скопировать код - открыть компилятор - скомпилировать - найти и исправить ошибку? а самому выложить текст ошибки сюда, рука отвалится?
1
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
15.07.2013, 19:50  [ТС] #4
Цитата Сообщение от Jupiter Посмотреть сообщение
по-твоему мы должны скопировать код - открыть компилятор - скомпилировать - найти и исправить ошибку? а самому выложить текст ошибки рука отвалится?
Извините пожалуйста, впредь буду выкладывать код ошибки
Вот:

C++
1
2
3
4
6 D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp extraneous `int' ignored
D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp In function `bool fibon_elem(int, int&)':
9 D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp declaration of 'int elem' shadows a parameter
D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\Makefile.win [Build Error]  [Objects/MingW/main.o] Error 1
P.S. Путь к самой проге криво скопировался, ну это уже такое дело)
0
Art
153 / 153 / 56
Регистрация: 20.12.2011
Сообщений: 1,545
Завершенные тесты: 2
15.07.2013, 19:52 #5
Как минимум проблема в этом:
C++
1
bool fibon_elem( int, int& );
C++
1
2
3
bool int fibon_elem( int pos, int &elem) {
//...
}
Наверно нужно вот так:
C++
1
2
3
bool fibon_elem( int pos, int &elem) {
//...
}
и вот тут у вас уже определена переменная elem(как входной параметр функции), тут:
C++
1
int elem = 1; // Хранит возвращаемое значение
вы ее снова определяете
1
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 19:52 #6
Jupiter, мне настолько было нечего делать, что я именно это и сделал. Только ответ все равно неверный выводит в некоторых случаях. Но не переписывать же за автора все..
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
15.07.2013, 19:52 #7
Цитата Сообщение от Даниил1991 Посмотреть сообщение
C++
1
bool int fibon_elem( int pos, int &elem) {
Уж выберете, какой тип возвращаемого значения, int или bool. Ваш компилятор выбирает bool)
1
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
15.07.2013, 19:52  [ТС] #8
Цитата Сообщение от Discoverer Посмотреть сообщение
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
31
32
#include <iostream>
 
using namespace std;
bool fibon_elem( int pos, int &elem) {
    if ( pos <= 0 || pos > 1024)
    { elem = 0; return false; }
    int n_2 = 1, n_1 = 1; // Для хранения двух предыдущих значений
    for ( int ix = 3; ix <= pos; ++ix) 
    {
        elem = n_2 + n_1;
        n_2 = n_1;n_1 = elem;
    }
    return true;
    }
 
 
 
int main()
{
    int pos;
    cout << "Please, enter the item number: ";
    cin >> pos;
    int elem;
    if ( fibon_elem( pos, elem)) {
        cout << "The value of the element # " << pos << " equally " << elem << endl;
        }
    else {
        cout << "Sorry, I can not calculate the value of # " << pos << endl;
        }
    system("pause");
    return 0;
}
Спасибо, а что, как я понял, вы удалили только одну строку:

C++
1
int elem = 1;
??

Можете пожалуйста объяснить, почему из-за этой строки вся программа пошел под откос?
0
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
15.07.2013, 19:56 #9
Даниил1991, нельзя переопределять параметры функции.
0
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
15.07.2013, 20:09  [ТС] #10
Цитата Сообщение от Discoverer Посмотреть сообщение
Даниил1991, нельзя переопределять параметры функции.
Т.е. строка
C++
1
int elem = 1;
Была лишней, так как она переопределяет функцию, и нужно было выбрать какой-то конкретный тип функции, bool или int? (это я понял благодаря Art'у)
Если да, то в будущем не буду повторять такие ошибки))
Хорошо хоть что вы мне на них указали, а то так я их вряд ли ещё повторю, а так то писал бы всегда таким образом
Сказал как-то непонятно, ай, забейте)
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
15.07.2013, 20:13 #11
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Была лишней, так как она переопределяет функцию, и нужно было выбрать какой-то конкретный тип функции, bool или int?
Один параметр ф-ии имеет имя elem, потом уже в теле ф-ии создаётся переменная с таким же именем, которая "перекрывает" параметр
Цитата Сообщение от Даниил1991 Посмотреть сообщение
9 D:\DEV\Находит число из ряда Фибоначчи\main.cpp declaration of 'int elem' shadows a parameter
1
Даниил
68 / 41 / 1
Регистрация: 14.05.2013
Сообщений: 383
15.07.2013, 20:38  [ТС] #12
Скажите пожалуйста, как реализовать такую штуку, чтоб после того как программа определит число, то выбивало "Continue?(y/n)" и если юзер введёт y то продолжается всё, а если n то программа закрывается

Написал такое:

C++
1
2
3
4
5
6
7
8
9
    cout << "Continue?(y/n)" << endl;
    char yn[1];
    cin >> yn;
    if (yn == 'y') {
        fibon_elem = true;
        }
    else {
            exit ( -1 );
        }
Но, как ни странно, не работает Ошибка:
C++
1
2
3
4
33 D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp ISO C++ forbids comparison between pointer and integer
34 D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp assignment of function `bool fibon_elem(int, int&)'
34 D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\main.cpp cannot convert `bool' to `bool ()(int, int&)' in assignment
D:\DEV\ГЌГ*õîäèò ÷èñëî ГЁГ§ ðÿäГ* ÔèáîГ*Г*Г·Г·ГЁ\Makefile.win [Build Error]  [Objects/MingW/main.o] Error 1
Вы уж все извините меня за мои ламерские вопросы, но я надеюсь что вы понимаете что я новичёк)А новичку помочь - святое дело))

Добавлено через 9 минут
Всем спасибо, я это уже решил)
Если кому интересно:

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
31
32
33
34
35
36
37
38
39
#include <iostream>
 
using namespace std;
bool fibon_elem( int pos, int &elem) {
    if ( pos <= 0 || pos > 1024)
    { elem = 0; return false; }
    int n_2 = 1, n_1 = 1; // Äëÿ õðГ*Г*ГҐГ*ГЁГї äâóõ ïðåäûäóùèõ Г§Г*Г*Г·ГҐГ*ГЁГ©
    for ( int ix = 3; ix <= pos; ++ix) 
    {
        elem = n_2 + n_1;
        n_2 = n_1;n_1 = elem;
    }
    return true;
    }
 
 
 
int main()
{
    bool done;
    do {
    int pos;
    cout << "Please, enter the item number: ";
    cin >> pos;
    int elem;
    if ( fibon_elem( pos, elem)) {
        cout << "The value of the element # " << pos << " equally " << elem << endl;
        }
    else {
        cout << "Sorry, I can not calculate the value of # " << pos << endl;
        }
    cout << "Continue? (y/n)";
    char c;
    cin >> c;
    done = (c != 'y');
}while (!done);
    system("pause");
    return 0;
}
Повторюсь - всем спасибо за то что помогли решить проблему
0
15.07.2013, 20:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2013, 20:38
Привет! Вот еще темы с решениями:

Написал програмку ,но она не всё показывает,в чем ошибка помогите
#include &quot;iostream&quot; #include &quot;float.h&quot; #include &quot;math.h&quot; #include &quot;stdafx.h&quot;...

Сделать функцию, которая по порядковому номеру числа Фибоначчи возвращает его значение
Сделать функцию, которая по порядковому номеру числа Фибоначчи возвращает его...

Составить программу вычисления числового ряда для известного числа членов ряда N
Пожалуйста, как на C++ выполнить это задание, много времени потратил и все...

Составить программу, которая находит n-е число Фибоначчи. Использовать в задаче рекурсивную функцию


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

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

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