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

Задача о лестнице - C++

Восстановить пароль Регистрация
 
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
23.11.2011, 12:03     Задача о лестнице #1
Задача

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
using namespace std;
 
int rez(int n){
if(n == 1)
return 1;
else
return  rez(n / 2) + 1;
}
 
int main()
{
 
ifstream cin("INPUT.TXT");
ofstream cout("OUTPUT.TXT");
int n;
cin>>n;
cout<<rez(n);
return 0;
}
Что не так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
23.11.2011, 12:20     Задача о лестнице #2
Функция подсчета (вместо вашей "rez"):

C++
1
2
3
4
5
6
7
8
9
10
11
12
int result(int count)
{
    int i = 0;
 
    for ( ; count > 0; ++i, count -= i)
    {
         if (count < (i+1))
             break;
    }
 
    return i;
}
P.S. Функцию не проверял, так как под рукой нету компилятора, но вроде должно работать!
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
23.11.2011, 12:23  [ТС]     Задача о лестнице #3
absokolov, спасибо, все правильно! А как будет через рекурсию?
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
23.11.2011, 21:40     Задача о лестнице #4
Ч-з рекурсию что-то вроде этого!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int result(int count)
{
    static int i = 0;
 
    if (count >= (i+1))
    {
         ++i;
         count -= i;
         int next = result(count);
 
         return next < 0 ? i : next;
    }
    else
      return -1;
}
Опять же набросок, с первого раза может и не заработать
Yandex
Объявления
23.11.2011, 21:40     Задача о лестнице
Ответ Создать тему
Опции темы

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