#include<iostream> #include<string> using namespace std; bool isNum(string s) { for (auto x : s) //从传过来的字符串继承一个同样的字符串 { if (!isdigit(x)) //如果不是数字,返回false return false; } return true; //否则返回true } int main() { string s; pair<int, int> p(0, 0);//定义一个数对,名为p,初始值为(0,0) while (getline(cin, s, ";")) { if (s.empty()) continue; //如果本次取到的字符串为空,则直接进行下一次截取 string s1 = s.substr(1); //把本次取到的字符串第二位到末尾的字符取出 if (isNum(s1)) { switch (s[0]) { case'A': p.first -= stoi(s1);//stoi函数将字符串转化为10进制数字 break; case'D': p.first += stoi(s1); break; case'W': p.second += stoi(s1); break; case'S': p.first -= stoi(s1); break; default: break; } } } cout << p.first << "," << p.second; return 0; }怎么修改
时间: 2023-06-17 20:07:13 浏览: 110
#include <iostream> #include<iomanip> using namespace std;九九乘法表
以下是修改后的代码,主要是修正了最后一个case语句中的p.second的运算符错误(应该是减号而不是加号):
```
#include<iostream>
#include<string>
using namespace std;
bool isNum(string s) {
for (auto x : s) //从传过来的字符串继承一个同样的字符串
{
if (!isdigit(x)) //如果不是数字,返回false
return false;
}
return true; //否则返回true
}
int main() {
string s;
pair<int, int> p(0, 0);//定义一个数对,名为p,初始值为(0,0)
while (getline(cin, s, ';')) {
if (s.empty())
continue; //如果本次取到的字符串为空,则直接进行下一次截取
string s1 = s.substr(1); //把本次取到的字符串第二位到末尾的字符取出
if (isNum(s1)) {
switch (s[0]) {
case'A':
p.first -= stoi(s1);//stoi函数将字符串转化为10进制数字
break;
case'D':
p.first += stoi(s1);
break;
case'W':
p.second += stoi(s1);
break;
case'S':
p.second -= stoi(s1); //修正错误,应该是减号
break;
default:
break;
}
}
}
cout << p.first << "," << p.second;
return 0;
}
```
阅读全文