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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion que muestre aciertos y porcentaje
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion que muestre aciertos y porcentaje  (Leído 1,487 veces)
Dumy

Desconectado Desconectado

Mensajes: 17


Ver Perfil
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?


En línea

MAFUS


Conectado Conectado

Mensajes: 1.603



Ver Perfil
Re: Funcion que muestre aciertos y porcentaje
« Respuesta #1 en: 4 Noviembre 2023, 21:38 pm »

arrayjugador y numeros_introducidos son escalares, no arreglos.

Creo que entiendo lo que quieres hacer, pero sería más fácil si dieras el enunciado del problema.


En línea

Dumy

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Funcion que muestre aciertos y porcentaje
« Respuesta #2 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 ();


}






 
« Última modificación: 4 Noviembre 2023, 23:57 pm por Dumy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines