Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
1

If и Else

17.06.2013, 20:21. Показов 1935. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решил "поиграться" с этими двумя операторами, в итоге должна была выйти программка - вопросник, сначала у меня не получился этот вопрос, теперь вышло, но несколько не так. При выборе D должно было писаться Perfect!, а пишется Bad... very bad... , но при этом, если выбрать любой другой вариант - пишется Perfect! Не подскажите, как это исправить? Код ниже:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <windows.h>
 using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    
    char s;
    char d;
    char y;
    char x;
 
    cout << "Какая земля по форме? S = Круглая, D = Сфера, Y = Плоская, X = Что такое земля?" << endl;
    if (cin >> d)
        cout <<"Perfect!" << endl;
    if (cin >> s || cin >> y || cin >> x) 
        cout << "Bad... very bad..." << endl;
 
 
}
0
18 / 18 / 6
Регистрация: 20.11.2012
Сообщений: 49
17.06.2013, 20:35 2
C++
1
2
3
4
5
6
7
8
9
10
setlocale(LC_ALL, "Russian");
    char symbol;
 
    cout << "Какая земля по форме? S = Круглая, D = Сфера, Y = Плоская, X = Что такое земля?" << endl;
    cin >> symbol;
    if (symbol=='D')
        cout <<"Perfect!" << endl;
    if ((symbol=='S')|| (symbol=='Y') || (symbol=='X')) 
        cout << "Bad... very bad..." << endl;
 getch();
1
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.06.2013, 20:40  [ТС] 3
Благодарю за код, только появился один вопрос - getch(); - Что это такое?))

Добавлено через 2 минуты
Я еще почему задал вопрос, у меня ошибка на нем вылезла, пишет, что не найдет идентефикатор getch
0
18 / 18 / 6
Регистрация: 20.11.2012
Сообщений: 49
17.06.2013, 20:42 4
это ожидание нажатия клавиши, можешь удалить)
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.06.2013, 20:58  [ТС] 5
Понятно, и снова я обращаюсь, я задал второй вопрос, у меня No не полностью высвечивается, только o, и при этом, если правильно ответить - то ничего не пишется( а должно) а третий вопрос даже не ждет ответа, сразу завершает программу... Код полностью вот. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <windows.h>
 using namespace std;
 int main () 
 {
 
 setlocale(LC_ALL, "Russian");
    char symbol;
 
    cout << "Какая земля по форме? S = Круглая, D = Сфера, Y = Плоская, X = Что такое земля?" << endl;
    cin >> symbol;
    if (symbol=='D')
        cout <<"Правильно." << endl;
    if ((symbol=='S')|| (symbol=='Y') || (symbol=='X')) 
        cout << "Плохо... очень плохо!" << endl;
 
    cout << "Правда ли то, что в центре земли раскаленное ядро? " << endl;
    cout << "yes\no" << endl;
    cin >> symbol;
    if ( symbol == 'yes')
        cout << "Это тоже верно." << endl;
    if (symbol == 'no') 
        cout << "Ну, повезет  в другой раз." << endl;
 
    cout << "Cколько всего было чудес света??" << endl;
    cout << "A = 7, B = 85, C =100, D =10" << endl;
    cin >> symbol;
    if(symbol == 'A')
        cout << "Молодец" << endl;
    if ((symbol == 'B') ||( symbol == ' C ' ) ||( symbol == 'D'  ))
        cout << "Нет, к сожалению..." << endl;
 
 
 }
0
18 / 18 / 6
Регистрация: 20.11.2012
Сообщений: 49
17.06.2013, 21:31 6
No пишет неправильно потому что \n это символ перехода на следующую стоку, попробуй так
Цитата Сообщение от Corax111 Посмотреть сообщение
cout << "yes \ no" << endl;
А с ответом, тут дело в том что char symbol - создается 1 символ, тут надо так
Цитата Сообщение от Corax111 Посмотреть сообщение
cout << "Правда ли то, что в центре земли раскаленное ядро? " << endl;
* * cout << "yes\no" << endl;
string symbol2;
* * cin >> symbol2;
* * if ( symbol == 'yes')
* * * * cout << "Это тоже верно." << endl;
* *else
* * * * cout << "Ну, повезет *в другой раз." << endl;
Добавлено через 18 минут
вернее так
Цитата Сообщение от awful1992 Посмотреть сообщение
cout << "Правда ли то, что в центре земли раскаленное ядро? " << endl;
* * cout << "yes\no" << endl;
string symbol2;
* * cin >> symbol2;
* * if ( symbol == "yes")
* * * * cout << "Это тоже верно." << endl;
* *else
* * * * cout << "Ну, повезет *в другой раз." << endl;
0
100 / 87 / 17
Регистрация: 29.05.2013
Сообщений: 227
17.06.2013, 21:37 7
Цитата Сообщение от Corax111 Посмотреть сообщение
C++
1
cout << "yes\no" << endl;
Чтоб \ перестал быть исполняемым нужно их два подряд ставить: \\
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
18.06.2013, 18:13  [ТС] 8
За несколько дней моего прибывания,я наверное уже всем надоел, но в том коде, что я кидал, и вы делали, можно ли сделать так, чтобы можно было применять разные действия в разных исходах, причем, в противном случае, чтобы программа не завершалась. Например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
int main()
{
 
char symbol;
char yes;
char no;
int p = 0;
int m = 0;
 
//тот же пример с землей.
 
cout << "Какая форма земли?" << endl;
cout << "A = круг; B = сфера, C = Куб, D = что такое земля??" << endl;
 if ( symbol == 'B' )
       cout << "Верно" << endl;
p = ++p;
 
if ((symbol == 'A') || (symbol == 'C') || (symbol == 'D'))
      cout << "Неверно" << endl;
m = m-1;
}
(Если что, этот код я написал прямо сейчас на сайте, не проверял его)
Но что-то похожее я вводил уже в Студию и у меня программа завершалась, если не верно, или же продолжалась, но выводила Верно, следующей строчкой - неверно? А если ответить не верно, тогда вообще ничего не выводилось, а ждало верного ответа.. при этом действия с p и m происходили...

Суть моей задумки: Научиться разветвлять программку, чтобы можно было написать какую-нибудь небольшую игру, в виде текстового квеста. И переменная P - может служить счетчиком к примеру выполненных заданий, а m = счетчиком денег, еще парочка переменных - за опыт и т.д. , этим заняться позже можно.
И не буду тянуть кота за хвост, сразу спрошу - можно ли как-то делать checkpoint? Т.е. человек доходит до определенного этапа выполнения кода - и его результат предлагают сохранить - вопрос, как эти сохранялки делать?)) Заранее благодарю, если кто решиться мне помочь
0
100 / 87 / 17
Регистрация: 29.05.2013
Сообщений: 227
18.06.2013, 18:22 9
Цитата Сообщение от Corax111 Посмотреть сообщение
как эти сохранялки делать?
Самое наипростейшее это сделать очень много goto(перед каждым вопросом), а в сохранёнку записать опыт и т.д. и метку на тот goto который идёт перед следующим вопросом
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
18.06.2013, 18:23  [ТС] 10
А вот еще, а как пользоваться rand() ? (В php достаточно написать rand(0,150) и будет генерироваться число, тут пишет, что чего -то не хватает для поддержки двух аргументов, а чего именно - так и не нашел(

Добавлено через 48 секунд
Цитата Сообщение от Ezembi Посмотреть сообщение
сделать очень много goto
А можно на примере? Просто я новичок в этом деле, поэтому столько вопросов))
0
100 / 87 / 17
Регистрация: 29.05.2013
Сообщений: 227
18.06.2013, 18:27 11
для рндома подключите
#include <Windows.h>
#include <time.h>

в самой проге уже
srand(time(NULL));
int a=rand()%число;

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
int a=1;
if(a==1)
goto waw;
else
goto oh;
waw :printf("waw");//после waw выдаст ещё и oh
oh: printf("oh");
}
1
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
18.06.2013, 19:05  [ТС] 12
Кстати, а так и не ответили, как сделать, чтобы выполнялось только какое-либо одно условие, а не оба, при любом исходе?))
0
100 / 87 / 17
Регистрация: 29.05.2013
Сообщений: 227
18.06.2013, 19:07 13
оба условия сдесь?
Цитата Сообщение от Corax111 Посмотреть сообщение
#include <iostream>
using namespace std;
int main()
{
char symbol;
char yes;
char no;
int p = 0;
int m = 0;
//тот же пример с землей.
cout << "Какая форма земли?" << endl;
cout << "A = круг; B = сфера, C = Куб, D = что такое земля??" << endl;
*if ( symbol == 'B' )
* * * *cout << "Верно" << endl;
p = ++p;
if ((symbol == 'A') || (symbol == 'C') || (symbol == 'D'))
* * * cout << "Неверно" << endl;
m = m-1;
}
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
18.06.2013, 19:17  [ТС] 14
Да, только там маленькая ошибкас проверкой, то что If(symbol == 'B') - это если symbol будет равен тому, что введут с клавиатуры, т.е. надо ввести с клавиатуры B, чтобы засчитан был правильный ответ, и спасибо за тот пример)
0
Ghost
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
18.06.2013, 19:27 15
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main() {
    setlocale(LC_ALL, "Russian");
    char a;
    std::cout << "Какая земля по форме? S = Круглая, D = Сфера, Y = Плоская, X = Что такое земля?" << std::endl;
    std::cin>>a;
    a=='d'||'D'?std::cout<<"Perfect!":std::cout<<"Bad... very bad"<<std::endl;
    return 0;
}
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
18.06.2013, 19:30 16
Ezembi, зачем же вы плохому учите? Надо бы забывать про goto.
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
18.06.2013, 19:34  [ТС] 17
Belfegor, я проверил Ваш код, при введении любой буквы пишет Perfect! (

Добавлено через 46 секунд
Wolkodav, goto - плохо? Тогда может дашь совет по сохраненкам более хороший?)
0
Ghost
174 / 174 / 40
Регистрация: 16.09.2012
Сообщений: 526
18.06.2013, 19:36 18
Цитата Сообщение от Corax111 Посмотреть сообщение
любой буквы пишет Perfect!
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main() {
    setlocale(LC_ALL, "Russian");
    char a;
    std::cout << "Какая земля по форме? S = Круглая, D = Сфера, Y = Плоская, X = Что такое земля?" << std::endl;
    std::cin>>a;
    (a=='d'||a=='D')?std::cout<<"Perfect!":std::cout<<"Bad... very bad"<<std::endl;
    return 0;
}
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
18.06.2013, 19:38 19
Corax111, goto однозначно плохо почти всегда, а по поводу чего вам дать совет?
0
Belfegor
18.06.2013, 19:40     If и Else
  #20

Не по теме:

один мальчик использовал goto и умер

0
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru