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

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

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

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

06.01.2012, 11:44. Просмотров 1846. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2012, 11:44     условие с char
Посмотрите здесь:

C++ Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& C++
C++ Сделать преобразование unsigned char в char, а затем типу int
C++ Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*)
C++ Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь(
Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) C++
C++ условие с использованием char
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
3030 / 2351 / 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
5819 / 1217 / 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
3030 / 2351 / 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
5819 / 1217 / 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* t и char t[]
array char* to char* (значения массива указателей в один указатель) C++
Ошибка в работе с файлами: error: incompatible types in assignment of ‘char*’ to ‘char* [255]’ C++
Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous C++
C++ функция возвращает массив слов, содержащихся в текстовом сообщении char* Words(char *s)

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

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

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