elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Algoritmo de numeros compuestos en: 14 Noviembre 2023, 23:31 pm
Hola de nyevo:

Estoy intentando codificar en C este algoritmo:


      
Código:
algoritmo  BuscaDivisoresMultiplicadosIgualesNumero
            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

Tengo la teoria de que en la prkmera oarte hay que yacer un bucle while que busque divisores, lo de printar  las cadenas  eso lo tengo solucionado, pero lo qye desconozco es como codificar el resto, el resultado, deberia dar un programa el cual te muestra 3 numeros que multiplicados entre si dan el numero introducido

¿Alguien puede ayudarme a codificar el algoritmo?
2  Programación / Programación C/C++ / Re: Contador en: 14 Noviembre 2023, 20:55 pm
Hola gracuas por responder, esa parte la solucione, ahora lo que tengo es problemas de entender oarametro de entrada y salida es una funcion
3  Programación / Programación C/C++ / Contador en: 7 Noviembre 2023, 18:02 pm
Hola

Alguien sabe el porque el contador no se incrementa?

Código
  1. printf("es tu turno jugador, se ha generado tu array y ahora vas a llenarlo \n");
  2.    printf("recuerda que has de usar numeros del 1 al 4\n");
  3.  
  4.    do {
  5.  
  6.  
  7.        printf("Introduce el entero del 1 al 4 numero %d: ",contador);
  8.        scanf("%d",&numero);
  9.  
  10.  
  11.        if((numero>=1)&&(numero<=4)) {
  12.  
  13.            printf("Introduce el entero del 1 al 4 numero %d: ",contador);
  14.            printf("\n");
  15.  
  16.            jugador[numeros];
  17.  
  18.            scanf("%d",&jugador[0]);
  19.            scanf("%d",&jugador[1]);
  20.            scanf("%d",&jugador[2]);
  21.            scanf("%d",&jugador[3]);
  22.            scanf("%d",&jugador[4]);
  23.            scanf("%d",&jugador[5]);
  24.            scanf("%d",&jugador[6]);
  25.            scanf("%d",&jugador[7]);
  26.            scanf("%d",&jugador[8]);
  27.            scanf("%d",&jugador[9]);          
  28.  
  29.        } else {
  30.  
  31.            printf("\n");
  32.            printf("B");
  33.            printf("\n");
  34.  
  35.        }
  36.  
  37.  
  38. contador +=1;
  39. |
4  Programación / Programación C/C++ / Re: Funcion que muestre aciertos y porcentaje en: 4 Noviembre 2023, 23:55 pm
Codificar una aplicación  en C que inicialmente generará una cantidad aleatoria de números no inferior a 5 ni superior a 10. Los números generados aleatoriamente podrán ser únicamente el 1, 2, 3 o el 4 y se almacenarán en un array.
Una vez guardados la aplicación indicará cuantos se han generado. En la captura como ves, se ve que se han generado y guardado 6 números enteros, que recordamos únicamente pueden ser valores enteros comprendidos entre el 1 y el 4:

31
Seguidamente empieza el turno del jugador. Se pedirá ahora al usuario la introducción de tantos números enteros comprendidos entre el 1 y el 4, como se hayan generado en el paso anterior:

32
Fíjate que se va indicando que número se está introduciendo, el primero, segundo… y que, por otro lado tal como se aprecia en la siguiente captura, en la cuarta introducción, en la que se introduce dos veces un número no comprendido entre el 1 y el 4, la aplicación pide por tanto la introducción de éste, hasta que se cumpla con lo especificado:

33
Una vez introducidos correctamente por el usuario todos los números, la aplicación indica cuantos se han acertado respecto a los generados aleatoriamente, y el porcentaje de acierto que se ha tenido:

34
En el siguiente paso se indica cuales, y en que posición se encuentran, los que se hayan acertado, y lo mismo seguidamente para los que se hayan fallado:

35

Finalmente se hace un resumen impreso de todas las posiciones de los dos arrays indicando, tanto lo generado, como lo introducido, como si lo introducido ha sido acertado o no:

36


Este es el codigo como lo tengo, lo que desconozco son los errores logicos que no lo hacen funcionar:


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<stdbool.h>

int numerosueuario () {

    int num3;
    printf("Introruce %d numeros del 1 y al 4: ",num3);
    scanf("%d",&num3);
}

int rango_numero () {

    int num, num3, f;
    int contador =0;
    int min = 1;
    int max = 4;

    while (contador <=10) {

        int i = 1;
        int *arrayjugador;
        arrayjugador = (int *)malloc(i*sizeof(int));
        free (arrayjugador);
        bool rango;

        printf("introduce un numero del 1 al 4: ");
        scanf("%d",&num3);

        if((num3 >= min)&&(num3<=max)) {

            rango = true;

            if (rango == true) {

                for(f=0; f<=10; f++) {
                    scanf("%d",&arrayjugador[f]);
                }
            }

            contador+=1;

        } else {
            printf("Introduce un numeto del 1 al 4");
            scanf("%d",&num3);
        }

    }

}

int mostrar_numeros_introducidos_ () {

    int f, num;
    int  *numeros_introducidos;
    int i = 1;
    numeros_introducidos = (int *)malloc(i* sizeof(int));
    free (numeros_introducidos);

    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[1]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[2]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[3]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[4]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[5]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[6]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[7]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[8]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[9]);
    printf("Introduce un numero: ");
    scanf("%d",&numeros_introducidos[10]);

    for(f=0; f<=10; f++) {

        printf("Ha introducido el numero: %d en la posición %d",numeros_introducidos[1],f);
    }

}

