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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 15:58     Ошибка с использованием while #1
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 выполняется до тех пор пока условие истинно, но у меня ни разу не выполняется . В чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 15:58     Ошибка с использованием while
Посмотрите здесь:

C++ Что за ошибка с использованием cstdio?
C++ Ошибка записи в файл с использованием ifstream
C++ Выполнить задания с использованием инструкции выбора if и с использованием условного оператора
Реализую класс очередь с использованием двух стеков.ошибка итератор dequee is not dereferanceble C++
C++ Ошибка в программе с использованием функций
C++ Ошибка в функции, связанная с использованием памяти
C++ В чем ошибка? программа с использованием контейнера list
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
02.09.2009, 11:16     Ошибка с использованием while #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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
02.09.2009, 12:00     Ошибка с использованием while #22
if (x%2)
мне вот это место не понятно, тут же еще условие должно быть, или я ошибаюсь?
В языке С++ истинным считается любое ненулевое значение.
Результат x%2 может быть либо 0 либо 1 , либо false либо true.
Ничего лишнего писать не надо.
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
02.09.2009, 12:19  [ТС]     Ошибка с использованием while #23
Цитата Сообщение от easybudda Посмотреть сообщение
щё один забавный способ выводить числа в двоичном виде
Да я видел разные способы перевода, просто пока для меня не очень понятно, я своими силами пытаюсь
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
02.09.2009, 21:05     Ошибка с использованием while #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
Регистрация: 24.08.2009
Сообщений: 15
03.09.2009, 10:01  [ТС]     Ошибка с использованием while #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;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
03.09.2009, 11:12     Ошибка с использованием while #26
Цитата Сообщение от Железо Посмотреть сообщение
хотя, маленько намудрил со степенью...
А чем функция pow из math.h не понравилась?

И с 16-ричной тоже всё давно придумано
printf("%x", int_var);
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
03.09.2009, 11:43  [ТС]     Ошибка с использованием while #27
ну надо же разобраться как это всё придумали
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
03.09.2009, 11:54     Ошибка с использованием while #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
Регистрация: 24.08.2009
Сообщений: 15
03.09.2009, 12:59  [ТС]     Ошибка с использованием while #29
оО я тока пока не понимаю, как функция сама в себе вызывается
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
03.09.2009, 13:05     Ошибка с использованием while #30
Цитата Сообщение от Железо Посмотреть сообщение
оО я тока пока не понимаю, как функция сама в себе вызывается
6 постами ранее до боли похожий пример приводил. В гугле по слову "рекурсия" поищите Ну или вот для примера...
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
03.09.2009, 17:02  [ТС]     Ошибка с использованием while #31
у я понял, но не всё...
Даже в этом примере я по дебагу пытался проследить, но когда происходит конец ф-ии не понял, ведь она как бы зацикливается?

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

Программа с использованием функций и ошибка [BCC32 Error] File1.c(2): E2293 ) expected C++
C++ Удаление комментариев из текста программы с использованием STL, ошибка при выполнении
C++ Ошибка при переборе массива с использованием указателей
C++ Ошибка при создании функции с использованием Args&
C++ Ошибка с видимостью блока с использованием булева значения

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

Или воспользуйтесь поиском по форуму:
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
03.09.2009, 17:08  [ТС]     Ошибка с использованием while #33
Почитал...Видно пока это еще сложно для моего переполненого мозга
Буду пытаться, всяко и разно )
Yandex
Объявления
03.09.2009, 17:08     Ошибка с использованием while
Ответ Создать тему
Опции темы

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