Member 13151654 Ответов: 2

Как сделать программу на C++ для общения с компьютером


Какова моя стратегия в любой строке заданной пользователем если определенное слово будет совпадать то будет определенный вывод
Я пробовал но некоторые логические ошибки происходят попробуйте
Ввод
1) Привет там
2)что-то elese

Пожалуйста помогите сэр

Что я уже пробовал:

#include<iostream.h>
#include<string.h>
using namespace std;
int main(){
char q;
    cout<<("Hello world!");
string s1;
string s2="hi";
string s11;
string s22="brain ";

cout<<"n ask something";
cin>>s1;

if((s1.find(s2)==0) !=string::npos)
{cout <<" hi ! nice to see you actually there was none to talk with me ";
cout<<"whats upp";
cin>>q;
cout<<"Thats interesting! I am doing fine myself! ";

}
 if((s1.find(s22)==0) !=string::npos) 
{cout<<" don't ask me such silly questions what if I ask you where is your brain";
}

else
{cout <<" what! Ask senceful question";
}
    return 0;
}

[no name]

Именно для этого и используется отладчик. Научитесь им пользоваться.

2 Ответов

Рейтинг:
0

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

Mehedi Shams

Привет Член 13151654,

В этой строке есть ошибка:

if((s1.find(s2)==0) !=string::npos)
Так и должно быть:
if (s1.find(s2) != string::npos)
find используется для возврата позиции строки (s2 здесь) в другой строке (s1 здесь). Если ничего не найдено, то он возвращает -1 (или 4294967295 как unsigned int). Таким образом, в основном приведенная выше строка проверяет, является ли a find был удачный.

Ваше условное ветвление не совсем ясно. Первый IF проверяет, есть ли "hi" во входной строке. Второй, если это проверяет, есть ли" мозг", и полностью отделен от первого, если и сам является отдельной ветвью. Кроме того, вход " q " нигде не используется. Может быть, ты хочешь, чтобы все было именно так. Просто будь уверен.