所以我必须创建一个AI程序,而不是与用户交互,并根据用户输入做出响应。我不是很有经验,而且已经花了好几个小时,我已经在网上查了一下,但我想我实际上发布了我的代码并尝试获得一些帮助/建议。
基本上人工智能有助于数学,我让程序自我介绍并询问它想要什么帮助,但是当我输入加法,减法等时,它只响应数字,当它应该响应"伟大,我&#39 ; ll将帮助您添加!/(无论用户输入是什么)"
第一个正在运行的程序的屏幕截图:http://prntscr.com/elw7b4 输入用户需要帮助后的屏幕截图:http://prntscr.com/elw7ky (显然现在它有点遍布整个地方,我先做了计算器,所以为什么它会给出额外的结果。
在输入以下代码之前,计算器正在运行:(正如您所见 http:// prntscr.com / elwavs 只有两个链接cos避难所超过10个代表)< / p>
void Inpsum()
{
cout << "Hello, my name is Eva! I am able to help you with basic Maths! How may I be of Assistance today?" << endl;
float inpsum;
cin >> inpsum;
cout << "Great!, I will help you with " << (inpsum) << endl;
}
但是输入上面的代码打破了计算器。
这是完整的代码:
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <iomanip>
using namespace std;
//user inputs what he needs help with/program output
void Inpsum()
{
cout << "Hello, my name is Eva! I am able to help you with basic Maths! How may I be of Assistance today?" << endl;
cin >> inpsum;
cout << "Great!, I will help you with " << (inpsum) << endl;
}
//addition function
void Add() {
float add1, add2;
cout << "Please enter two values you want added together" << endl;
cin >> add1;
cin >> add2;
cout << "The answer is: " << (add1 + add2) << endl;
}
//subtraction function
void Subt() {
float subt1, subt2;
cout << "Please enter two values you want subtracted" << endl;
cin >> subt1;
cin >> subt2;
cout << "The answer is: " << (subt1 - subt2) << endl;
}
//division function
void Div()
{
float div1, div2;
cout << "Please enter two values you want divided" << endl;
cin >> div1;
cin >> div2;
cout << "The answer is: " << (div1 / div2) << endl;
}
//multiplication function
void Mult() {
float mult1, mult2;
cout << "Please enter two values you want multiplacted" << endl;
cin >> mult1;
cin >> mult2;
cout << "The answer is: " << (mult1 * mult2) << endl;
}
int main()
{
Inpsum(); //user inputs what they want help with
Add();
Subt();
Div();
Mult();
return 0 ;
}
基本上 - 我已经设置了计算器,它正在工作。但是在尝试在用户和程序之间实现输入和输出时,我出错并且已经破坏了一切。而不是程序说&#34;伟大的我会帮助你添加&#34;,它说&#34;很棒,我会帮助你-134567432&#34;
我并没有要求任何人为我做这件事,而是指向正确的方向,这样我才能真正知道将来该怎么做。
答案 0 :(得分:1)
因为您只有少数选择,所以使用枚举可能会有所帮助。你可以这样做:
enum class OPERATION : char {
Addition = 'A',
Subtraction = 'S',
Division = 'D',
Multiplication = 'M'
};
然后,您将切换到一个字符串并具有以下内容:
std::string input;
std::cin >> input;
switch(static_cast<OPERATION>(input[0])) {
case OPERATION::Addition:
Add();
break;
case OPERATION::Subtraction:
Subt();
break;
case OPERATION::Division:
Div();
break;
case OPERATION::Multiplication:
Mult();
break;
default:
std::cerr << "Invalid input" << std::endl;
exit(1);
}
定义枚举将允许您向其投射与其值匹配的值。这使您可以安全地使用您希望在程序运行时看到的已定义输入进行切换。
答案 1 :(得分:1)
请注意,您使用inpsum
定义float inpsum;
,但您要存储的是字符串或单词。它们不兼容。您可以在C ++中了解有关数据类型和字符串的更多信息。