Jump to content
Fórum Script Brasil
  • 0

Ajuda iniciante em C


thay__

Question

Começei a tentar aprender C sozinha está semana, mas estou com dúvida neste exercício:

Fazer um programa que leia uma data qualquer (dia, mês e ano) e calcule a data do próximo dia.

Escrevi o programa assim

#include<stdio.h>
#include<math.h>

int main(){
int d,m,a;
printf("Digite a data desejada no formato(dia/mes/ano): ");
scanf ("%d/%d/%d", &d, &m, &a);
  if( m==01|| m==03 || m==05 || m==07 || m==08 || m==10 ){
    if ( d==31)
    (d=01, m++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
    else
    (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
   }

  if (m==04 || m==06 || m==09 || m==11){
    if (d==30);
     (d=01, m++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
    else
      (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
     }
  else{
    if (a%4==0){ /*Ano bissexto*/
      if ( d==29)
       (d=01, m=03);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
      else
       (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
     }
    else{
      if ( d==28)
      (d=01, m=03);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
      else
      (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
     }

  }
return 0;
}

E deram esses erros:

|8|error: invalid digit "8" in octal constant|

||In function 'main':|

|12|error: expected '}' before 'else'|

|17|error: expected identifier or '(' before 'if'|

|17|error: invalid digit "9" in octal constant|

|25|error: expected identifier or '(' before 'if'|

|44|error: expected identifier or '(' before 'return'|

|45|error: expected identifier or '(' before '}' token|

Mas não entendi oque está errado... Alguém pode ajudar?

Edited by thay__
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Quando você escreve um numero comecando com o (zero) está dizendo ao compilador que a base desse numero é octal, ou seja, pode representar numeros de 0 a 7.

Então você não pode fazer 08 porque vai dar erro.

Quando quiser representar numeros na base decimal apenas escreva sem o zero na frente, exemplo: 1,2,3...etc

Em alguns pontos do seu programa você escreveu if terminando com ';' isso causa erro nos blocos de decisão.

você pode terminar um if com ';', isso não é problema desde que a logica esteja correta.

Por exemplo:

Esse if esta errado:

if ( d==31)
    (d=01, m++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
    else
    (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
O correto seria
if ( d==31)
       {
       d=01;
       m++;
       printf("A data do proximo dia é: %d/%d/%d", d, m, a);
       }
    else
       {
       (d++);
       printf("A data do proximo dia é: %d/%d/%d", d, m, a);
       }

Tenta encontrar os outros erros e se precisar de ajuda é só falar.

Link to comment
Share on other sites

  • 0
Quando você escreve um numero comecando com o (zero) está dizendo ao compilador que a base desse numero é octal, ou seja, pode representar numeros de 0 a 7.

Então você não pode fazer 08 porque vai dar erro.

Quando quiser representar numeros na base decimal apenas escreva sem o zero na frente, exemplo: 1,2,3...etc

Em alguns pontos do seu programa você escreveu if terminando com ';' isso causa erro nos blocos de decisão.

você pode terminar um if com ';', isso não é problema desde que a logica esteja correta.

Por exemplo:

Esse if esta errado:

if ( d==31)
    (d=01, m++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
    else
    (d++);
        printf("A data do proximo dia é: %d/%d/%d", d, m, a);
O correto seria
if ( d==31)
       {
       d=01;
       m++;
       printf("A data do proximo dia é: %d/%d/%d", d, m, a);
       }
    else
       {
       (d++);
       printf("A data do proximo dia é: %d/%d/%d", d, m, a);
       }

Tenta encontrar os outros erros e se precisar de ajuda é só falar.

beautiful solution kkk

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...