0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
1

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

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

Author24 — интернет-сервис помощи студентам
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 выполняется до тех пор пока условие истинно, но у меня ни разу не выполняется . В чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2009, 15:58
Ответы с готовыми решениями:

Ошибка с использованием vector< >
Ошибка в коде vector&lt;int&gt; v= {5, 7, 9, 4, 6, 8}; первую фигурную скобку подчеркивает красным и...

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

Ошибка в программе с использованием массивов
Доброго времени. Совсем не давно пользуюсь матлабом. Столкнулся с такой проблемой: задаю массив...

Ошибка с использованием QObject::connect
Написал программу, но она выдаёт ошибку из-за QObject::connect. window.h #ifndef WINDOW_H...

32
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
02.09.2009, 11:16 21
Author24 — интернет-сервис помощи студентам
Ещё один забавный способ выводить числа в двоичном виде
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
Автор FAQ
3148 / 368 / 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
Сообщений: 25
02.09.2009, 12:19  [ТС] 23
Цитата Сообщение от easybudda Посмотреть сообщение
щё один забавный способ выводить числа в двоичном виде
Да я видел разные способы перевода, просто пока для меня не очень понятно, я своими силами пытаюсь
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
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
Сообщений: 25
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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
03.09.2009, 11:12 26
Цитата Сообщение от Железо Посмотреть сообщение
хотя, маленько намудрил со степенью...
А чем функция pow из math.h не понравилась?

И с 16-ричной тоже всё давно придумано
printf("%x", int_var);
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
03.09.2009, 11:43  [ТС] 27
ну надо же разобраться как это всё придумали
0
Автор FAQ
3148 / 368 / 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
Сообщений: 25
03.09.2009, 12:59  [ТС] 29
оО я тока пока не понимаю, как функция сама в себе вызывается
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
03.09.2009, 13:05 30
Цитата Сообщение от Железо Посмотреть сообщение
оО я тока пока не понимаю, как функция сама в себе вызывается
6 постами ранее до боли похожий пример приводил. В гугле по слову "рекурсия" поищите Ну или вот для примера...
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
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
Автор FAQ
3148 / 368 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
03.09.2009, 17:05 32
Когда (x) станет равен нулю, фунция перестанет вызывать саму себя. Тогда будет происходить возврат в вызвавшую ее функцию.
ЗЫ. Почитайте про рекурсию
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
03.09.2009, 17:08  [ТС] 33
Почитал...Видно пока это еще сложно для моего переполненого мозга
Буду пытаться, всяко и разно )
0
03.09.2009, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2009, 17:08
Помогаю со студенческими работами здесь

моя ошибка с использованием jQuery UI
Ребята, всех с наступающим ! у меня такая ситуация , что я хотел создать простые окшки в вебе и...

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

В чем ошибка с использованием имени TRY?
get_post_meta( $post_id, TRY,1) В водпрессе получаю мета поле с именем TRY php начинает на это...

Ошибка с использованием нескольких Activity
Здравствуйте, недавно только начал программировать на android и столкнулся с такой проблемой -...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru