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

Цикл - C++

Восстановить пароль Регистрация
 
tegos-29
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 6
08.08.2012, 18:17     Цикл #1
Начал изучать C++ неделю назад. Теперь начал решать некоторые задачи. И возникли у меня некоторые сложности с циклами... Требуется ваша помощь...

Задача:
Переведите натуральное число из двоичной системы в десятичную (в двоичном числе не более 10 цифр).

Решение:
C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int a;
    cin >> a;
    int d, b;
    int sum = 0;
    int i = 0;
    int k = 1;
    
    do
    {
            d = a % 10;
            b = a / 10;
            k = k * i;
            sum = sum + d * (2 * k);
            i ++;
    }
    while(0 <= b)
    
    cout << sum;
    
    return 0;
}
Где у меня ошибка??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2012, 18:17     Цикл
Посмотрите здесь:

Цикл с параметром и цикл с условием C++
Цикл while (на С) C++
C++ Цикл for/Цикл while Помогите срочно пожалуйста...
C++ Цикл while
C++ Изменить цикл for на цикл do-while
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.08.2012, 18:20     Цикл #2
Цитата Сообщение от tegos-29 Посмотреть сообщение
у меня некоторые сложности с циклами
какие?
кстати,неправильно вы переводите из одной системы в другую,в интернете,да и на этом форуме есть примеры,поищите и разберитесь
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.08.2012, 19:08     Цикл #3
Где у меня ошибка??
Поставьте ; после while(). Выход из while() у вас по значению b. В цикле b = a / 10. a в цикле не меняется, значит и b не изменится. Бесконечный цикл.
tegos-29
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 6
08.08.2012, 19:20  [ТС]     Цикл #4
alsav22, Спасибо... исправил... но всё равно "ошибка компиляции"
исправил на это:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int a, d;
    
    cin >> a;
 
    int sum = 0;
    int  k  = 1;
    int  i  = 0;
    
        do
        {
            d = a % 10;
            a = a / 10;
            k = k * i;
            sum = sum + a * (2 * k);
            i ++;
            if (k == 0)
            {
                    k = 1;
            }
        }   
        while(0 <= a)
        
    cout << sum;
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.08.2012, 19:21     Цикл #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Поставьте ; после while().
Не вижу. 21 строку завершите ;
tegos-29
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 6
08.08.2012, 19:24  [ТС]     Цикл #6
alsav22, поставил.. всё ок... спасибо..
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.08.2012, 19:31     Цикл #7
Цитата Сообщение от tegos-29 Посмотреть сообщение
alsav22, поставил.. всё ок... спасибо..
Код всё равно не рабочий. Бесконечный цикл. При делении на 10, значение a становится равным 0 и дальше не изменяется, а значит и выхода из while() нет. Прислушайтесь к совету alexey31415.
tegos-29
0 / 0 / 0
Регистрация: 02.08.2012
Сообщений: 6
08.08.2012, 19:35  [ТС]     Цикл #8
alsav22, если а становится 0, то он выйдет из цикла так как я указал while(0 <= a); Не так ли?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.08.2012, 19:49     Цикл #9
Цитата Сообщение от tegos-29 Посмотреть сообщение
Не так ли?
Не так. Это: 0 <= a - условие продолжения цикла. Если значение этого выражения true, то цикл будет продолжаться. При a равном 0, значение выражения 0 <= a, true.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 23:20     Цикл
Еще ссылки по теме:

C++ Цикл: цикл for вообще никак не воспринимается транслятором
C++ Почему цикл на при 1 уходит в бесконечный цикл?
Задание на цикл с параметром и цикл с постусловием C++

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

Или воспользуйтесь поиском по форуму:
zuzman322
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
08.08.2012, 23:20     Цикл #10
вот вроде рабочий код :
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
#include <iostream>
#include <locale>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE,"russian");
    int i=0,a,b=0;
    bool c[10];
    cout<<"÷èñëî  : ";
    cin>>a;
    while(a!=0)
    {
               if(a%2==0)
               c[i]=0;
               else 
               c[i]=1;
               i=i+1;
               b=b+1;
               a=a/2;
               }
    cout<<"Гў äâîè÷Г*îé ñèñòåìå : ";
    for (int j=b-1;j>=0;j--)
    cout<<c[j];
    cout<<endl;
    system("pause");
    }
Yandex
Объявления
08.08.2012, 23:20     Цикл
Ответ Создать тему
Опции темы

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