Итак, я пытаюсь сделать переводчик Pig Latin, и до сих пор моя программа работает, но есть только одна проблема. Я не могу иметь дело с пунктуацией, потому что когда ввод представляет собой целое предложение, например:C++ Пунктуация в латинской программе Pig
Я уже ненавижу этот «язык»! Отпуск: Iway уже atahay atthay "anguagelay"!
Что моя программа делает, игнорируя пунктуацию, поэтому она не появляется на выходе. Это то, что у меня есть:
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
bool IsVowel(char letter)
{
switch(letter)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
return true;
default:
return false;
}
}
void PigLatin(char *word)
{
string s1(word);
string s2;
if(IsVowel(word[0]) == true) s2 = s1 + "way";
else s2 = s1.substr(1) + s1[0] + "ay";
cout << s2 << " ";
}
int main()
{
char sentence[10000];
char *words;
cin.getline(sentence, 10000);
words = strtok(sentence, " ,.!:;""?");
while (words != NULL)
{
PigLatin(words);
words = strtok(NULL, " ,.!:;""?");
}
return 0;
}
Вам нужно задать конкретный вопрос; это слишком широко, как есть. Вопрос вроде «как мне это сделать?» также будет широким. Попробуйте решение, а затем задайте конкретный вопрос, когда у вас возникнут проблемы. – Carcigenicate
Почему используются как std :: string, так и массивы char? И никогда не используйте strtok. –
Потому что я новичок в C++ и просто изучаю, что использовать, а что нет. Я просто пытаюсь использовать разные вещи, чтобы найти что-то, что работает. – Nysalla