0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 15
1

Не могу найти ошибку в коде

15.10.2018, 09:13. Показов 1684. Ответов 8
Метки нет (Все метки)

Данный код должен выводить данное пользователем количество чисел Фибоначчи(каждое следующее число равно сумме двух предыдущих), но выводит больше чисел, чем надо. Уже час пытаюсь решить проблему. Помогите, я никак не могу найти ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    int k,v,p,m,c;
    cout<<"Введите количество выводимых чисел Фибоначчи: ";
    cin>>k;
    v=1;
    p=1;
    cout<<""<<v<<" ";
    cout<<""<<p<<" ";
    for(m=2;m<=k;m++){
        v+=p;
        cout<<""<<v<<" ";
        p+=v;
        cout<<""<<p<<" ";
    }
    cin>>c;
    return 0;
}
Миниатюры
Не могу найти ошибку в коде  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2018, 09:13
Ответы с готовыми решениями:

Не могу найти ошибку в коде
Здравствуйте еще раз! У меня возникла проблема: В написанном мною коде какая то ошибка, которую ни...

Не могу найти ошибку в коде
Игра &quot;БлэкДжек&quot; Ошибка - &quot;Прекращена работ программы&quot;. С чем это связано - не могу понять... ...

Не могу найти ошибку в коде
Доброго времени суток. Не могу найти ошибку в коде. Задача: Периодическая функция F(x) определена...

не могу найти ошибку в коде
f(x)=(ax^2+3)\ (sin(пиX\6)) на интервале , дельтаХ=3, указав значения аргумента, при которых...

8
WebDeveloper
107 / 106 / 4
Регистрация: 02.02.2011
Сообщений: 1,798
15.10.2018, 09:26 2
попробуйте вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    int k,v,p,m,c;
    cout<<"Введите количество выводимых чисел Фибоначчи: ";
    cin>>k;
    v=1;
    p=1;
    cout<<""<<v<<" ";
    cout<<""<<p<<" ";
    for(m=2;m<k;m++){
        v+=p;
        cout<<""<<v<<" ";
        p+=v;
        cout<<""<<p<<" ";
    }
    cin>>c;
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 15
15.10.2018, 11:31  [ТС] 3
К сожалению это не помогло.
0
Модератор
Эксперт С++
12067 / 9752 / 5896
Регистрация: 18.12.2011
Сообщений: 26,177
15.10.2018, 11:39 4
У Вас в каждой итерации выводится по 2 числа,
с-но надо цикл сделать в 2 раза короче
0
0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 15
15.10.2018, 17:28  [ТС] 5
Понял, а это ограничение языка такое?
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 467
15.10.2018, 18:15 6
Цитата Сообщение от BarBoss356 Посмотреть сообщение
Понял, а это ограничение языка такое?
какое же это ограничение, это ваша логическая ошибка. А вот правильно работающий вариант https://ideone.com/jlG0Kx

Добавлено через 26 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    int k,v,p,m,c;
    cout<<"Введите количество выводимых чисел Фибоначчи: ";
    cin>>k;
    v=1;
    p=1;
    cout<<""<<v<<" ";
    cout<<""<<p<<" ";
    for(m=(k-2)/2;m;m--){
        v+=p;
        cout<<""<<v<<" ";
        p+=v;
        cout<<""<<p<<" ";
    }
    //cin>>c;
    return 0;
}
0
Параллельный Кот
1904 / 826 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
15.10.2018, 18:49 7
Лучший ответ Сообщение было отмечено BarBoss356 как решение

Решение

Цитата Сообщение от Pashka Durov Посмотреть сообщение
А вот правильно работающий вариант https://ideone.com/jlG0Kx
Нет, не правильно. При вводе нечетного количества будет работать не так, как задумано.

Добавлено через 7 минут
Вроде бы работает. Проверяйте, разбирайтесь.
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 <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    int k,v,p,m,c;
    cout<<"Введите количество выводимых чисел Фибоначчи: ";
    cin>>k;
    v=1;
    p=1;
 
    if (k >= 1) {
        cout<<""<<v<<" ";
    }
 
    if (k >= 2) {
        cout<<""<<p<<" ";
    }
 
    if (k >= 3) {
        for(m = 2; m < k; m++){
            v += p;
            p = v - p;
            cout << "" << v << " ";
        }
    }
//    cin>>c;
    return 0;
}
1
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 467
15.10.2018, 19:04 8
Лучший ответ Сообщение было отмечено BarBoss356 как решение

Решение

Цитата Сообщение от valen10 Посмотреть сообщение
Нет, не правильно. При вводе нечетного количества будет работать не так, как задумано.
Сделал костыль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
    int k,v,p,m,c;
    cout<<"Введите количество выводимых чисел Фибоначчи: ";
    cin>>k;
    v=1;
    p=1;
    cout<<""<<v<<" ";
    cout<<""<<p<<" ";
    for(m=(k-2)/2;m;m--){
        v+=p;
        cout<<""<<v<<" ";
        p+=v;
        cout<<""<<p<<" ";
    }
    if(k%2) cout<< (v+=p);
    //cin>>c;
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.10.2018
Сообщений: 15
15.10.2018, 19:19  [ТС] 9
Спасибо, всё заработало, пошел анализировать код)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2018, 19:19
Помогаю со студенческими работами здесь

Не могу найти ошибку в коде
Задание такое: в текстовом файле находятся данные про радиусы основ и высот 15 конусов. Нужно...

не могу найти ошибку в коде
Вроде всё уже сделал и начал радоваться как тут заметил неладное. Суть задание написать программу...

Не могу найти ошибку в коде. С++
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;cstdlib&gt; #include &lt;sstream&gt; using namespace...

Не могу найти ошибку в коде
Работаю со связанным списком. нужно удалить из него указанный элемент. Вот код функции удаления:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru