Что не так с этим элементарным алгоритмом?
Решаю легчайшую задачу задачу с сайта, где нужно одни символы заменить на другие, сделал всё правильно, но оно не работает.
Условие:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
using namespace std;
int main() {
char stR[25000];
char b;
bool block = 0;
while (gets_s(stR))
{
for (int i = 0; i < strlen(stR); i++)
{
if (stR[i] == '/' and stR[i + 1] == '/') block = 1;
while (stR[i] == '-' and stR[i + 1] == '>' and block !=1)
{
i += 2;
cout << ".";
}
cout << stR[i];
}
cout << endl;
block = 0;
}
}
Пытался делать и через getline и стринг, и через gets и char,всё неработает, что там, что там проходит только 2 теста из 7. Проверял тестовыми данными, всё работает отлично. Так же убирал cout << endl; и ставил 2 таких, ничего не помогает. Что можно сделать ? Сайт с задачей: https://www.e-olymp.com/ru/problems/506
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
#include <string>
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
{
string body = s, comment = "";
size_t p;
if ((p = s.find("//")) != s.npos)
{
body = s.substr(0,p);
comment = s.substr(p);
}
while((p = body.find("->")) != body.npos)
body.replace(p,2,".");
cout << body << comment << "\n";
}
}
Автор решения: MBo
→ Ссылка
cout << stR[i];
выполняется безусловно, выводя - от второй стрелки ->->
if (block != 1 and stR[i] == '-' and stR[i + 1] == '>') {
cout << '.';
i++;
}
else
cout << stR[i];