当我运行程序时,我必须在输出中输入我想要的行数。我有1到100行的限制。每一行都是一个任务,其名称为任务,后跟增加的数字,例如:Task1:,Task2,....当我在输入中键入内容时,它必须转换输入字符串/请参阅下面的代码 - 除了主要代码(); /。 我的问题是,当我输入第一个输入时,它应该转到下一个任务/下一行/但它没有。我输入了例如10个字符串,但是他们不会将每个字符串分别用于下一个任务,但是它们仍然处于一个任务中......希望您现在明白。
#include<iostream>
#include<string>
#include <ctype.h>
using namespace std;
void Convert(string input){
string output = "";
string flag = "";
bool underscore = false;
bool uppercase = false;
if ( islower(input[0]) == false){
cout << "Error!" <<endl;
return;
}
for (int i=0; i < input.size(); i++){
if ( (isalpha( input[i] ) || (input[i]) == '_') == false){
cout << "Error!" <<endl;
return;
}
if (islower(input[i])){
if (underscore){
underscore = false;
output += toupper(input[i]);
}
else
output += input[i];
}
else if (isupper(input[i])){
if (flag == "C" || uppercase){
cout << "Error!"<<endl;
return;
}
flag = "Java";
output += '_';
output += tolower(input[i]);
}
else if (input[i] == '_'){
if (flag == "Java" || underscore){
cout << "Error!" <<endl;
return;
}
flag = "C";
underscore = true;
}
}
cout << output <<endl;
}
int main(){
const int max = 100;
string input;
int pocet_r;
cout << "Zadaj pocet uloh:" << endl;
cin >> pocet_r;
if(pocet_r >= 1 && pocet_r <=100)
{
for (int i = 0; i <pocet_r; i++)
{
cout << "Uloha " << i+1 << ":" << endl;
while (cin >> input)
Convert (input);
while(input.size() > max)
cout << "slovo musi mat minimalne 1 a maximalne 100 znakov" << endl;
while(input.size() > max)
cin >> input;
while (cin >> input)
Convert(input);
}
}else{
cout << "Minimalne 1 a maximalne 100 uloh" << endl;
}
system("pause");
}
答案 0 :(得分:0)
您在转换时的第一个if将始终在非下划线上失败并返回。我不认为这是有意的。同意cin循环的其他答案。接下来的两个时间应该是if if。使用调试器逐步执行此代码并逐行观察并查看失败的位置。你在这里遇到了多个问题,我并不完全确定意图是什么。
编辑 - 我没有正确解析额外的括号。转换中的第一个实际上是可以的。