Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
#1

Ошибка с использованием while - C++

01.09.2009, 15:58. Просмотров 1679. Ответов 32
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream.h>
#include <stdio.h>
 
char f1(int x) {return (char)x;}
 
int main()
{
    
    int a;
    int b=0;
    while (b=0)
    {
    cout<<"Put a value:\n";
    cin>>a; 
    cout<<"\nb = "<<f1(a);
    cout<<"\nNext - 0,Exit - 1\n";
    cin>>b;
    cout<<"\n";
    }
    getchar();
    return 0;
}
На сколько я знаю, while выполняется до тех пор пока условие истинно, но у меня ни разу не выполняется . В чем ошибка?
http://www.cyberforum.ru/cpp-beginners/thread2214309.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 15:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка с использованием while (C++):

Что за ошибка с использованием cstdio?
Вот код: #include &lt;cstdio&gt; #include &lt;clocale&gt; using namespace std; int...

Ошибка в программе с использованием функций
#include &lt;stdio.h&gt;//подключение #include &lt;conio.h&gt;//необходимых #include...

Ошибка записи в файл с использованием ifstream
Здравствуйте! Я использую visual studio и у меня вылазит ошибка при...

Ошибка в функции, связанная с использованием памяти
Все доброго времени суток. Помогите, пожалуйста, найти ошибку в моей...

Ошибка при переборе массива с использованием указателей
Собственно сабж. Есть код int m = {4,5,46,57,35,65,35,55,45,95}; ...

32
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
02.09.2009, 11:16 #21
Ещё один забавный способ выводить числа в двоичном виде
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <limits.h>
 
#define ROW_LEN 80 /* длинна строки */
 
/* Печать десятичного числа в двоичном виде */
void dec2bin(int x){
    int i;
    for ( i = (sizeof(int) * CHAR_BIT - 1); i >= 0; i-- )
        putchar(((x & (1 << i)) != 0) + '0' );
    putchar('\n');
}
 
int main(){
    int i;
    char buf[ROW_LEN];
    
    while ( fgets(buf, ROW_LEN, stdin) )
        if ( i = atoi(buf) )
            dec2bin(i);
    
    return(0);
}
1
RNT
Автор FAQ
3138 / 358 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
02.09.2009, 12:00 #22
if (x%2)
мне вот это место не понятно, тут же еще условие должно быть, или я ошибаюсь?
В языке С++ истинным считается любое ненулевое значение.
Результат x%2 может быть либо 0 либо 1 , либо false либо true.
Ничего лишнего писать не надо.
1
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
02.09.2009, 12:19  [ТС] #23
Цитата Сообщение от easybudda Посмотреть сообщение
щё один забавный способ выводить числа в двоичном виде
Да я видел разные способы перевода, просто пока для меня не очень понятно, я своими силами пытаюсь
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
02.09.2009, 21:05 #24
Цитата Сообщение от Железо Посмотреть сообщение
Да я видел разные способы перевода, просто пока для меня не очень понятно, я своими силами пытаюсь
Про алгоритм перевода вот тут рассказывают (даже читать не прийдётся ) а вариантов море... Вот пример с рекурсией:
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
#include <stdio.h>
 
#define ROW_LEN 80 /* длинна строки */
 
/* Печать десятичного числа в двоичном виде - рекурсивная версия */
void dec2bin(int x){
    if ( x/2 )
        dec2bin(x/2);
    putchar((x % 2) + '0');
}
 
int main(){
    int i;
    char buf[ROW_LEN];
    
    while ( fgets(buf, ROW_LEN, stdin) ){
        if ( i = atoi(buf) ){
            dec2bin(i);
            putchar('\n');
        }
    }
    
    return(0);
}
Не особо корректный - не работает с отрицательными числами, но как учебный сойдёт, я думаю...
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
03.09.2009, 10:01  [ТС] #25
Ну вот вобщем, двоичная и десятичная вполне достаточно пока...

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
#include <iostream.h>
#include <stdio.h>
 
