Когда я запускаю свою программу, я должен ввести количество строк, которые я хочу получить в своем выпуске. У меня есть предел от 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");
}
Ваш первый, если в Convert всегда будет терпеть неудачу на не-подчеркивании и возвращаться. Я не думаю, что это было предназначено. Согласитесь с другим ответом на петлю цикла. Следующие два момента должны быть, по-видимому. Шаг через этот код с отладчиком и следите за ним по очереди и посмотрите, где он не работает. У вас здесь несколько проблем, и я не совсем уверен, что это за намерение.
Изменить - я не правильно разбирал лишние скобки. Первое, если в конверте на самом деле все в порядке.
while (cin >> input)
. Переменная в верхнем регистре никогда не устанавливается в true, но ничего не меняет, так как вы также устанавливаете флаг в «C». Если у вас есть имя задачи с двумя подчеркиваниями, это даст ошибку.