Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Dumy en 7 Noviembre 2023, 18:02 pm



Título: Contador
Publicado por: Dumy 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. |


Título: Re: Contador
Publicado por: whitevision en 8 Noviembre 2023, 02:17 am
Hola, que estas tratando de hacer, no entiendo tu codigo.
Donde termina el while del do.
Salu2.


Título: Re: Contador
Publicado por: Tachikomaia en 8 Noviembre 2023, 06:26 am
No parece que hayas puesto hasta cuando se repite el do. Al final has puesto
| en vez de }. Además se supone que debes poner una condición, pero quizá en tu lenguaje no, no sé mucho de él. ¿No te dió un mensaje de error el compilador/intérprete?

Algunas dudas:

¿Qué hace esto?
printf("Introduce el entero del 1 al 4 numero %d: ",contador);
¿Imprime ese texto y le agrega la variable contador? Por ejemplo si contador es 8 imprime:
Introduce el entero del 1 al 4 numero %d: 8
¿Eso? Si yo fuera el jugador, no sé bien qué es eso. Además en el código no has definido contador, no sé si no lo has copiado porque es obvio o lo estás definiendo ahí o te olvidaste de copiarlo o de definirlo, o qué.

¿Y esto?
jugador[numeros];

Tu código parece incompleto, en fin...


Título: Re: Contador
Publicado por: Dumy 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


Título: Re: Contador
Publicado por: MAFUS en 14 Noviembre 2023, 22:56 pm
Sencillo: los elementos que van entre paréntesis en una función son los parámetros de entrada. El valor que retorna la función es el valor de salida.

Supongamos una función muy sencilla que lleve un parámetro de entrada y devuelva algo.

Código:
int mi_funcion(int entrada) {
    int retval;
    retval = entrada;
    return retval;
}

Esta función recoge un entero por 'entrada', una vez que lo tiene simplemente lo asigna la variable 'retval' y devuelve el dato que hay guardado en la variable 'retval'.

¿Cómo usarla?

Así:
Código:
int numero = mi_funcion(5);
printf("El valor de 'numero' es %d\n", numero);

Se llama a la función pasándole un entero, aquí 5; el funcionamiento del la función te lo he comentado antes. Finalmente la variable 'numero' recoge el entero que ha devuelto mi_funcion y lo imprime.


Título: Re: Contador
Publicado por: Atika en 11 Diciembre 2023, 22:53 pm
Parece que hay un problema con la lógica del bucle. El contador se está incrementando correctamente, pero hay un bucle  do-while que se ejecuta sin tener en cuenta las entradas del usuario.

Parece que estás tratando de solicitar al usuario que ingrese un número del 1 al 4 repetidamente, pero luego estás leyendo un conjunto fijo de números en lugar de utilizar la entrada del usuario.

Aquí tienes el código corregido haber si te sirve:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    int contador = 1;
  5.    int jugador[10];
  6.  
  7.    printf("Es tu turno, jugador. Se ha generado tu array y ahora vas a llenarlo.\n");
  8.    printf("Recuerda que has de usar números del 1 al 4.\n");
  9.  
  10.    while (contador <= 10) {
  11.        printf("Introduce el entero del 1 al 4 número %d: ", contador);
  12.        int numero;
  13.        scanf("%d", &numero);
  14.  
  15.        if (numero >= 1 && numero <= 4) {
  16.            jugador[contador - 1] = numero;
  17.            contador++;
  18.        } else {
  19.            printf("\nHas introducido un número fuera del rango. Introduce un número del 1 al 4.\n");
  20.        }
  21.    }
  22.  
  23.    printf("\nValores introducidos por el jugador:\n");
  24.    for (int i = 0; i < 10; ++i) {
  25.        printf("%d ", jugador[i]);
  26.    }
  27.    printf("\n");
  28.  
  29.    return 0;
  30. }

MOD: Etiqueta GeSHi


Título: Re: Contador
Publicado por: D3s0rd3n en 14 Diciembre 2023, 00:46 am
Supongo que hay mas codigo. Para empezar creo que te falto incluir "while al inicio del ciclo y se me hace un milagro que el compilador no te eeste regañando. Estas usando C17?

Y aparte contador += 1; esta a fuera del ciclo entonces solo se sumara una vez terminada la ejecucion, no en cada vuelta que es lo que creo que quieres. Solo subelo y asegurate que este andentro de los corchetes de tu ciclo.

Tambien es mejor cuando incrementas de uno usar operador de incrementacion. Osea contador++.


Título: Re: Contador
Publicado por: Sadistski en 27 Diciembre 2023, 04:13 am
un pequeño dato con printf: Si ocupa más de 2 líneas podemos saltar el escribir printf dos veces, similar a como se usa con las macros #

Código
  1. printf("dos lineas"\
  2. "o más"\
  3. "seguidas");
  4.