- PAT 甲级 刷题日记|A 1108 Finding Avera
- PAT A1001 A+B Format (20)
- PAT 甲级 刷题日记|A 1122 Hamiltonian
- PAT 甲级 刷题日记|A 1123 Is It a Compl
- PAT 甲级 刷题日记|A 1038 Recover the
- PAT 甲级 刷题日记|A 1043 Is It a Bina
- PAT 甲级 刷题日记|A 1129 Recommendatio
- PAT 甲级 刷题日记|A 1127 ZigZagging on
- PAT 甲级 刷题日记|A 1094 The Largest
- PAT 甲级 刷题日记|A 1135 Is It A Red
单词积累
real number 实数
In case 万一;假使
思路
字符串问题,测试数据也非常简单,但代码写的又臭又长是不能忍的
测试点2答案错误原因:题面指出如果只有一个合法数字,输出numbers的时候不加s,即为number。
柳神的代码就非常简洁了,技巧性很高。
代码
#include <bits/stdc++.h>
using namespace std;
int N;
const int maxn = 103;
string inpu[maxn];
vector<double> ans;
bool check(string input) {
double ma = 0;
int i = 0;
if (input[0] == '+' || input[0] == '-') i++;
if(input[i] <= '9' && input[i] >= '0') {
for (;i < input.size(); i++) {
if (input[i] <= '9' && input[i] >= '0') {
ma *= 10;
ma += input[i] - '0';
} else if (input[i] == '.') {
break;
} else {
return false;
}
}
if (i != input.size()) {
double xiao = 0;
for (int j = input.size() - 1; j > i; j--) {
if (input[j] <= '9' && input[j] >= '0') {
xiao += input[j] - '0';
xiao *= 0.1;
} else {
return false;
}
}
if (input.size() - 1 - i > 2) {
return false;
}
ma += xiao;
}
if (ma > 1000) return false;
if (input[0] == '-') ma *= -1;
ans.push_back(ma);
return true;
} else {
return false;
}
}
int main() {
cin>>N;
for (int i = 0; i < N; i++) {
cin>>inpu[i];
if (check(inpu[i]) == false) {
cout<<"ERROR: "<<inpu[i]<<" is not a legal number"<<endl;
}
}
if (ans.size() == 0) cout<<"The average of 0 numbers is Undefined"<<endl;
else if (ans.size() == 1){
printf("The average of 1 number is %.2f", ans[0]);
}else {
double answer = 0;
for (int i = 0; i < ans.size(); i++) {
answer += ans[i];
}
answer /= ans.size();
printf("The average of %d numbers is %.2f", ans.size(), answer);
}
}
网友评论