Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Anastacio en 29 Febrero 2012, 02:23 am



Título: Me da un error en una llave de cierre, que pasa?
Publicado por: Anastacio en 29 Febrero 2012, 02:23 am
Código:
#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
    int num1;
    int num2;
    int c;
    int resultadojugador;
    int resultado;
    int repetidor;
    int vida;
    int nivel;
    int contador;
    int operacion;
    operacion = 0;
    num1 = 0;
    num2 = 0;
    repetidor = 0;
    resultadojugador = 0;
    contador = 0;
    nivel = 0;
    vida = 5;
    resultado = 0;
    c = 0;
    system("color F1");
    printf("Este programa prueba su Habilidad con las matematicas.\n");
    printf("Elija un nivel\n");
    printf("1.Facil\n");
    printf("2.Medio\n");
    printf("3.Dificil\n");
    scanf("%d",&c);
 
    if(c == 1)
    {
    nivel = 10;
 
    }
    if(c == 2)
{
    nivel = 50;
   
    }
    if(c == 3)
    {
    nivel = 100;
    }
   
         
    srand( (unsigned)time( NULL ) );
    num1 = rand() % nivel;
    num2 = rand() % nivel;
    getchar();
    printf("Con que desea comenzar\n");
    printf("1.Suma\n");
    printf("2.Resta\n");
    printf("3.Multiplicacion\n");
    printf("4.Division\n");
    scanf("%d",&operacion);
    do{
    do{
    if(operacion == 1)
     {
 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nSume los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 + num2;
     
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
      }
   
 
   
    if(operacion == 2)
    {
                 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nReste los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 - num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
       
     }
     if(operacion == 3)
     {
                 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nMultiplique los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 * num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
       
    }
    if(operacion == 4)
    {
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nDivide los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 / num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
        }while(vida < 0, contador < 10)
        printf("Deseas continuar, presiona 1. Si quieres salir, 2");
        scanf("%d",&repetidor);
        }while(repetidor == 1);

return 0;

}   
   
   
 

Me da un toco de errores por la ultima llave, la de cierre del programa.
  expected `}' at end of input
 expected `;' at end of input
  expected `)' at end of input
 expected `(' at end of input
  expected `while' at end of input

Porque exactamente me dice esto?

sospecho de los do while, me he armado un lio para intentar que funcionen, sospecho que asi estan bien, pero tambien pueden estar mal.

Me dan una mano?
gracias de antemano


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: x64core en 29 Febrero 2012, 02:49 am
en la primera vista:

Código:
    do{
    do{

que se supone que es eso?
la ultima llave es el cierre de uno de esos do...
usa los tabuladores


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: Anastacio en 29 Febrero 2012, 03:05 am
O sea que si pongo una llave mas se soluciona?

con los dos do seguidos intente meter un do dentro de otro, pero me parece que eso no se puede hacer, igual probe.

No se me ocurrio otra manera de hacer que vuelva al comienzo de diversas maneras. Saludos y gracias de antemano.


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: x64core en 29 Febrero 2012, 03:12 am
naa... ya me fije el ultimo if le faltaba y te faltaba el ';' al primer while

Código:
#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
    int num1;
    int num2;
    int c;
    int resultadojugador;
    int resultado;
    int repetidor;
    int vida;
    int nivel;
    int contador;
    int operacion;
    operacion = 0;
    num1 = 0;
    num2 = 0;
    repetidor = 0;
    resultadojugador = 0;
    contador = 0;
    nivel = 0;
    vida = 5;
    resultado = 0;
    c = 0;
    system("color F1");
    printf("Este programa prueba su Habilidad con las matematicas.\n");
    printf("Elija un nivel\n");
    printf("1.Facil\n");
    printf("2.Medio\n");
    printf("3.Dificil\n");
    scanf("%d",&c);
 
if(c == 1)
{
nivel = 10;
}
if(c == 2)
{
nivel = 50;
}
if(c == 3)
{
nivel = 100;
}
   
         
    srand( (unsigned)time( NULL ) );
    num1 = rand() % nivel;
    num2 = rand() % nivel;
    getchar();
    printf("Con que desea comenzar\n");
    printf("1.Suma\n");
    printf("2.Resta\n");
    printf("3.Multiplicacion\n");
    printf("4.Division\n");
    scanf("%d",&operacion);
    do
    {
do
{
if(operacion == 1)
{
 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nSume los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 + num2;
if(resultadojugador == resultado)
     {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
     }
     if(resultadojugador != resultado)
     {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
     }
}
    if(operacion == 2)
    {
                 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nReste los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 - num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
       
     }
     if(operacion == 3)
     {
                 
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nMultiplique los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 * num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
       
    }
    if(operacion == 4)
    {
        printf("\nEl primer numero es\n%d",num1);
        printf("\nEl segundo entero es\n%d",num2);
        printf("\nDivide los dos numeros y escriba el resultado\n");
        scanf("%d",&resultadojugador);
        resultado = num1 / num2;
       
        if(resultadojugador == resultado)
        {
                            printf("Has ganado\n");
                            contador = contador + 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            getchar();
        }
        if(resultadojugador != resultado)
        {
                            printf("Has perdido\n");
                            contador = contador + 1;
                            vida = vida - 1;
                            printf("Numero de vidas restantes\n%d\n",vida);
                            printf("El resultado correcto era\n%d", resultado);
                            getchar();
        }
    }
     }while(vida < 0, contador < 10);
        printf("Deseas continuar, presiona 1. Si quieres salir, 2");
        scanf("%d",&repetidor);
        }while(repetidor == 1);

return 0;

}   


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: m0rf en 29 Febrero 2012, 06:42 am
Como es que incluyes windows.h?


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: rir3760 en 29 Febrero 2012, 06:53 am
No es necesario. Basta con incluir el encabezado <stdlib.h>.

Un saludo


Título: Re: Me da un error en una llave de cierre, que pasa?
Publicado por: Anastacio en 1 Marzo 2012, 02:16 am
Gracias, primero me daba siempre el mismo numero, luego puse rand dentro de el segundo do y no hay problema, me falta ponerle un par de variantes float a la division.