Jump to content

duvidas


johny987

Recommended Posts

boas pessoal, eu tenho seguinte codigo:

#define PI 3.14159265358979323846
#include <math.h>
#include <stdio.h>


int bissexto(int ano)
{
int resultado;

if(ano%100==0){
  if(ano%400==0)
   resultado=1;
  if(ano%400!=0)
   resultado=0;
}

if(ano%100!=0){
  if(ano%4==0)
   resultado=1;
  if(ano%4!=0)
   resultado=0;
}
return resultado;
}


int dias(int mes, int ano)
{
int resultado;

if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
  resultado=31;
if(mes==4||mes==6||mes==9||mes==11)
  resultado=30;
if(mes==2)
  resultado=28+bissexto(ano);

                              

return resultado;
}

int numDias(int diaNasc, int mesNasc, int anoNasc, int mesAtual, int anoAtual)
{
  int resultado=0, mes, ano;

if(anoNasc<anoAtual)
  {
    resultado=resultado+dias(mesNasc,anoNasc)-diaNasc;
   for(mes=mesNasc+1;mes<=12;mes++)
    resultado=resultado+dias(mes,anoNasc);
   for(ano=anoNasc+1;ano<anoAtual;ano++)
    resultado=resultado+365+bissexto(ano);
   for(mes=1;mes<mesAtual;mes++)
    resultado=resultado+dias(mes,anoAtual);
   resultado=resultado+1;
  }
else if(anoNasc==anoAtual)
  {
    resultado=resultado+dias(mesNasc,anoNasc)-diaNasc;
   for(mes=mesNasc+1;mes<mesAtual;mes++)
     resultado=resultado+dias(mes,anoNasc);
   resultado=resultado+1;
  }  
  return resultado;
}

int diaPositivos( dias(mes,ano), double emo[], double fis[], double men[]){

  int i;
  int totalDias = dias( mes,ano);
    
  for(i=0; i<totalDias; i ++){

  if (emo[i]>0.0 && fis[i]>0.0)
  printf("%d\n", dias(mes, ano)); 
  else if (emo[i]>0.0 && men[i]>0.0)
  printf("%d\n", dias(mes, ano));
  else if (fis[i]>0.0 && men[i]>0.0)
  printf("%d\n", dias(mes, ano));
  }
  printf("\n");
}*/

/*biorritmo fisico*/
double fisico (int t)
{
  double fisico;

  fisico=sin((2*PI*t)/23)*10;

return fisico;
}

/*biorritmo emocional*/
double emocional (int t)
{
  double emocional;

  emocional=sin((2*PI*t)/28)*10;

return emocional;
}

/*biorritmo mental*/
double mental (int t)
{
  double mental;

  mental=sin((2*PI*t)/33)*10;

return mental;
}

#include <stdio.h>
int main(void)
{
  int t;/*numero de dias*/
  int i;/*contador*/
  int v[32];/*guarda o numero de dias de um mes*/
  int diaNasc;/*dia de nascimento*/
  int mesNasc;/*mes de nascimento*/
  int anoNasc;/*ano de nascimento*/
  int mesAtual;/*mes a analisar*/
  int anoAtual;/*ano do mes a analisar*/
  int opcao;/*opcao a executar*/
  int fis[32];
  int emo[32];
  int men[32];

  /*le e imprime a data de nascimento, fornecida pelo utilizador*/    
  printf("Introduza a sua data de nascimento\n");
  scanf("%d%d%d",&diaNasc,&mesNasc,&anoNasc);
  printf("\n");

  /*le e imprime o mes a analisar*/
  printf("introduza o mes a analisar\n");
  scanf("%d%d",&mesAtual,&anoAtual);
  printf("\n");
       

  opcao = 1;

  
  while (opcao!=0){

  printf("Bem vindo ao calculador de biorritmos\n"
         "Menu:\n"
          "1-Numero de dias decorridos desde a data de nascimento\n"
          "2-Tabela de biorritmos para o mes\n"
          "3-Dias positivos no mes\n"
          "4-Dias maximos no mes\n"
          "5-Dias nulos no mes\n"
          "6-Dias negativos no mes\n"
          "7-Grafico das classificaçoes dos dias do mes\n"
          "8-Introduzir novos valores\n"
          "0-Terminar\n\n");
   
  
  printf("Selecione uma opcao: ");

    
  scanf("%d",&opcao);

    switch(opcao){

     case 1:
       printf("\n%d dias\n\n",numDias(diaNasc, mesNasc, anoNasc, mesAtual, anoAtual));
     break;

     case 2:
       printf("Biorritmos do mes %d %d\n",mesAtual, anoAtual);
        printf("         dia      fisico   emocional      mental\n");

       for(i=1;i<=dias(mesAtual,anoAtual);i++){
         t=numDias(diaNasc, mesNasc, anoNasc, mesAtual, anoAtual);
         v[i]=i;
         fis[i]=fisico(t+i-1);
         emo[i]=emocional(t+i-1);
         men[i]=mental(t+i-1);
         for (i = 0; i < 32; i++)
         printf("%12d%12.5d%12.5d%12.5d\n",v[i],fis[i],emo[i],men[i]);
       }
       printf("\n");
    }
return 0;
}
}
   case 3:

 printf("%d\n",diaPositivos( dias( mes, ano) emo, fis, men))); 
	 printf("\n");
 break;

default:
 printf( "opcao nao implementada\n")

 return 0;
}

são as primeiras 3 funções de um programa de bioritmos, e a primeiro opção funciona bem, a segunda dame valore grandes e inteiros em vez de me apareçer com casas decimais, bem e a terçeira ta a dar erros e não consigo perceber do que se trata. agradeço desde ja a vossa ajuda.

Link to post
Share on other sites

Fiz copy/past do te código para um ficheiro c e descobri 2 gatos, assim à cabeça:

1- Tens um "*/" perdido no código que postaste. (no fim da função diasPositivos)

2 - O teu case: 3 está fora do switch() e do while(). Verifica as '{}' EDIT: Aliás, está mesmo fora da main()

EDIT2: Ui dizes tu que as 2 primeiras estão a funcionar?

**** Build of configuration Debug for project teste ****

make all 
Building file: ../src/teste.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/teste.d" -MT"src/teste.d" -o"src/teste.o" "../src/teste.c"
Finished building: ../src/teste.c

Building file: ../src/teste2.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/teste2.d" -MT"src/teste2.d" -o"src/teste2.o" "../src/teste2.c"
../src/teste2.c:75: error: expected ‘)’ before ‘(’ token
../src/teste2.c: In function ‘main’:
../src/teste2.c:184: error: incompatible types in assignment
../src/teste2.c:185: error: incompatible types in assignment
../src/teste2.c:186: error: incompatible types in assignment
../src/teste2.c:187: error: incompatible types in assignment
../src/teste2.c:189: warning: format ‘%12d’ expects type ‘int’, but argument 2 has type ‘int *’
../src/teste2.c:189: warning: format ‘%12.5d’ expects type ‘int’, but argument 3 has type ‘int *’
../src/teste2.c:189: warning: format ‘%12.5d’ expects type ‘int’, but argument 4 has type ‘int *’
../src/teste2.c:189: warning: format ‘%12.5d’ expects type ‘int’, but argument 5 has type ‘int *’
../src/teste2.c:204: warning: control reaches end of non-void function
make: *** [src/teste2.o] Error 1

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.