Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
1

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

01.09.2009, 15:58. Показов 3785. Ответов 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
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 16:00 2
в условии два знака = должно быть
1
692 / 383 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
01.09.2009, 16:01 3
C++
1
 while (b==0)
1
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 16:06  [ТС] 4
Мда, глупо и просто, как всегда ) Спасибо большое!
ps: думал переделать int в char, но получилось представление в анси, как я понял
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 20:10  [ТС] 5
А в чем ошибка такого кода? Я конечно догадываюсь в чем, но всё же...

C++
1
2
3
4
5
6
7
8
9
10
char dec2bin(int x)
{
char pr=' ';
    while (x>0)
    {
    pr='x%2'+pr;
    x=x-x%2;
    }
return pr;
}
Добавлено через 8 минут
опятьс условием ошибся?)
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 20:12 6
Цитата Сообщение от Железо Посмотреть сообщение
опятьс условием ошибся?)
Нет. Ошибка в другом, и компилятор должен был сказать в чем.
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 20:13  [ТС] 7
ошибок нет, компилится нормально
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 20:16 8
Код
warning: multi-character character constant
Это про 'x%2'. Нельзя в одинарных кавычках писать больше дного символа.
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 20:18  [ТС] 9
видимо в vs 6 можно ) ну значит таким образом я ф-ию не реализую
0
Автор FAQ
3148 / 368 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 20:18 10
Если char должен хранить больше одного символа , то надо объявить массив char или указатель на char
C++
1
2
3
char pr[64]; 
или
char *pr;
Если использовать указатель на char то надо выделять память при помощи new
1
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 21:01  [ТС] 11
Спасибо, пока думаю над массивом

Добавлено через 38 минут
А как можно присвоить char'у значение выражения? Ну на подобии
C++
1
pr[i]=""+x%2+"";
пока пытаюсь найти ответ сам
0
Автор FAQ
3148 / 368 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 21:09 12
Цитата Сообщение от Железо Посмотреть сообщение
pr[i]=""+x%2+"";
Неправильно , вы присваиваете одному элементу массива сразу несколько символов
Попробуйте так
C++
1
2
3
4
5
pr=""+x%2+"";
или так
*pr=""+x%2+""; //Если это указатель
или так
strcpy(pr, ""+x%2+"");
1
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 21:46  [ТС] 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dec2bin(int x)
{
char pr[40];
//int i=1;
pr=" "; 
while (x>0)
    {pr=""+x%2+""+pr;
    x=x-x%2;
    //++i;
    }
    //pr[i]=NULL;
cout<<pr;
}
вот такая фигня ругается сильно

Добавлено через 25 минут
ну вот с этим вроде меньше, но есть пару ошибочек:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dec2bin(int x)
{
char pr[40];
//int i=1;
pr=" "; 
while (x>0)
    {strcpy(pr, ""+x%2+pr+"");;
    x=x-x%2;
    //++i;
    }
    //pr[i]=NULL;
cout<<pr;
}
'=' : cannot convert from 'char [2]' to 'char [40]';
cannot add two pointers;
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.09.2009, 22:02 14
Цитата Сообщение от Железо Посмотреть сообщение
""+x%2+pr+""
нельзя складывать символы. это вам не строки (string). Для конкатенации используется strcat()

для конвертации int в char* нужно использовать sprintf
1
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
01.09.2009, 22:12  [ТС] 15
Буду разбираться, спасибо
0
Автор FAQ
3148 / 368 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 22:35 16
Щас написал , нерационально , зато работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void dec2bin(int x)
{
    char pr[11]="000000000";
    int i=9;
    while ((x>0) && (x!=0))
    {
        if (x%2)
            pr[i]='1';
        else
            pr[i]='0';
        x=x/2;
        i--;
    }
    cout << pr;
}
 
void main(int argc, char *argv[])
{
    int a;
    cin >> a;
    dec2bin(a);
    cin >> a;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12464 / 7487 / 1756
Регистрация: 25.07.2009
Сообщений: 13,773
02.09.2009, 10:26 17
Цитата Сообщение от RNT Посмотреть сообщение
while ((x>0) && (x!=0))
Если х больше нуля, наверное х не равен нулю. С какой целью два условия?
0
Автор FAQ
3148 / 368 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
02.09.2009, 10:30 18
while ((x>0) && (x!=0))
Ошибочка , так правильнее:
C++
1
while ((x>0) && (i>=0))
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
02.09.2009, 10:43 19
Код
void dec2bin(int x)
{
        char pr[11]="000000000";
        int i=9;
        while ((x>0) && (x!=0))
        {
                if (x%2)
                        pr[i]='1';
                else
                        pr[i]='0';
                x=x/2;
                i--;
        }
        cout << pr;
}
Можно еще сократить
C++
1
2
3
4
5
6
7
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;
}
0
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 25
02.09.2009, 10:57  [ТС] 20
Цитата Сообщение от RNT Посмотреть сообщение
if (x%2)
мне вот это место не понятно, тут же еще условие должно быть, или я ошибаюсь?
Допустим
C++
1
if (x%2==1)
Добавлено через 1 минуту
А так вроде хорошо придумано, есть, так сказать, над чем думать
0
02.09.2009, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2009, 10:57
Помогаю со студенческими работами здесь

моя ошибка с использованием 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 и столкнулся с такой проблемой -...


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

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