Pasar a c

(1/1)

Dumy:
Hola

Estoy intentando codifixar a a C este pseudocodigo, ¿Alguien puede indicarme algunos conceptos como cadena?, no estoy seguro a si se refiere a array

Código:

var
                        num, divisor1, divisor2, divisor3: entero;
            fvar

            num := leerEntero( );

            mientras  (num ≠ -1) hacer    
                        buscadivisor1(num, divisor1, divisor2,divisor3);  

                        si loEs(num, divisor1, divisor2,divisor3)  entonces
                                          printaExito(num, divisor1, divisor2,divisor3

                        sino
                                          printaFracaso(num);

                         fsi  

                         num := leerEntero( );

            fmientras


       falgoritmo
 

      accion printaExito( ent a: entero, ent b: entero, ent c: entero, ent d: entero )


                  escribirCadena(‘El número: ‘);
                  escribirEntero(a);

                  escribirCadena(‘ es igual a  ‘);

                  escribirEntero(b);

                  escribirCadena(‘ multiplicado por  ‘);

                  escribirEntero(c);  

                  escribirCadena(‘ y por ‘);

                  escribirEntero(d);  

            fsi        

      faccion


      accion printaFracaso(ent a: entero)
            escribirCadena(‘El número: ‘);
            escribirEntero(a);
            escribirCadena(‘ no tiene divisores diferentes de 1 que multiplicados sean igual a el. ‘);
      faccion

      funcion loEs(ent x: entero,ent y:entero,ent z: entero, ent w: entero): booleano;

                        retorna x = (y * z * w);            
      ffuncion

      accion buscadivisor1(ent n: entero, sal d1: entero, sal d2: entero, sal d3: entero )
            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d1:=2;

            d2:=2;

            d3:=2;

            mientras  d1<=(n div 2) y no encontrado  hacer
                  buscadivisor2 (n,d1,d2,d3);
                  encontrado:= loEs (n,d1,d2,d3);

                   si   no encontrado  entonces

                           d1:=d1+1;

                   fsi  
            fmientras
      faccion
 
      accion buscadivisor2( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d2:=2;

            d3:=2;

            mientras  d2 <= (num div 2) y no encontrado  hacer
                  buscadivisor3(num,d1,d2,d3);  

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d2:=d2+1;
                  fsi      
            fmientras
      faccion

      accion buscadivisor3( ent num: entero, ent d1: entero, sal d2: entero, sal d3: entero  )

            var

                   encontrado: booleano;
            fvar

            encontrado:=falso;

            d3:=2;

            mientras  d3 <= (num div 2) y no encontrado  hacer

                 encontrado:= loEs (num,d1,d2,d3);
                  si no encontrado  entonces
                        d3:=d3+1;
                  fsi      
            fmientras
      faccion

¿Por otro lado alguien sabe de algun codificador a C?

.xAk.:
Cita de: Dumy en 27 Octubre 2023, 20:31 pm

Estoy intentando codifixar a a C este pseudocodigo

bien, estoy seguro que ya tienes el nombre de archivo y me gustaría ver cómo lo inicias.


Cita de: Dumy en 27 Octubre 2023, 20:31 pm

, ¿Alguien puede indicarme algunos conceptos como cadena?, no estoy seguro a si se refiere a array

puedes verlo así, se trata de un carácter (8 bits), y uno al lado de otro hacen la cadena que llamas array.

Cita de: Dumy en 27 Octubre 2023, 20:31 pm

¿Por otro lado alguien sabe de algun codificador a C?

¿perdón? puedes explicarlo un poco mejor.

Muestranos tus progresos.

Atika:
Creo que esto es lo más parecido a lo que tu quieres en C:

Código
#include <stdio.h>
#include <stdbool.h>
 
void printaExito(int a, int b, int c, int d) {
   printf("El número: %d es igual a %d multiplicado por %d y por %d\n", a, b, c, d);
}
 
void printaFracaso(int a) {
   printf("El número: %d no tiene divisores diferentes de 1 que multiplicados sean igual a él.\n", a);
}
 
bool loEs(int x, int y, int z, int w) {
   return x == (y * z * w);
}
 
void buscadivisor1(int n, int *d1, int *d2, int *d3) {
   bool encontrado = false;
   *d1 = 2;
   *d2 = 2;
   *d3 = 2;
 
   while (*d1 <= (n / 2) && !encontrado) {
       // Lógica para buscadivisor2
       encontrado = loEs(n, *d1, *d2, *d3);
 
       if (!encontrado) {
           (*d1)++;
       }
   }
}
 
void buscadivisor2(int num, int d1, int *d2, int *d3) {
   bool encontrado = false;
   *d2 = 2;
   *d3 = 2;
 
   while (*d2 <= (num / 2) && !encontrado) {
       // Lógica para buscadivisor3
       encontrado = loEs(num, d1, *d2, *d3);
 
       if (!encontrado) {
           (*d2)++;
       }
   }
}
 
void buscadivisor3(int num, int d1, int d2, int *d3) {
   bool encontrado = false;
   *d3 = 2;
 
   while (*d3 <= (num / 2) && !encontrado) {
       encontrado = loEs(num, d1, d2, *d3);
 
       if (!encontrado) {
           (*d3)++;
       }
   }
}
 
int main() {
   int num, divisor1, divisor2, divisor3;
 
   printf("Ingrese un número (-1 para salir): ");
   scanf("%d", &num);
 
   while (num != -1) {
       buscadivisor1(num, &divisor1, &divisor2, &divisor3);
 
       if (loEs(num, divisor1, divisor2, divisor3)) {
           printaExito(num, divisor1, divisor2, divisor3);
       } else {
           printaFracaso(num);
       }
 
       printf("Ingrese un número (-1 para salir): ");
       scanf("%d", &num);
   }
 
   return 0;
}

MOD: Etiqueta GeSHi

Eternal Idol:
Atika: por favor no hagas tareas ajenas, maxime cuando el usuario no lo pide ("¿Alguien puede indicarme algunos conceptos como cadena?").

Dumy: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Cadenas_de_caracteres

Navegación

[0] Índice de Mensajes