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

Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
Filipo4ka
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 9
31.03.2014, 20:10     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #1
Дорогие программисты, помогите мне с такой вот задачкой, никак не могу решить.Написать на с++

вычислить сумму всех чисел фибоначчи которые не превосходят 1000
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 20:10     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000
Посмотрите здесь:

Квадратная матрица: Вычислить сумму элементов, расположенных на главной диагонали и выше, которые превосходят все элементы C++
C++ Вычислить N первых чисел Фибоначчи, которые определяются из рекуррентных соотношений:
Вычислить сумму всех чисел Фибоначчи, которые не превосходят 100 C++
Вычислить сумму всех чисел Фибоначи, которые не превосходят 100. C++
C++ Вычислить сумму тех из m элементов, которые превосходят по величине все элементы, расположенные ниже главной диагонали
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
31.03.2014, 20:30     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот, возникнуть вопросы - спрашивайте.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main() {
    int last = 0, next = 1;
    unsigned long sum = 1;
    
    for(int i = 0; i < 1000; ++i){
        next += last;
        last = next - last;
        sum += next;
    }
    std::cout << sum;
    return 0;
}


Добавлено через 1 минуту
Упс, неправильно условия прочитал. Сейчас исправлю

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main() {
    int last = 0, next = 1;
    long sum = 1;
    
    for(; next < 1000; next += last){
        last = next - last;
        sum += next;
    }
    std::cout << sum;
    return 0;
}
Вот
Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
31.03.2014, 20:41     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #3
Лаконичней
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
 
int blocRec(int n)
{
    if(n<=1)
        return 1;
    return blocRec(n-1) + blocRec(n-2);
}
 
int main()
{
    printf("%d\n",blocRec(17));
    getch();
    return 0;
}
Добавлено через 2 минуты
ну может кому рекурсионный вариант нужен будет
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,352
31.03.2014, 21:09     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #4
Ezembi, MastAKK, а почему так много получается? Вроде, лишняя итерация у вас. В задании указано
Цитата Сообщение от Filipo4ka Посмотреть сообщение
сумму всех чисел фибоначчи которые не превосходят 1000
Последние числа фибоначчи - это 610 и 987. Как из их суммы может получиться 2584 ? Или я неверно понял задание?

Добавлено через 2 минуты

Не по теме:

видимо, неверно..

Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
31.03.2014, 21:10     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #5
Цитата Сообщение от KOPOJI Посмотреть сообщение
987
Ок, исправился =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <conio.h>
 
int blocRec(int n)
{
    if(n<=1)
        return 1;
    return blocRec(n-1) + blocRec(n-2);
}
 
int main()
{
    printf("%d\n",blocRec(15));
    getch();
    return 0;
}
Filipo4ka
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 9
31.03.2014, 21:11  [ТС]     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #6
я не знаю, то есть не так??а как тогда верно будет?
KOPOJI
31.03.2014, 21:15
  #7

Не по теме:

а, не, все верно, я неправильно понял задание))

Ezembi
 Аватар для Ezembi
100 / 87 / 3
Регистрация: 29.05.2013
Сообщений: 227
31.03.2014, 21:16     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #8
Цитата Сообщение от KOPOJI Посмотреть сообщение
Последние числа фибоначчи - это 610 и 987. Как из их суммы может получиться 2584 ? Или я неверно понял задание?
Да вроде норм =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
 
int blocRec(int n)
{
    if(n<=1)
        return 1;
    return blocRec(n-1) + blocRec(n-2);
}
 
int main()
{
    int sum = 0;
    for(int i=0;blocRec(i)<1000;i++)
    {
        printf("%d\n",blocRec(i));
        sum+=blocRec(i);
    }
    printf("sum = %d\n",sum);
    getch();
    return 0;
}
Изображения
 
KOPOJI
31.03.2014, 21:17
  #9

Не по теме:

Ну да, я об этом уже написал выше..

Filipo4ka
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 9
31.03.2014, 21:19  [ТС]     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #10
хорошо, а как теперь эту задачку оформить с использованием функций. Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,352
31.03.2014, 21:22     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #11
Filipo4ka, это одно задание или несколько?

Добавлено через 37 секунд
Цитата Сообщение от Filipo4ka Посмотреть сообщение
а как теперь
вы уверены, что названия функций - капсом?
Catstail
Модератор
 Аватар для Catstail
