Мой код берет строку и отображает четные буквы позиции индекса, а затем пробел показывает нечетные индексированные буквы. Нравится, если я даю вход Hacker
, он должен указать Hce akr
. Теперь мой код не дает мне правильный ответ для второго ввода. Как и при подаче второго входа Rank
, он должен дать Rn ak
. Вместо этого он дает k
. Он пропускает R
.Почему моя строка неправильно берет вход во второй раз?
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
void f(string a) {
string odd,even;
for(int i=0; a[i] != '\0'; i++) {
if(i % 2 == 0) {
even = even + a[i];
} else {
odd = odd + a[i];
}
}
cout << even << " " << odd << "\n";//<<<<<<I THINK THIS \n IS THE
//PROBLEM BUT I NEED THIS \n.I OBESERVED THAT ON REMOVING \n, CODES
// WORKS CORRECTLY.
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
string str;
int t;
cin >> t;
for(int i=0; i < t; i++) {
std::cin.ignore();
getline(cin, str);
f(str);
}
return 0;
}
Использовать 'i! = A.size()' вместо этого как условие, 'a [i]! = '\ 0'' немного изворотливый –
Возможный дубликат [cin и getline passipping input] (http://stackoverflow.com/questions/10553597/cin-and-getline-skipping-input), проверьте, какие игнорировать параметры для использования. – stefaanv