#include
using namespace std;
int main()
{
int i, n=70;
char s[n]; //объявление строковой переменной
cin.getline(s,70); //ввод строки
for(i=0;i<n;i++) //цикл перебирающий элементы массива
{
if(s[i]=='I' & s[i+1]!='I' & s[i+1]!='V')
{i++;continue;}
if(s[i]=='I' & s[i+1]=='I' & s[i+2]!='I')
{i++;continue;}
if(s[i]=='I' & s[i+1]=='I' & s[i+2]=='I')
{i++;continue;}
if(s[i]=='I' & s[i+1]=='V' & s[i+1]!='I')
{i++;continue;}
if(s[i]=='V' & s[i+1]!='I' & s[i+1]!='V')
{i++;continue;}
}
cout<<s[i]; //вывод элемента
}
Код выводит @. Что не так?
Другие языки программирования и технологии
Пользователь вводит строку. Найти и вывести из строки римские цифры от 1 до 5, введенные прописными символами.
https://ideone.com/5A2ztK
string a;
while(cin>>a){
if(a=="I")cout<<"I ";
if(a=="II")cout<<"II ";
if(a=="III")cout<<"III ";
if(a=="IIII")cout<<"IV "; // редкое но допустимое написание
if(a=="IV")cout<<"IV ";
if(a=="V")cout<<"V ";
}
string a;
while(cin>>a){
if(a=="I")cout<<"I ";
if(a=="II")cout<<"II ";
if(a=="III")cout<<"III ";
if(a=="IIII")cout<<"IV "; // редкое но допустимое написание
if(a=="IV")cout<<"IV ";
if(a=="V")cout<<"V ";
}
#include <iostream>
using namespace std;
int main(){
string s;
getline(cin, s);
for (int i = 0; i < s.length();)
if (s[i] == 'I' && i < s.length() - 1 && s[i + 1] == 'V')
cout << "IV ", i += 2;
else if (s[i] == 'V')
cout << "V ", i++;
else if (s[i] == 'I' && i < s.length() - 2 && s[i + 1] == 'I' && s[i + 2] == 'I')
cout << "III ", i += 3;
else if (s[i] == 'I' && i < s.length() - 1 && s[i + 1] == 'I')
cout << "II ", i += 2;
else if (s[i] == 'I')
cout << "I ", i++;
else
i++;
cin.get();
return 0;
}
#include <iostream>
using namespace std;
int main(){
string s;
getline(cin, s);
for (int i = 0; i < s.length();)
if (i < s.length() - 1 && s.substr(i, 2) == "IV")
cout << "IV ", i += 2;
else if (s[i] == 'V')
cout << "V ", i++;
else if (i < s.length() - 2 && s.substr(i, 3) == "III")
cout << "III ", i += 3;
else if (i < s.length() - 1 && s.substr(i, 2) == "II")
cout << "II ", i += 2;
else if (s[i] == 'I')
cout << "I ", i++;
else
i++;
cin.get();
return 0;
}

using namespace std;
int main(){
string s;
getline(cin, s);
for (int i = 0; i < s.length();)
if (s[i] == 'I' && i < s.length() - 1 && s[i + 1] == 'V')
cout << "IV ", i += 2;
else if (s[i] == 'V')
cout << "V ", i++;
else if (s[i] == 'I' && i < s.length() - 2 && s[i + 1] == 'I' && s[i + 2] == 'I')
cout << "III ", i += 3;
else if (s[i] == 'I' && i < s.length() - 1 && s[i + 1] == 'I')
cout << "II ", i += 2;
else if (s[i] == 'I')
cout << "I ", i++;
else
i++;
cin.get();
return 0;
}
#include <iostream>
using namespace std;
int main(){
string s;
getline(cin, s);
for (int i = 0; i < s.length();)
if (i < s.length() - 1 && s.substr(i, 2) == "IV")
cout << "IV ", i += 2;
else if (s[i] == 'V')
cout << "V ", i++;
else if (i < s.length() - 2 && s.substr(i, 3) == "III")
cout << "III ", i += 3;
else if (i < s.length() - 1 && s.substr(i, 2) == "II")
cout << "II ", i += 2;
else if (s[i] == 'I')
cout << "I ", i++;
else
i++;
cin.get();
return 0;
}

Что не так - сложно сказать: надо вникать в ваш алгоритм. Проще написать по-своему. Пользуйтесь отладчиком, чтоб найти ошибку.
Самое простое: сравнить строку с восьмью (или пятью?) римскими числами. Это не оптимально, но код получится короче.
Самое простое: сравнить строку с восьмью (или пятью?) римскими числами. Это не оптимально, но код получится короче.
Похожие вопросы
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- Как вывести рандомные 2 числа из отрезка 1 до 5,только чтоб они не равные были 3? С++
- Дан двумерный масссив. Найти и вывести максимальный элемент каждой строки. Turbo Pascal
- Дано n строк по 3 элемента (1 и 0), найти сколько строк имеет больше чем один знак 1. C++
- Удалить из строки все цифры. Как решить эту задачу в паскале??
- циклы с++ Дано натуральное N. Найти сумму всех цифр числа и вывести на экран все цифры в обратном порядке.
- Если пользователь вводит размер массива, является ли он динамическим ?
- var k:1..9; напечатать значение переменной k римскими цифрами. в турбо паскаль нужно написать программу
- Условие при котором отбираются слова 5 или более символов. Язык Си.
- Пользователь вводит три числа с клавиатуры, а программы выдает наибольшее. C++