int pedir_numero_correcto () {

    int w,numero, posicion;
    bool correcto;

    posicion = 0;
    correcto = false;

    while (posicion <=10) {

        printf("Introduce un numero del 1 al 4: ");
        scanf("%d",&numero);

        if(numero<=4) {

            correcto = true;

            if (correcto == true) {

                posicion +=1;

                printf("Introduce el numero del 1 al 4,numero : %d",posicion);

            } else {

                posicion = posicion;
                printf("Introduce el numero del 1 al 4,numero : %d",posicion);

            }

        }

    }

}

int porcentaje_aciertos () {

    int f,aciertos,uno,dos, num, porcentaje, numeros_introducidos[num], arrayjugador[num];


    aciertos = 0;

    for(f = 0; f < num; f++) {

        uno = numeros_introducidos[f], dos = arrayjugador[f];

        if(uno == dos) {

            aciertos +=1;

        }

    }

    porcentaje = (aciertos / num) * 100;

    printf("Has acertado %d de: %d", aciertos,num);
    printf("Es el %d porciento",porcentaje);
}


int main (void) {

    int num,f;
    int min = 5;
    int max =10;

    srand(time(NULL));

    num =rand ()%(max - min + 1) + 5;

    int numerosaleatorios[num];

    for(f=0; f<=num; f++) {
        numerosaleatorios[f] =rand()%4+1;
    }

    printf("se han generado: %d numeros aleatorios",num);

//llamamos a las funciones de pedir numeros:

    int numerosueuario ();

    int rango_numero ();

    int mostrar_numeros_introducidos_ ();

    int pedir_numero_correcto ();

    int porcentaje_aciertos ();


}






 
5  Programación / Programación C/C++ / Funcion que muestre aciertos y porcentaje en: 4 Noviembre 2023, 21:19 pm
Hola de nuevo,

tengo este codigo:


int porcentaje_aciertos() {

    int f,aciertos,valordelarreglo,valordelotroarreglo, num, porcentaje, numeros_introducidos, arrayjugador;


    aciertos = 0;

    for(f = 0; f < num; f++) {

        valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador[f];

        if(valordelarreglo == valordelotroarreglo) {

            aciertos +=1;

        }

    }
   
    porcentaje = (aciertos / num) * 100;

printf("Has acertado %d de: %d", aciertos,num);
printf("Es el %d porciento",porcentaje);
}

que deberia mostrar aciertos y porcentajes, pero me da un error en la linia de: 
        valordelarreglo = numeros_introducidos[f], valordelotroarreglo = arrayjugador ¿ALguien puede decirme por que me dice que no es puntero ni array?
6  Programación / Programación C/C++ / Re: Omparacion de 2 arrays en: 2 Noviembre 2023, 15:15 pm
Entonces si te entendi bien:

for(int i=0; i<n_elem; ++i){
   if(array_1 != array_2) {
      iguales = false;

Con el for decimos empieza en la posicion 0 y acaba en la 10 y ckn el if decimos si la posicion (representada en la i), del array 1 no es igual a la posición i del array 2 entonces false
7  Programación / Programación C/C++ / Omparacion de 2 arrays en: 1 Noviembre 2023, 19:41 pm
Hola estaba por responder el otro tema con el mismo nombre, pero me salio una advertencia, asi que inicio nuevo tema:

Veran estoy intentando solventar esto:

Función “numeroNumeroAciertos”. Devuelve el número de aciertos que ha tenido el usuario.

Se trata de hacer 2 arrays que se deben comparar, tengo entendido que primero debes comparar su tamaño y luego valor a valor cada posición, esto es lo poco que he conseguido, lo que no condigo ss hacer la comparativa y 2 for anidados, algo que no entiendo del todo:

void numeros_de_aciertos() {

//elementos a comparar
//contador de aciertos aciertos
//comparación con if
//bucle

    int f, aciertos,arrayjugador[10],numeroaleatorio[10];

    aciertos = 1;

    int longituddelarreglo = sizeof(arrayjugador) / sizeof(arrayjugador[10]);
    int longituddelotroarreglo = sizeof(numeroaleatorio) / sizeof(numeroaleatorio[10]);

    if(longituddelarreglo !=longituddelotroarreglo) {

        printf("los arreglos no son iguales");

       
    }

}

Si alguien me explicara el procedemiento


8  Programación / Programación C/C++ / Re: Función pedir un a llenar un array en: 29 Octubre 2023, 14:28 pm
Hola de nuevo

Tengo este codigo:

int numeroaleatorio[10] = {1,2,4,3,3,2,4,1,2,1};
srand(time(NULL));//inicialización de los números aleatoriosint num,num2;
for(int f = 0; f<=10; f++) {
numeroaleatorio[f]=rand()%4;

}

Que debería rellenar el array con 10 números aleatorios del 0 al 4 pero necesito incluir un parámetro de entrada, que indique la posición de los números generados.

El caso es que tengo entendido que con el corchete inicias el array, pero no tengo claro como hacer lo del parámetro de entrada, que dictamina el orden
9  Programación / Programación C/C++ / Pasar a c en: 27 Octubre 2023, 20:31 pm
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?
10  Programación / Programación C/C++ / Re: Función pedir un a llenar un array en: 26 Octubre 2023, 23:01 pm
-Disculpa pero ¿a que te refieres con lo del indice?, ¿es el codigo que me pasas?, perdona las preguntas pero es la primera vez que leo al respecto
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines