Funcion que muestre aciertos y porcentaje
(1/1)
Dumy:
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?
MAFUS:
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.
Dumy:
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 ();
}
Navegación