void dec2bin(int x)
{
    char pr[11]="000000000";
    for(int i = 9; x > 0 && i >= 0; i--, x /= 2)
        (x%2) ? pr[i]='1' : pr[i]='0';
    cout << pr;
}
 
int step(int osn, int pkz)
{
    int res=1;
    
    for(int i=1;i<=pkz;i++)
        res=res*osn;
    return res;
}
 
 
 
void bin2dec(int x)
{
    int res=0;
    for(int i=0;(x/10)>0;i++,x=x/10)    
    res=res+(x%10)*step(2,i);
    cout<<res+1*step(2,i);
}
 
 
 
int main()
{
    int a;
    cout<<"Put 'a'(dec) Value:\n";
    cin>>a;
    dec2bin(a);
    cout<<"\nPut 'a'(bin) Value:\n";
    cin>>a;
    bin2dec(a);
    cout<<'\n';
    cin>>a;
    return 0;
}
Сейчас буду думать с 16чной

Добавлено через 12 минут
хотя, маленько намудрил со степенью ) можно и полегчес делать:

C++
1
2
3
4
5
6
int step(int osn, int pkz)
{
    for(int res=1;pkz>0;pkz--)
        res=res*osn;
    return res;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
03.09.2009, 11:12 #26
Цитата Сообщение от Железо Посмотреть сообщение
хотя, маленько намудрил со степенью...
А чем функция pow из math.h не понравилась?

И с 16-ричной тоже всё давно придумано
printf("%x", int_var);
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
03.09.2009, 11:43  [ТС] #27
ну надо же разобраться как это всё придумали
0
RNT
Автор FAQ
3138 / 358 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
03.09.2009, 11:54 #28
Проще некуда
C++
1
2
3
4
5
6
7
8
void dec2bin(int x)
{
    if (x)
    {
        dec2bin(x/2);
        printf("%i", x%2);
    }
}
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
03.09.2009, 12:59  [ТС] #29
оО я тока пока не понимаю, как функция сама в себе вызывается
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
03.09.2009, 13:05 #30
Цитата Сообщение от Железо Посмотреть сообщение
оО я тока пока не понимаю, как функция сама в себе вызывается
6 постами ранее до боли похожий пример приводил. В гугле по слову "рекурсия" поищите Ну или вот для примера...
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
03.09.2009, 17:02  [ТС] #31
у я понял, но не всё...
Даже в этом примере я по дебагу пытался проследить, но когда происходит конец ф-ии не понял, ведь она как бы зацикливается?

Добавлено через 1 минуту
я про этот пример имел ввиду
C++
1
2
3
4
5
6
7
8
void dec2bin(int x)
{
        if (x)
        {
                dec2bin(x/2);
                printf("%i", x%2);
        }
}
0
RNT
Автор FAQ
3138 / 358 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
03.09.2009, 17:05 #32
Когда (x) станет равен нулю, фунция перестанет вызывать саму себя. Тогда будет происходить возврат в вызвавшую ее функцию.
ЗЫ. Почитайте про рекурсию
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
03.09.2009, 17:08  [ТС] #33
Почитал...Видно пока это еще сложно для моего переполненого мозга
Буду пытаться, всяко и разно )
0
03.09.2009, 17:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2009, 17:08
Привет! Вот еще темы с решениями:

В чем ошибка? программа с использованием контейнера list
/*Написать программу,моделирующую управление каталогом в файловой сис* теме....

Ошибка при использованием Шаблона структуры в классе
Добрый день. У меня возникла проблема. При использовании шаблона структуры в...

Ошибка с видимостью блока с использованием булева значения
Всем привет! Друзья, нужна помощь! Не могу сдать работу из-за ошибки. У меня...

Ошибка Undefined Reference, связанная с использованием шаблона
Здравствуйте! У меня появилась проблема. Есть три файла: main.cpp, a.h, a.cpp....


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

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

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