Me da un error en una llave de cierre, que pasa?

Iniciado por Anastacio, 29 Febrero 2012, 02:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Anastacio

#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
You, stop to close my post, you were novice too!!!!!!!!!!!!

x64core

en la primera vista:

    do{
    do{


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

Anastacio

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.
You, stop to close my post, you were novice too!!!!!!!!!!!!

x64core

naa... ya me fije el ultimo if le faltaba y te faltaba el ';' al primer while

#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;

}   

m0rf

Si todos fuéramos igual de inteligentes no existiría la mediocridad porque no podríamos apreciarla. Aprecias la mediocridad?

rir3760

No es necesario. Basta con incluir el encabezado <stdlib.h>.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Anastacio

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.
You, stop to close my post, you were novice too!!!!!!!!!!!!