Título: Funcion que muestre aciertos y porcentaje Publicado por: Dumy 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? Título: Re: Funcion que muestre aciertos y porcentaje Publicado por: MAFUS 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. Título: Re: Funcion que muestre aciertos y porcentaje Publicado por: Dumy 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 (); } |