C Ошибка программы Pig Latin Translator - Как исправить ошибки? - PullRequest
0 голосов
/ 17 марта 2020

пример -> пример, но вместо этого печатается xampleeay. Если оно начинается с гласной (a, e, i, o, u), просто добавьте «yay» в конце. Как это исправить?

quick -> ickquay, но вместо этого печатается uickqay. 'qu' предполагается рассматривать как пару букв вместе как согласную. Как мне это исправить?

у воспринимается как гласный только после первого появления, но у меня это получилось.

Все ведущие согласные переносятся в конец слова до тех пор, пока он не достигнет первой гласной (включая y), и не добавят «ay» в конце. И это, кажется, работает.

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool isVowel(char v);

int main()
{
  char str1[50] = ""; 
  char str2[10] = "";
  int i;
  int length;

  printf("Pig Latin Translator\n");
  printf("----------------------\n");
  printf("Type a word: ");
  scanf("%s", str1);

  length = strlen(str1); 

  strncat(str2, str1,1); 

  for(i = 0; i < length; i++)
  {
    str1[i] = str1[i + 1];
  }

  strcat(str1, str2);

  strcat(str1, "ay");
  printf("%s", str1);
  return 0;
}


bool isVowel(char v) {
    if (v == 'A' || v == 'E' || v == 'I' || v == 'O' || v == 'U' ||
        v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') {
        return true;
    }
    return false;
} 

1 Ответ

0 голосов
/ 18 марта 2020

Следующая программа работает.

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool isVowel(char v);

int main()
{
  char str1[50] = ""; 
  int i = 0;

  printf("Pig Latin Translator\n");
  printf("----------------------\n");
  printf("Type a word: ");
  scanf("%s", str1);

  if (toupper(str1[i]) == 'Y')
    i++;

  for (; !isVowel(str1[i]) && str1[i] != '\0'; i++)
  {
    if (toupper(str1[i]) == 'Q' && toupper(str1[i + 1]) == 'U')
      i++;
  }

  strncat(str1, str1, i);
  strcpy(str1, &str1[i]);

  if(i == 0)
    strcat(str1, "yay");
  else
    strcat(str1,"ay");

  printf("%s", str1);
  return 0;
}

bool isVowel(char v) { return strchr("AEIOUY", toupper(v)); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...