21496 / 10249 / 1669
Регистрация: 12.02.2012
Сообщений: 17,138
31.03.2014, 21:26     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #12
Хотя для чисел, не превышающих 1000 это не столь и важно, но алгоритм Ezembi нерационален, поскольку происходит многократное перевычисление одного и того же... Вот так менее наглядно, но быстрее:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
 
long int SumFib(long int z, long int c=1, long int p=1, long int s=2)
{
    if (c > z)
        return s;
    else
        return SumFib(z, c+p,c, s+c);
}
 
int main(int argc, char* argv[])
{
    cout << SumFib(1000) << endl;
    return 0;
}
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,352
31.03.2014, 21:36     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #13
Только неправильно изначальная сумма задана. Ну и, else, также как и явное указание long int, имхо, лишнее
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
 
long SumFib(long z, long c=1, long p=1, long s=1)
{
    if (c > z)
        return s;
    return SumFib(z, c+p,c, s+c);
}
 
int main(int argc, char *argv[])
{
    std::cout << SumFib(1000) << std::endl;
    return 0;
}
Filipo4ka
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 9
31.03.2014, 21:39  [ТС]     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
 
long SumFib(long z, long c=1, long p=1, long s=1)
{
    if (c > z)
        return s;
    return SumFib(z, c+p,c, s+c);
}
 
int main(int argc, char* argv[])
{
    std::cout << SumFib(1000) << std::endl;
    return 0;
}
эта задача через функцию да??то есть удовлетворяет это условие?

оформить с использованием функций. Нахождение основных значений оформить через функцию RESHENIE(), ввод данных и вывод на печать через функцию MAIN()
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,352
31.03.2014, 21:44     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #15
Да почти все примеры в теме через отдельную функцию. Только, еще раз, вы уверены насчет капса названий функций? Если вы переименуете main в MAIN, то будет не очень хорошо.....
Filipo4ka
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 9
31.03.2014, 22:10  [ТС]     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #16
да тут большими буквами написано в условии

Добавлено через 5 минут
Числа Фибоначчи определяются формулами: F0=F1=1, FN=FN-1+FN-2; При N=2,3…
Найти F- первое число Фибоначчи, больше M(M>1).

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 <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
 
int a=1, b=1, c=1;
int M; 
cout<<"Input M (M>1):";
cin>>M;
if( !cin || M<=1)
{
cout<<"error1: Input M (M>1)"<<endl;
system("pause");
return 1;
}
cout<<c<<" "; // для наглядности - выводим первую единицу
do 
{ 
c=a+b;
a=b;
b=c;
// для наглядности - выводим очередное число
cout<<c<<" ";
} while( c <= M);
 
cout<<"\n res = "<<c<<endl;
system("pause");
return 0;
}
проверте пожалуйста правильность решения этой задачки ещё
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
31.03.2014, 22:34     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #17

Не по теме:

Filipo4ka, отступы! Не забывайте отступы! Вам же легче будет



Добавлено через 1 минуту
Filipo4ka, вроде правильно работает.
Catstail
Модератор
 Аватар для Catstail
21496 / 10249 / 1669
Регистрация: 12.02.2012
Сообщений: 17,138
01.04.2014, 12:32     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #18
Цитата Сообщение от KOPOJI Посмотреть сообщение
Ну и, else, также
- если уж на то пошло, то вот так:

C
1
return  (c > z)?s:SumFib(z, c+p,c, s+c)
KOPOJI
Модератор
 Аватар для KOPOJI
16242 / 6453 / 390
Регистрация: 12.06.2012
Сообщений: 19,352
01.04.2014, 20:22     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #19
Цитата Сообщение от Catstail Посмотреть сообщение
если уж на то пошло
возможно, но не всем нравится использовать тернарный оператор. А почему считаю else лишним - потому что в случае выполнения условия в if выход из функции и так будет осуществлен через return, а следующее выражение будет вычисляться только в случае ложности первого условия..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 21:01     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000
Еще ссылки по теме:

C++ Вычислить сумму всех чисел Фибоначчи не превышающих N
Вычислить сумму чисел Фибоначчи не превышающих N C++
Вычислить сумму всех четных чисел от 2 до 1000 C++

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21496 / 10249 / 1669
Регистрация: 12.02.2012
Сообщений: 17,138
01.04.2014, 21:01     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000 #20
Цитата Сообщение от KOPOJI Посмотреть сообщение
А почему считаю else лишним
- да я и не спорю... Действительно лишний
Yandex
Объявления
01.04.2014, 21:01     Вычислить сумму всех чисел Фибоначчи, которые не превосходят 1000
Ответ Создать тему
Опции темы

Текущее время: 17:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru