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

Что не так? - C++

Восстановить пароль Регистрация
 
Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 15:50     Что не так? #1
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
#include <iostream>
using namespace std;
int main() {
    char yes[3];
    char no[4];
    int p=2;
    no[p];
    cout << "Privet!" << endl;
    cout << "kak zvat?" << endl;
    char x[20]; // Переменная для ввода имени
    cin >> x; // Ввод имени
    cout << x << " krasivoe imya, a menia zavut Kompashka :)" << endl;
    cout << "menia tak nazval Azamat" << endl;
    cout << "nu, pristupim?" << endl;
    cin >> yes; // Ответ
    if(yes!=no) {
        cout << "5*5 skolko?" << endl;
        int i=25;
        int e;
        cin >> e;
        e==i?cout << "Ti corova nomer 5 ha-ha-ha!!!" << endl:cout << "uchi tablic umnojenia" << endl;
    }
    else {
        cout << "Pochemu?" << endl;
        cout << "Davay " << x << " soglashaisya"  << endl;
        cin >> yes;
        yes>no?cout << "5*5 skolko?" << endl:cout << "Ladno poca!" << endl;
    }
    cin.get();
    return 0;
}
Два чеса просидел переставил но неполучается. Я хочу что бы шол опрос но вот когда ввожу меньшее число чем "no" окно закрывается то выводид "5*5 skolko?" где я ошибаюся плиз знатоки помогите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 15:50     Что не так?
Посмотрите здесь:

что не так? C++
C++ что-то не так
Что не так? C++
C++ Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
что не так? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
21.09.2013, 15:59     Что не так? #2
Цитата Сообщение от Warrior3579 Посмотреть сообщение
no[p];
7 строка, не понял зачем это

