Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
#1

Как оптимизировать код?

28.08.2013, 18:18. Просмотров 557. Ответов 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
int fib(int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int countFib;
    ifstream in("INPUT.TXT");
    in >> countFib;
    ofstream out("OUTPUT.TXT");
 
    for (int i = 0; i < countFib; i++)
    {
        
        if (i % 10 == 0 && i > 0)
            cout << endl;
        fib(i);
        if(fib(i)==countFib){
            out << '1' << '\n' << i+1;
            break;}
        else {
            if(i==countFib-1){
            ifstream po("OUTPUT.TXT");
            int z;
            po >> z;
            if(z==1 || z=='\0') break;
            else {
             out << '0';
             break;
            }
            }
        
        }
        
}
 
    cout << endl;
    system("pause");
    return 0;
}
 
 
int fib(int n)          //функция возвращает n-ое число Фибоначчи
{
     if (n == 0)
         return 0;
     if (n == 1) 
         return 1;
     else return fib(n - 1) + fib(n - 2);
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 18:18
Ответы с готовыми решениями:

Как оптимизировать код
Доброй ночи господа у меня к вам такая просьба как можно упростить данный код?...

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

Как оптимизировать код, со множеством операторов if?
Можно ли сделать так, чтобы проверка обрабатывалась только тогда, когда нужно...

Как можно оптимизировать данный код?
И... Ещё один вопрос: Дан участок кода С++: #include &lt;iostream&gt;...

Можно как-то оптимизировать этот код?
#include &lt;iostream&gt; using namespace std; int main() { unsigned int num,...

9
ValeryS
Модератор
7169 / 5436 / 674
Регистрация: 14.02.2011
Сообщений: 18,366
28.08.2013, 18:26 #2
Цитата Сообщение от Toshik_ Посмотреть сообщение
fib(i);
* * * * if(fib(i)==countFib)
два раза вызываешь функцию зачем?
Цитата Сообщение от Toshik_ Посмотреть сообщение
for (int i = 0; i < countFib; i++)
* * {
if (i % 10 == 0 && i > 0)
остаток от деления дорогого стоит
введи еще одну переменную
например так
C++
1
2
3
4
5
6
7
8
9
10
int tmp=10;
for (int i = 0; i < countFib; i++)
{
   if (!tmp)
    {
     cout << endl;
    tmp=10;
    }
   else
     tmp--;
0
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
28.08.2013, 18:36  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
два раза вызываешь функцию зачем?
остаток от деления дорогого стоит
введи еще одну переменную
например так
C++
1
2
3
4
5
6
7
8
9
10
int tmp=10;
for (int i = 0; i < countFib; i++)
{
   if (!tmp)
    {
     cout << endl;
    tmp=10;
    }
   else
     tmp--;
Дело в том что если ввести число Фибоначи тогда быстро выполняется программа, а так она зависает...
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
28.08.2013, 18:45 #4
Сохранять промежуточное значение вычислений, а не вычислять элемент последовательности заново.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class FibonacciSequence {
 public:
  FibonacciSequence(long long first, long long second) : first(first), second(second) {}
  long long advance() {
    second = first + second;
    first = second - first;
    return first;
  }
 private:
  long long first, second;
};
 
int main(int, char**) {
  FibonacciSequence s(0, 1);
  int count = 55;
  for (int i = 0; i < count; ++i) {
    std::cout << s.advance() << std::endl;
  }
}
0
OhMyGodSoLong
~ Эврика! ~
1245 / 994 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
28.08.2013, 20:48 #5
Зачем вообще что-то вычислять? Чисел Фибоначчи, меньших 264, всего 94 штуки.
1
salam
175 / 156 / 29
Регистрация: 10.07.2012
Сообщений: 766
28.08.2013, 21:21 #6
что эта чудесная программа должна делать?
1
zer0mail
2451 / 2085 / 216
Регистрация: 03.07.2012
Сообщений: 7,569
Записей в блоге: 1
28.08.2013, 21:42 #7
Цитата Сообщение от salam Посмотреть сообщение
что эта чудесная программа должна делать?
Во-о-о-т (наконец-то), с этого ТС следовало начинать!
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
29.08.2013, 17:41 #8
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Зачем вообще что-то вычислять? Чисел Фибоначчи, меньших 264, всего 94 штуки.
Согласен. Самый быстрый способ - lookup table.
0
ValeryS
29.08.2013, 18:05
  #9

Не по теме:

Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Чисел Фибоначчи, меньших 2 64, всего 94 штуки.
интересно предыстория этого вопроса
исследовалось увеличение популяции кроликов, если учесть что через месяц они начинают спариваться и через месяц рождают еще одну пару

получается что меньше чем восемь лет кроликов будет больше чем 264 пар (это же ужас), что Австралия и получила:)

0
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
29.08.2013, 18:19 #10
Замени рекурсию на цикл с сохранением предыдущих чисел. Тогда тебе не надо будет постоянно пересчитывать заново.
0
29.08.2013, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 18:19

Как оптимизировать данный код игры крестики нолики?
Привет всем! Я написал консольную игру &quot;Крестики нолики&quot;. Хочу посоветоваться...

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

Оптимизировать код
Первое число входного потока - количество чисел Дальше идут те самые числа...


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

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

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