Форум программистов, компьютерный форум 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 16:00     Ошибка с использованием while #2
в условии два знака = должно быть
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
01.09.2009, 16:01     Ошибка с использованием while #3
C++
1
 while (b==0)
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 16:06  [ТС]     Ошибка с использованием while #4
Мда, глупо и просто, как всегда ) Спасибо большое!
ps: думал переделать int в char, но получилось представление в анси, как я понял
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 20:10  [ТС]     Ошибка с использованием while #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 минут
опятьс условием ошибся?)
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 20:12     Ошибка с использованием while #6
Цитата Сообщение от Железо Посмотреть сообщение
опятьс условием ошибся?)
Нет. Ошибка в другом, и компилятор должен был сказать в чем.
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 20:13  [ТС]     Ошибка с использованием while #7
ошибок нет, компилится нормально
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 20:16     Ошибка с использованием while #8
Код
warning: multi-character character constant
Это про 'x%2'. Нельзя в одинарных кавычках писать больше дного символа.
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 20:18  [ТС]     Ошибка с использованием while #9
видимо в vs 6 можно ) ну значит таким образом я ф-ию не реализую
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 20:18     Ошибка с использованием while #10
Если char должен хранить больше одного символа , то надо объявить массив char или указатель на char
C++
1
2
3
char pr[64]; 
или
char *pr;
Если использовать указатель на char то надо выделять память при помощи new
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 21:01  [ТС]     Ошибка с использованием while #11
Спасибо, пока думаю над массивом

Добавлено через 38 минут
А как можно присвоить char'у значение выражения? Ну на подобии
C++
1
pr[i]=""+x%2+"";
пока пытаюсь найти ответ сам
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 21:09     Ошибка с использованием while #12
Цитата Сообщение от Железо Посмотреть сообщение
pr[i]=""+x%2+"";
Неправильно , вы присваиваете одному элементу массива сразу несколько символов
Попробуйте так
C++
1
2
3
4
5
pr=""+x%2+"";
или так
*pr=""+x%2+""; //Если это указатель
или так
strcpy(pr, ""+x%2+"");
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 21:46  [ТС]     Ошибка с использованием while #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;
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.09.2009, 22:02     Ошибка с использованием while #14
Цитата Сообщение от Железо Посмотреть сообщение
""+x%2+pr+""
нельзя складывать символы. это вам не строки (string). Для конкатенации используется strcat()

для конвертации int в char* нужно использовать sprintf
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
01.09.2009, 22:12  [ТС]     Ошибка с использованием while #15
Буду разбираться, спасибо
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
01.09.2009, 22:35     Ошибка с использованием while #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;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
02.09.2009, 10:26     Ошибка с использованием while #17
Цитата Сообщение от RNT Посмотреть сообщение
while ((x>0) && (x!=0))
Если х больше нуля, наверное х не равен нулю. С какой целью два условия?
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
02.09.2009, 10:30     Ошибка с использованием while #18
while ((x>0) && (x!=0))
Ошибочка , так правильнее:
C++
1
while ((x>0) && (i>=0))
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.09.2009, 10:43     Ошибка с использованием while #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2009, 10:57     Ошибка с использованием while
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Железо
0 / 0 / 0
Регистрация: 24.08.2009
Сообщений: 15
02.09.2009, 10:57  [ТС]     Ошибка с использованием while #20
Цитата Сообщение от RNT Посмотреть сообщение
if (x%2)
мне вот это место не понятно, тут же еще условие должно быть, или я ошибаюсь?
Допустим
C++
1
if (x%2==1)
Добавлено через 1 минуту
А так вроде хорошо придумано, есть, так сказать, над чем думать
Yandex
Объявления
02.09.2009, 10:57     Ошибка с использованием while
Ответ Создать тему
Опции темы

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