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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
01.04.2011, 20:15     Время выполнения программы увеличивается, если добавить проверку #1
я написал программу на перебор цикла из массива. И время её выполнения в данном примере занимает 5секунд, однако, если добавить 15 строку время увеличивается до 30 секунд. Вопрос почему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
   system("PAUSE");
    const int k=10;
   int mass[k];long long int r=-11,v=100000000; int s=0;
   for( int i =0;i<10;i++)mass[i]=0;
    do{
             mass[k-1]++;
             s=0;
        while(mass[k-s-1]==10){mass[k-s-1]=0;s++;mass[k-s-1]++;}
        r++;
           // if(r%v==0)cout<<r<<endl;
}
while(mass[0]!=1);cout <<r<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 20:15     Время выполнения программы увеличивается, если добавить проверку
Посмотрите здесь:

C++ Определить время выполнения программы
Определить время выполнения программы C++
C++ Определить время выполнения программы
C++ Добавить код во время выполнения программы
C++ Ошибка во время выполнения программы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
01.04.2011, 21:35     Время выполнения программы увеличивается, если добавить проверку #2
Цитата Сообщение от Ravik Посмотреть сообщение
cout<<r<<endl;
это занимает довольно много времени
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
01.04.2011, 22:28  [ТС]     Время выполнения программы увеличивается, если добавить проверку #3
не согласен, ну да ладно время вроде сам примерно понял)
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
01.04.2011, 22:34     Время выполнения программы увеличивается, если добавить проверку #4
деление не самая быстрая операция + вывод в поток
оптимизация очень интересная тема

Добавлено через 2 минуты
Со скобками ничего не напутано?
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
01.04.2011, 22:37  [ТС]     Время выполнения программы увеличивается, если добавить проверку #5
нет вроде, а в каком месте вы предполагаете ошибку?
вообще этот код должен был бы участвовать в возведение числе в степени 500 знаков, тысяча и так далее, но чувствую с таким кодом это займет месяц, можете что-нибудь посоветовать?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
01.04.2011, 22:46     Время выполнения программы увеличивается, если добавить проверку #6
в 9 строке нет скобки
Цитата Сообщение от Ravik Посмотреть сообщение
for( int i =0;i<10;i++)mass[i]=0;
в 10 и 13 скобки Do While
в 16 должно быть закрывающая для Main
в 20 ?????
или я не увидел где то открывающую???

Не понял что во что возводим
Большое число в степень в какую
или число в большую степень?
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
01.04.2011, 22:49  [ТС]     Время выполнения программы увеличивается, если добавить проверку #7
в 9 строке я обнуляю массив(на всякий случай)
10 и 16 do while
а в 13 просто while с открытием и закрытием


возводим маленькое число в большую степень
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
01.04.2011, 22:49     Время выполнения программы увеличивается, если добавить проверку #8
и как ты собираешься записать число в 500 знаков
максимум который я знаю 2^64 намного меньше
дубль 10 в 308 по моему
свой класс создавать надо
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
01.04.2011, 22:49     Время выполнения программы увеличивается, если добавить проверку #9
Цитата Сообщение от ValeryS Посмотреть сообщение
в 9 строке нет скобки


или я не увидел где то открывающую???
В 13-й скобки вложеного while
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
01.04.2011, 22:52  [ТС]     Время выполнения программы увеличивается, если добавить проверку #10
используя обысный массив в "много элементов"
т.к. 2^5000 меньше чем 10^5000 можно с "небольшим" зазором взять массив в 5к элементов

Добавлено через 54 секунды
я нубь( классы изучить толком не могу
кроме как пользовательского типа в нем счастья не вижу((((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2011, 22:59     Время выполнения программы увеличивается, если добавить проверку
Еще ссылки по теме:

Посчитать время выполнения программы C++
OpenMP. Время выполнения программы увеличивается с количеством потоков C++
C++ Ошибка во время выполнения программы

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
01.04.2011, 22:59     Время выполнения программы увеличивается, если добавить проверку #11
Цитата Сообщение от Ravik Посмотреть сообщение
а в 13 просто while с открытием и закрытием
Не заметил
mass[k]
это и есть большое число результат???

Добавлено через 5 минут
В классах много пользы
все промежуточные вычисления можно спрятать чтоб снаружи не видно
переопределить операторы чтоб не мучатся (*/+-=)
возведение в степень это многократное умножение
реализуй быстрое умножение
например умножение на степень 2 сдвиг(обычно компилятор сам заменяет)
умножить 2^32 это переписать из одной ячейки в другую(левую)
Yandex
Объявления
01.04.2011, 22:59     Время выполнения программы увеличивается, если добавить проверку
Ответ Создать тему
Опции темы

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