Добавлено через 1 минуту
в виду того что в 5 строке
Цитата Сообщение от Warrior3579 Посмотреть сообщение
char no[4];
вы уже обьявили размер массива
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
21.09.2013, 16:01     Что не так? #3
Цитата Сообщение от Warrior3579 Посмотреть сообщение
no[p];
это зачем?
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
21.09.2013, 16:01     Что не так? #4
16 строка
Цитата Сообщение от Warrior3579 Посмотреть сообщение
if(yes!=no)
а что должен if, сравнивать, они же пустые, точнее
переменная no пустая
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
21.09.2013, 16:02     Что не так? #5
Цитата Сообщение от Warrior3579 Посмотреть сообщение
if(yes!=no) {
плюс ко всему - так строки не сравнивают, strcmp
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
21.09.2013, 16:05     Что не так? #6
27 строка
Цитата Сообщение от Warrior3579 Посмотреть сообщение
yes>no
зачем проверять, что "да" больше "нет", ввиду того что они символьные переменные?
Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 16:19  [ТС]     Что не так? #7
Цитата Сообщение от Нету имени Посмотреть сообщение
7 строка, не понял зачем это

Добавлено через 1 минуту
в виду того что в 5 строке

вы уже обьявили размер массива
В 5-ой строке открыт масив с обемом в 3 символа а в 7-ой строке масив заполняется

Добавлено через 2 минуты
Цитата Сообщение от Нету имени Посмотреть сообщение
16 строка

а что должен if, сравнивать, они же пустые, точнее
переменная no пустая
В переменной(масиве) no 2 тоездь no[p] если с клавы было введено больше двух символов(например yes) то true а если меньше else

Добавлено через 2 минуты
Цитата Сообщение от Нету имени Посмотреть сообщение
27 строка

зачем проверять, что "да" больше "нет", ввиду того что они символьные переменные?
Пересмотрите программу, если да задает вопрос(другое деиствие) если нет то другой вопрос

Добавлено через 1 минуту
Цитата Сообщение от Кудаив Посмотреть сообщение
плюс ко всему - так строки не сравнивают, strcmp
Почему? И я пробовал вариант ">".
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
21.09.2013, 16:24     Что не так? #8
Цитата Сообщение от Warrior3579 Посмотреть сообщение
Почему? И я пробовал вариант ">".
строка представляет собой адрес и сравнение
C++
1
2
3
char* yes = "Yes";
char* no = "No";
yes > no;
это сравнение адресов, надо делать

C++
1
2
3
4
5
#include <cstring>
...
char* yes = "Yes";
char* no = "No";
strcmp(yes, no);
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
21.09.2013, 16:25     Что не так? #9
Цитата Сообщение от Warrior3579 Посмотреть сообщение
В 5-ой строке открыт масив с обемом в 3 символа а в 7-ой строке масив заполняется
в 5 строке открыт массив, а в 7ой строке идёт работа с её 3им элементом, и ничем она не заполняется
Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 16:29  [ТС]     Что не так? #10
Цитата Сообщение от Кудаив Посмотреть сообщение
строка представляет собой адрес и сравнение
C++
1
2
3
char* yes = "Yes";
char* no = "No";
yes > no;
это сравнение адресов, надо делать

C++
1
2
3
4
5
#include <cstring>
...
char* yes = "Yes";
char* no = "No";
strcmp(yes, no);
strcmp надо в поисковик сесть...
Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 16:32  [ТС]     Что не так? #11
Цитата Сообщение от Нету имени Посмотреть сообщение
в 5 строке открыт массив, а в 7ой строке идёт работа с её 3им элементом, и ничем она не заполняется
А как ее заполнить(что я не так понял) и какой вариант можно к замысу прелоставить? Буду благодарен.
Блин я свою книгу с ночала и до масивов 5-й раз перечитываю и никак немогу продвинуться в этой главе (((
Нету имени
177 / 22 / 2
Регистрация: 16.05.2013
Сообщений: 181
21.09.2013, 16:37     Что не так? #12
Warrior3579,
Цитата Сообщение от Warrior3579 Посмотреть сообщение
А как ее заполнить
Ну повсей видимости программа ждёт от пользователя, ввода "yes" или "no", в 5 строке обьявили массив
no[] = "no", где массив будет состоять из 3 символов( при этом массив считается заполненым, так как при обращении ,допустим, std::cout << no[1] << std::endl, мы на выводе получим символ 'o'
или как у вас вариант
в 5 строке обьявим массив из 5 элементов no[4]
а в 7 строке заполним no = "no"

Не по теме:

как-то так

Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 17:33  [ТС]     Что не так? #13
Блин, теперь все работает но после ответа на вопрос "5*5 skolko?" и "Davay ___ soglashaisya" окно закрывается необесуите за тупые вопросы но как правильно паузы выставить?
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
35
36
37
#include <iostream>
using namespace std;
int main() {
    char yes[]="yes";
    char no[]="no";
    cout << "Privet!" << endl;
    cout << "kak zvat?" << endl;
    char x[20]; // Переменная для ввода имени
    cin >> x; // Ввод имени
    cout << x << " krasivoe imya, a menia zavut Kompashka :)" << endl;
    cout << "menia tak nazval Azamat" << endl;
    cout << "nu, pristupim?" << endl;
    cin >> yes; // Ответ
    if( strcmp(yes, "yes")) //Сравнение символов
    {
        cout << "Pochemu?" << endl;
        cout << "Davay " << x << " soglashaisya"  << endl;
        cin >> yes;
        if( strcmp(no, "no"))
        {
            cout << "5*5 skolko?" << endl;
        }
        else
        {
            cout << "Ladno poca!" << endl;
        }
    }
    else {
        cout << "5*5 skolko?" << endl;
        int i=25;
        int e;
        cin >> e;
        e==i?cout << "Ti corova nomer 5 ha-ha-ha!!!" << endl:cout << "uchi tablic umnojenia" << endl;
    }
    cin.get();
    return 0;
}
Кудаив
328 / 405 / 24
Регистрация: 27.05.2012
Сообщений: 1,162
Завершенные тесты: 2
21.09.2013, 17:35     Что не так? #14
C++
1
2
3
4
5
#include <cstdlib>
system("pause");
 
#include <iostream>
std::cin.get();
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.09.2013, 17:41     Что не так? #15
Вот такую конструкцию, для cin >>, используйте:
C++
1
(cin >> a).get();
Будет меньше проблем (и в вашем коде остановка сработает).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 17:53     Что не так?
Еще ссылки по теме:

C++ Ребят Незнаю что делать при запуске на компилирование выдает ошибку.Кто понимает что не так скажите а если не затруднит исправьте ошибку
Что не так?) C++
C++ Что не так?

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

Или воспользуйтесь поиском по форуму:
Warrior3579
 Аватар для Warrior3579
5 / 5 / 1
Регистрация: 15.03.2013
Сообщений: 188
21.09.2013, 17:53  [ТС]     Что не так? #16
Дааа!!! Заработала, я не совсем все понял но факт что я в первые за 3 месяца что-то стоющее соченил по сравнению с Hello! ВСЕМ ОГРОМНОЕ СПОСИБО!
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
35
36
37
38
39
40
41
#include <iostream>
using namespace std;
int main() {
    char yes[]="yes";
    char no[]="no";
    cout << "Privet!" << endl;
    cout << "kak zvat?" << endl;
    char x[20]; // Переменная для ввода имени
    (cin >> x).get(); // Ввод имени
    cout << x << " krasivoe imya, a menia zavut Kompashka :)" << endl;
    cout << "menia tak nazval Azamat" << endl;
    cout << "nu, pristupim?" << endl;
    (cin >> yes).get(); // Ответ
    if( strcmp(yes, "yes")) //Сравнение символов
    {
        cout << "Pochemu?" << endl;
        cout << "Davay " << x << " soglashaisya"  << endl;
        (cin >> yes).get();
        if( strcmp(yes, "no"))
        {
            cout << "5*5 skolko?" << endl;
            int i=25;
            int e;
            (cin >> e).get();
            e==i?cout << "Ti corova nomer 5 ha-ha-ha!!!" << endl:cout << "uchi tablic umnojenia" << endl;
        }
        else
        {
            cout << "Ladno poca!" << endl;
        }
    }
    else {
        cout << "5*5 skolko?" << endl;
        int i=25;
        int e;
        (cin >> e).get();
        e==i?cout << "Ti corova nomer 5 ha-ha-ha!!!" << endl:cout << "uchi tablic umnojenia" << endl;
    }
    cin.get();
    return 0;
}
Yandex
Объявления
21.09.2013, 17:53     Что не так?
Ответ Создать тему
Опции темы

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