Ayuda en C con if y else

Veran. Estoy haciendo un pequeño programa que me lea una fecha y diga la fecha del dia siguiente y no puedo terminarlo debido a un else que me da "misplaced else" y yo lo veo todo bien.

#include <stdio.h>
#include <conio.h>
int dia, mes, ano, max;
main () {

printf ("dia:");
scanf ("%d", &dia);
printf ("mes:");
scanf ("%d", &mes);
printf ("ano:");
scanf ("%d", &ano);
if
  (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
  max = 31;
  else
    if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
max = 30;
     else
          if (dia <= max);
          (dia ++);
          printf("\ndia: %d\n", dia);
          printf("mes: %d\n", mes);
          printf("ano: %d", ano);
          else
             if (dia == max);
             (dia = 1);
             (mes++);
             printf("\ndia: %d\n", dia);
             printf("mes: %d\n", mes);
             printf("ano: %d", ano);

          getch();
          }


Es el ultimo else el del problema gracias a quien me pudiera ayudar.
Creo haber dado con el error aunque no estoy seguro porque hace 6 años que no toco C. Donde pone:

else
if (dia <= max);

te sobra el ';' que hay detrás del paréntesis y luego si los 3 printf que hay a continuación están dentro de ese if creo recordar que los tenías que meter dentro de { } de lo contrario siempre te mostrarán el contenido de las variables dia, mes y año y no cuando se cumpla la condición. Si sólo tenías una sentencia dentro del if/else/while... no hacía falta. Prueba a ver.
No ha servido, me sigue dando el error, pero gracias igual.
tenias un ';' despues de un if, por eso te daba ese error: no encontraba el if hermano del else.

   
    #include <stdio.h>
    #include <conio.h>
    int dia, mes, ano, max;
    main () {

    printf ("dia:");
    scanf ("%d", &dia);
    printf ("mes:");
    scanf ("%d", &mes);
    printf ("ano:");
    scanf ("%d", &ano);

    if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
    {
      max = 31;
    }
    else
    {
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11)
        {
              max = 30;
        }
        else
        {
              if (dia <= max)
              {
                     (dia ++);
                      printf("\ndia: %d\n", dia);
                      printf("mes: %d\n", mes);
                      printf("ano: %d", ano);
              }
              else
              {
                 if (dia == max)
                 {
                      (dia = 1);
                      (mes++);
                      printf("\ndia: %d\n", dia);
                      printf("mes: %d\n", mes);
                      printf("ano: %d", ano);
                  }
              }
         }
     }
     getch();
}



un saludo.
Si te sirve de consejo, intenta poner siempre las llaves en los if/else y resto de estructuras que lo requieran, ya que esos errores suelen ser frecuentes, y además así coges el hábito y evitas fallos como el de el ; despues del if.
Cómo bien dice Korso10, el uso de las llaves es muy recomendable hasta que empieces a controlar el lenguaje.

Ej:
if (.....)
  {
  }
else
  {
  if (....)
    {
    }
  }

Además si a esto le unes una buena indentación, verás que es mucho más fácil saber donde empieza y acaba cada bloque de código y te facilita mucho la vida.
5 respuestas