Jump to content
Sign in to follow this  
johny987

duvidas

Recommended Posts

johny987

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.

Share this post


Link to post
Share on other sites
HappyHippyHippo

que erros dá ... (tens de ter a noção que pouca gente tem pouco tempo para compilar o código, e eu não sou um deles)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Flinger

Se forem erros de compilação, coloca o output do compilador.

Se forem erros durante a execução, posta o output do teu programa.

Share this post


Link to post
Share on other sites
Flinger

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

Share this post


Link to post
Share on other sites
johny987

postei o programa errado... e sim tavam a  funcionar pk o terceiro tava como comment... 😳 shame on my self.... mas obrigada ja consegui resolver tudo :) )

Share this post


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
Sign in to follow this  

×
×
  • 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.