Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Вопрос по оператору if else  (Прочитано 2357 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fanatic_13

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Вопрос по оператору if else
« : 23 Мая 2009, 23:01:30 »
Добрый вечер!

Подскажите пожалуйста как в c++ выполнить следующее условие:

если x == 'Quit'
то выводим одно сообщение
если x == 'Exit'
то выводим другое сообщение

Подскажите пожалуйста как правильно написать программку?

Оффлайн MaxSvargal

  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
    • http://maxsvargal.com/
Re: Вопрос по оператору if else
« Ответ #1 : 23 Мая 2009, 23:22:25 »
f (x == 'Quit')
{
   ...
}
else if (x == 'Exit')
{
   ...
}

ps. вопросы ппц... учите основы языка.
Intel Core 2 Duo 2 GHz | 2 Gb RAM | NVidia GeForce 8400 GT
AMD Athlon 64 3800+ 2.8 GHz | 2.14 Gb RAM | NVidia GeForce 6600 GT
Intel Core i5 750 4GHz+ | 4 Gb RAM | NVidia GeForce 260 GTX

Оффлайн Garfeild

  • Активист
  • *
  • Сообщений: 744
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #2 : 23 Мая 2009, 23:27:37 »
В этом случае можно использовать еще и switch-case.

Оффлайн Fanatic_13

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #3 : 23 Мая 2009, 23:31:36 »
if (x == 'Quit')
{
   ...
}
else if (x == 'Exit')
{
   ...
}

ps. вопросы ппц... учите основы языка.

Это я всё написал, проблема в другом. Вот мой код:
char x;
cin.get(x);
if (x == '.')
    {
    cout << "Значение 1";
    }
if (x == 'Quit')
    {
    cout << "Значение 2";
    }
кода ставлю "." всё срабатывает пишет: "Значение 1".
когда пишу слово Quit выдаёт пустую строку.

Что делать?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #4 : 23 Мая 2009, 23:33:52 »
'Q' будет работать
Извините, я все еще учусь

Оффлайн MaxSvargal

  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
    • http://maxsvargal.com/
Re: Вопрос по оператору if else
« Ответ #5 : 23 Мая 2009, 23:34:21 »
пробуйте вместо точки использовать другое значение

зы. SergeyIT прав. Символьные значения заключаются в одинарные кавычки, строки - в двойные.
Intel Core 2 Duo 2 GHz | 2 Gb RAM | NVidia GeForce 8400 GT
AMD Athlon 64 3800+ 2.8 GHz | 2.14 Gb RAM | NVidia GeForce 6600 GT
Intel Core i5 750 4GHz+ | 4 Gb RAM | NVidia GeForce 260 GTX

Оффлайн Fanatic_13

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #6 : 23 Мая 2009, 23:42:35 »
пробуйте вместо точки использовать другое значение

зы. SergeyIT прав. Символьные значения заключаются в одинарные кавычки, строки - в двойные.

С точкой, то как раз всё нормально работает, проблемы начинаются когда я в строку пишу слово Quit.

Если просто записать 'Q', то же всё работает, но я хочу чтобы заработало когда пишешь именно слово.

Если записать "Quit" то компилятор c++ пишет ошибку: "ISO C++ не поддерживает сравнение между указателем и целым".

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #7 : 23 Мая 2009, 23:46:26 »
Абсолютная несовместимость типов!!! Как можно символу присвоить аж 4 символа?
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн MaxSvargal

  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
    • http://maxsvargal.com/
Re: Вопрос по оператору if else
« Ответ #8 : 23 Мая 2009, 23:47:30 »
Переменную храни в string...
Intel Core 2 Duo 2 GHz | 2 Gb RAM | NVidia GeForce 8400 GT
AMD Athlon 64 3800+ 2.8 GHz | 2.14 Gb RAM | NVidia GeForce 6600 GT
Intel Core i5 750 4GHz+ | 4 Gb RAM | NVidia GeForce 260 GTX

Оффлайн Garfeild

  • Активист
  • *
  • Сообщений: 744
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #9 : 24 Мая 2009, 00:01:02 »
А еще лучше почитать умную книжку.

Оффлайн Alexey-S

  • Активист
  • *
  • Сообщений: 296
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #10 : 24 Мая 2009, 00:03:38 »
Вы на каком языке пишите? На c/c++.
Строки заключаются в двйные кавычки.
Нельзя сравнивать так строки. Так вы сравниваете указатели на строки, а не значения строк.
Символы так можно сравнивать. Только не забывайте, что лучше иметь дело с UTF-32 под Linux. Так вы избежите проблемы UTF-8, где одна русская буква занимает два байта.

Оффлайн Fanatic_13

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #11 : 24 Мая 2009, 00:05:27 »
Переменную храни в string...

У меня кажеться нет заголовочного файла string.
#include <string>

после этого всё равно пишет "нет декларации ‘string’ в этой области видимости".

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #12 : 24 Мая 2009, 00:06:09 »
Полный листинг приведи.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Fanatic_13

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #13 : 24 Мая 2009, 00:08:32 »
Вы на каком языке пишите? На c/c++.
Строки заключаются в двйные кавычки.
Нельзя сравнивать так строки. Так вы сравниваете указатели на строки, а не значения строк.
Символы так можно сравнивать. Только не забывайте, что лучше иметь дело с UTF-32 под Linux. Так вы избежите проблемы UTF-8, где одна русская буква занимает два байта.

Учу C++, под Linux.

Скажите пожалуйста, а если в дальнейшем например на Windows код захочу перекомпилировать, то UTF-32 не создаст сложности?

Пользователь решил продолжить мысль 23 Мая 2009, 22:11:29:
Полный листинг приведи.

#include <iostream>
#include <string>

using std::cout;
using std::cin;


int main()
{
    string x;
    cin >> x;
    if (x == '.')
    {
    cout << "Значение 1 \n";
    }
    else if (x == 'Quit')
    {
    cout << "Значение 2";
    }
    return 0;
}
« Последнее редактирование: 24 Мая 2009, 00:13:09 от Fanatic_13 »

Оффлайн Alex2000

  • Активист
  • *
  • Сообщений: 317
    • Просмотр профиля
Re: Вопрос по оператору if else
« Ответ #14 : 24 Мая 2009, 09:31:43 »
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string x;
    cin >> x;
    if (x == ".") cout << "Значение 1\n";
    if (x == "Quit") cout << "Значение 2\n";
    return 0;
}

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.