Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 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
EnzoMatrix
120 / 120 / 14
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 16:00 #2
в условии два знака = должно быть
1
FunDuck
688 / 379 / 51
Регистрация: 22.01.2009
Сообщений: 1,135
01.09.2009, 16:01 #3
C++
1
 while (b==0)
1
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
01.09.2009, 16:06  [ТС] #4
Мда, глупо и просто, как всегда ) Спасибо большое!
ps: думал переделать int в char, но получилось представление в анси, как я понял
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
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
Gravity
569 / 563 / 64
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 20:12 #6
Цитата Сообщение от Железо Посмотреть сообщение
опятьс условием ошибся?)
Нет. Ошибка в другом, и компилятор должен был сказать в чем.
0
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 23
01.09.2009, 20:13  [ТС] #7
ошибок нет, компилится нормально
0
Gravity
569 / 563 / 64
Регистрация: 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
Сообщений: 23
01.09.2009, 20:18  [ТС] #9
видимо в vs 6 можно ) ну значит таким образом я ф-ию не реализую
0
RNT
Автор FAQ
3138 / 358 / 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
Сообщений: 23
01.09.2009, 21:01  [ТС] #11
Спасибо, пока думаю над массивом

Добавлено через 38 минут
А как можно присвоить char'у значение выражения? Ну на подобии
C++
1
pr[i]=""+x%2+"";
пока пытаюсь найти ответ сам
0
RNT
Автор FAQ
3138 / 358 / 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
Сообщений: 23
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
Monte-Cristo
2794 / 1380 / 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
Сообщений: 23
01.09.2009, 22:12  [ТС] #15
Буду разбираться, спасибо
0
RNT
Автор FAQ
3138 / 358 / 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
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
02.09.2009, 10:26 #17
Цитата Сообщение от RNT Посмотреть сообщение
while ((x>0) && (x!=0))
Если х больше нуля, наверное х не равен нулю. С какой целью два условия?
0
RNT
Автор FAQ
3138 / 358 / 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
Gravity
569 / 563 / 64
Регистрация: 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
Сообщений: 23
02.09.2009, 10:57  [ТС] #20
Цитата Сообщение от RNT Посмотреть сообщение
if (x%2)
мне вот это место не понятно, тут же еще условие должно быть, или я ошибаюсь?
Допустим
C++
1
if (x%2==1)
Добавлено через 1 минуту
А так вроде хорошо придумано, есть, так сказать, над чем думать
0
02.09.2009, 10:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2009, 10:57
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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