Informática, pregunta formulada por daniel642012p34jty, hace 1 año

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

Contestado por arboisiere
1

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;

}

Otras preguntas