Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
stalex
4 / 4 / 0
Регистрация: 08.09.2009
Сообщений: 90
06.01.2012, 11:44     условие с char #1
если введен символ а должна выводиться одна строка, если введен символ в должна выводиться другая строка, у меня выводится все в любом случае, нипойму почему.
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cyberobot
 Аватар для cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
06.01.2012, 11:49     условие с char #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;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
06.01.2012, 11:49     условие с char #3
= - присваивание,
операция сравнения - ==.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.01.2012, 11:49     условие с char #4
Цитата Сообщение от stalex Посмотреть сообщение
if (letter = 'a')
if(letter == 'a')
cyberobot
 Аватар для cyberobot
15 / 15 / 1
Регистрация: 01.09.2011
Сообщений: 66
06.01.2012, 11:51     условие с char #5
точно, я просто перепутал = и ==
stalex
4 / 4 / 0
Регистрация: 08.09.2009
Сообщений: 90
06.01.2012, 12:01  [ТС]     условие с char #6
спасибо, ответившим.
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 02:41     условие с char #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;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 09:21     условие с char #8
kisssko, Даже если закрыть глаза на std_lib_facilities.h ваш код все равно не корректен.
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 09:24     условие с char #9
kisssko, break забыли
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 18:51     условие с char #10
Цитата Сообщение от Dekio Посмотреть сообщение
kisssko, break забыли
Не забыли, он там не нужен!

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

C++
1
2
3
4
5
6
        switch(letter)
        {
                case 'a':
                case 'b':
                printf("letter=%c",toupper(letter));
        }
Но потом изменил.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
07.01.2012, 18:57     условие с char #11
Цитата Сообщение от kisssko Посмотреть сообщение
Не забыли, он там не нужен!
Как бэ специфика сишного switch'а, каждый кейс должен завершаться break'ом.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 19:03     условие с char #12
C++
1
2
3
4
5
6
switch(letter)
{
    case 'a':
    case 'b':
    printf("letter=%c",toupper(letter));
}
От души
Но все равно условию не соответствует.
Цитата Сообщение от stalex Посмотреть сообщение
если введен символ а должна выводиться одна строка, если введен символ в должна выводиться другая строка
Нигде не сказано, что эта строка должна быть letter%c. Или ей подобная.
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 19:58     условие с char #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;
}
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 20:02     условие с char #14
kisssko, тем не менее, switch здесь не нужен.
Не стоит доказывать свою неправоту.
kisssko
31 / 31 / 2
Регистрация: 19.12.2011
Сообщений: 72
07.01.2012, 21:11     условие с char #15
Цитата Сообщение от Dekio Посмотреть сообщение
kisssko, тем не менее, switch здесь не нужен.
Не стоит доказывать свою неправоту.
Обоснуйте, пожалуйста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2012, 21:13     условие с char
Еще ссылки по теме:

C++ условие с использованием char
C++ Различное поведение функции которая копирует строки с char* t и char t[]
array char* to char* (значения массива указателей в один указатель) C++

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

Или воспользуйтесь поиском по форуму:
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 21:13     условие с char #16
Конструкции if за глаза хватит. Не надо строить велосипеды. Которые тем более не корректно работают
Yandex
Объявления
07.01.2012, 21:13     условие с char
Ответ Создать тему
Опции темы

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