С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
stalex
4 / 4 / 0
Регистрация: 08.09.2009
Сообщений: 90
#1

условие с char - C++

06.01.2012, 11:44. Просмотров 2267. Ответов 15
Метки нет (Все метки)

если введен символ а должна выводиться одна строка, если введен символ в должна выводиться другая строка, у меня выводится все в любом случае, нипойму почему.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "std_lib_facilities.h"
int main()
{   
    char letter = ' ';
    cout <<"\nPress letter (a or b ): ";
    cin >>letter;   
 
    if (letter = 'a')
    {
        cout << "letter = A " <<"\n";
    }
    if (letter = 'b')
    {
        cout << "letter = B " <<"\n";
    }
    keep_window_open();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2012, 11:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос условие с char (C++):

условие с использованием char - C++
Не получается разобраться с условием #include &lt;iostream&gt; #define p 5 using namespace std; int main() { struct PRICE { ...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous - C++
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

15
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
06.01.2012, 11:49 #2
может во втором if заменить на else if
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "std_lib_facilities.h"
int main()
{       
        char letter = ' ';
        cout <<"\nPress letter (a or b ): ";
        cin >>letter;   
 
        if (letter = 'a')
        {
                cout << "letter = A " <<"\n";
        }
        else if (letter = 'b')
        {
                cout << "letter = B " <<"\n";
        };
        keep_window_open();
        return 0;
}
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
06.01.2012, 11:49 #3
= - присваивание,
операция сравнения - ==.
1
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.01.2012, 11:49 #4
Цитата Сообщение от stalex Посмотреть сообщение
if (letter = 'a')
if(letter == 'a')
1
cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
06.01.2012, 11:51 #5
точно, я просто перепутал = и ==
0
stalex
4 / 4 / 0
Регистрация: 08.09.2009
Сообщений: 90
06.01.2012, 12:01  [ТС] #6
спасибо, ответившим.
0
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 02:41 #7
Учимся писать красиво.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#include "std_lib_facilities.h"
int main()
{       
        char letter;
        cout <<"\nPress letter (a or b ): ";
        cin >>letter;   
 
        switch(letter)
        {
                case 'a':
                cout << "letter = A \n";
                case 'b':
                cout << "letter = B \n";
        }
        keep_window_open();
        return 0;
}
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 09:21 #8
kisssko, Даже если закрыть глаза на std_lib_facilities.h ваш код все равно не корректен.
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 09:24 #9
kisssko, break забыли
0
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 18:51 #10
Цитата Сообщение от Dekio Посмотреть сообщение
kisssko, break забыли
Не забыли, он там не нужен!

PS: А, да. просто поспешил. Сперва хотел сделать примерно так.

C++
1
2
3
4
5
6
        switch(letter)
        {
                case 'a':
                case 'b':
                printf("letter=%c",toupper(letter));
        }
Но потом изменил.
0
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
07.01.2012, 18:57 #11
Цитата Сообщение от kisssko Посмотреть сообщение
Не забыли, он там не нужен!
Как бэ специфика сишного switch'а, каждый кейс должен завершаться break'ом.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 19:03 #12
C++
1
2
3
4
5
6
switch(letter)
{
    case 'a':
    case 'b':
    printf("letter=%c",toupper(letter));
}
От души
Но все равно условию не соответствует.
Цитата Сообщение от stalex Посмотреть сообщение
если введен символ а должна выводиться одна строка, если введен символ в должна выводиться другая строка
Нигде не сказано, что эта строка должна быть letter%c. Или ей подобная.
0
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 19:58 #13
Цитата Сообщение от kazak Посмотреть сообщение
Как бэ специфика сишного switch'а, каждый кейс должен завершаться break'ом.
Вовсе и не должен. break служит для выхода из тела switch, иначе будет выполняться код всех кейсов до конца. Иногда именно это и бывает нужно.

Типичный пример: (сорри за офтопик)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch(uMsg)
{
    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
        case IDOK: // Обработчик кнопки "OK"
 
            // Применяем настройки
            // break тут не нужен
 
        case IDCANCEL: // Обработчик кнопки "Отмена"
        ShowWindow(hwndDlg, SW_HIDE); // Прячем диалог
    }
    return TRUE;
}
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 20:02 #14
kisssko, тем не менее, switch здесь не нужен.
Не стоит доказывать свою неправоту.
0
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 21:11 #15
Цитата Сообщение от Dekio Посмотреть сообщение
kisssko, тем не менее, switch здесь не нужен.
Не стоит доказывать свою неправоту.
Обоснуйте, пожалуйста.
0
07.01.2012, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2012, 21:11
Привет! Вот еще темы с ответами:

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

функция возвращает массив слов, содержащихся в текстовом сообщении char* Words(char *s) - C++
Стоит такая задача: функция должна возвратить массив слов, содержащихся в текстовом сообщении char* Words(char *s) Как это можно...


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

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

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