Pig Latín es una forma codificada de escribir y hablar de los niños ingleses. Una palabra en pig latín se forma trasponiendo las sílabas de una palabra y anteponiendo la letra ‘a’. Escribir un programa en C que acepte una línea de texto e imprima el correspondiente texto en pig latín. La línea de texto tendrá un máximo de 80 caracteres y un solo espacio en blanco entre palabras. Por ejemplo:
➨
➨ ➨
gato atoga
Pascal. acalPas
Pig latín. apig atinla
Respuestas a la pregunta
El lenguaje de programación C es un tipo de lenguaje estructurado como Pascal, Fortran, Basic. Aunque C es un lenguaje de alto nivel, ya que es estructurado y posee sentencias y funciones que simplifican su funcionamiento, también se puede programar a bajo nivel.
El programa para traducir una palabra o frase a Pig Latín es:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void initialize(char espanol[], char piglatin[]);
void readinput(char espanol[]);
int countwords(char espanol[]);
void convert(int words, char espanol[], char piglatin[]);
void writeoutput(char piglatin[]);
main( )
{
char espanol[80], piglatin[80];
int words;
printf("\nTraductor Pig Latín\n\n");
do
{
initialize(espanol, piglatin);
readinput(espanol);
if (toupper(espanol[0]) == 'E' && toupper(espanol[1]) == 'N' && toupper(espanol[2]) == 'D')
break;
words = countwords(enspanol);
convert(words, espanol, piglatin);
writeoutput(piglatin);
}
while (words >= 0);
printf("\alaHo (Hola)\n");
}
void initialize(char espanol[], char piglatin[])
{
int count;
for (count = 0; count < 80; ++count)
espanol[count] = piglatin[count] = ' ';
return;
}
void readinput(char espanol[])
{
int count = 0;
char c;
while (( c = getchar()) != '\n')
{
espanol[count] = c;
++count;
}
return;
}
int countwords(char espanol[])
{
int count, words = 1;
for (count = 0; count < 79; ++count)
if (espanol[count] == ' ' && espanol[count + 1] != ' ')
++words;
return (words);
}
void convert(int words, char espanol[], char piglatin[])
{
int n, count;
int m1 = 0;
int m2;
for (n = 1; n <= words; ++n)
{
count = m1 ;
while (espanol[count] != ' ')
m2 = count++;
for (count = m1 ; count < m2; ++count)
piglatin[count + (n - 1)] = espanol[count + 1];
piglatin[m2 + (n - 1)] = espanol[m1];
piglatin[m2 + n] = 'a';
m1 = m2 + 2;
}
return;
}
void writeoutput(char piglatin[])
{
int count = 0;
for (count = 0; count < 80; ++count)
putchar(piglatin[count]);
printf("\n");
return;
}