Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/05/2013, 13:44
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 4 meses
Puntos: 22
Respuesta: Traducir de pascal a C

Hola.

Dado que C y C++ no cuentan con un tipo de datos para trabajar conjuntos como el Set de Pascal, creo que es mas sencillo tratar de entender la lógica del código e implementarla en C o C++.
Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. #define ESVOCAL(x) (x)=='A'||(x)=='E'||(x)=='I'||(x)=='O'||(x)=='U'||(x)=='a'||(x)=='e'||(x)=='i'||(x)=='o'||(x)=='u'
  4. #define TAM 10
  5. #define FALSE 0
  6. #define TRUE  1
  7.  
  8. typedef char vecchar[10];
  9.  
  10. int todasvocales(int N, vecchar v)
  11. {
  12.   int i=0, r = TRUE;
  13.   for(i=0; i<N ;i++)
  14.     r = ESVOCAL(v[i]);
  15.   return r;
  16. }
  17.  
  18. int cuentavocales(int N, vecchar v)
  19. {
  20.   int i,r=0;
  21.   for(i=0; i<N ;i++) r += ESVOCAL(v[i]);
  22.   return r;
  23. }
  24.  
  25. int main()
  26. {
  27.   vecchar v;
  28.   int i;
  29.   for(i=0; i<TAM; i++){
  30.     printf("Inserte el caracter %d de %d de la lista L: ",i+1,TAM);
  31.     v[i] = getchar();
  32.     while(getchar()!='\n');
  33.   }
  34. /*--------
  35.   r := todasVocales(tam, A);
  36.   writeln(r);
  37.   ---------
  38.   Supongo que estas líneas se encargarían de mostrar si se
  39.   ingresaron todas vocales..., mismo efecto en C:
  40. */
  41.   if (todasvocales(TAM, v))
  42.    printf("TRUE\n");
  43.   else
  44.    printf("FALSE\n");
  45.  
  46.   printf("%d\n",cuentavocales(TAM, v));
  47.   printf("Con %d de %d posibles",cuentavocales(TAM,v),TAM);
  48.   getch();
  49.   return 0;
  50. }

Saludos