Programa em C naum funciona direito

Iniciado por NanukeX, 07 de Abril de 2008, 18:46

tópico anterior - próximo tópico

NanukeX

     Seguinte pessoal, fiz um pequeno programa em C pra me ajudar na metria de Projetos da faculdade, mas no linux ele tha dando um problemas na opção 2, mas pra windows com o Dev c++ ele funciona 100%, gostaria se possivel que alguem me ajudasse ok, para fazer um teste com o programa entre com as seguintes informações como exemplo:

Investimento: 48700
Ano: 4
Taxa: 15
Fluxo 1: 24900
Fluxo 2: 24900
Fluxo 3: 21150
Fluxo 4: 29500

Até ai em ambos funciona 100%, mas o problema esta na opção 2 que não esta armazenando os dados necessário.


Segue o programa :


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

#define MAX 10

void menu()
{
    printf("------------------------------------------");
    printf("\n\n1- Entrar com os dados financeiros\n");
    printf("2- Calcular PVs,TMR,IL\n");
    printf("3- Calcular PayBack\n");
    printf("4- Calcular TIR\n");
    printf("5- Sair\n\n");
    printf("------------------------------------------");
}



/******************************************************************************/
void calculo_taxas(float *taxa_auxf,float i, short int n)
{

   float taxa_o, taxa_aux;
   short int x,j;
   
   taxa_o=1+i;
   
    for(x=0;x<n;x++)
    {
       j=1;
       taxa_aux=taxa_o;
           
         if (x==0) taxa_auxf
  • =taxa_o;
               else{
                    do{
                       taxa_aux*=taxa_o;
                       j++;
                   }while (j<=x);   
             }
          taxa_auxf
  • =taxa_aux;
        }   
       return;
    }
    /******************************************************************************/
    float calculo_PVi(float *taxa_auxf,short int n, float *PV,float *Fluxo)
    {
        short int x=0;
        float soma_PV=0; 
            for(x=0;x<n;x++){
                PV
  • =Fluxo
  • /taxa_auxf
  • ;
                soma_PV+=PV
  • ;         
            }
        return soma_PV;
    }
    /******************************************************************************/
    int main(void)
    {
       
        float VPL,TMR,Invest,PV[MAX],i,taxa_auxf[MAX],Fluxo[MAX],soma_PV,soma_flux,IL;
        short int n,x,op,flag=0;
        char tecla;
       
       
    do{ 
           
        system("clear");
        menu();
       
        printf("\n\nOpcao: "); scanf("%d",&op);
        fflush(stdin);
       
        switch (op){
            case 1:{
               
                soma_flux=0;
                VPL=0;
                IL=0;
                system("clear");
                printf("Valor do Investimento: "); scanf("%f",&Invest);
                fflush(stdin);
                printf("Anos: "); scanf("%d",&n);
                fflush(stdin);
                printf("Taxa: "); scanf("%f",&i); i=i/100;
                fflush(stdin);
               
                for(x=0;x<n;x++){
                    printf("%d ° fluxo: ",x+1); scanf("%f",&Fluxo
  • );
                    fflush(stdin);
                    soma_flux+=Fluxo
  • ;
                }           
              flag=1;
            } break;
            case 2:{
               
                if (flag==1){
                system("clear");
                calculo_taxas(taxa_auxf,i, n);
                soma_PV=calculo_PVi(taxa_auxf,n,PV,Fluxo);
                for(x=0;x<n;x++)
                    printf("\n %d PV: %7.2f",x+1,PV
  • );
               
                printf("\n\nSoma dos PVS foi de :%7.2f",soma_PV);
                VPL=(-Invest+soma_PV);
                printf("\n\nInvestimento %7.2f + %7.2f Soma PVs\n\nVPL= %7.2f",-Invest,soma_PV,VPL);
                TMR=( ((soma_flux/n)/Invest)*100 );
                IL=(soma_PV/Invest);
                printf("\n\nSoma dos Fluxo %7.2f",soma_flux);
                printf("\n\n TMR: %7.2f%% ", TMR);
                printf("\n\n IL: %7.2f", ((soma_PV)/Invest) );
                fflush(stdin);
                tecla=getchar();
                }
                else{
                      printf("Sem entrada de dados financeiros !!!!");
                      fflush(stdin);
                      tecla=getchar();
                }
            } break;
            case 3:{
                 
                 } break;
            case 4:{
                        printf("Entre com a taxa"); scanf("%f",&i); i=i/100;
                        calculo_taxas(taxa_auxf,i,n);
                        soma_PV=calculo_PVi(taxa_auxf,n,PV,Fluxo);
                        VPL=(-Invest+soma_PV);
                        printf("VPL %7.2f: ", VPL);
                        fflush(stdin);
              tecla=getchar();
                 
                 }break;
            case 5:break;
           
           
           
        }
       
       
         
    }while (op!=5);
     
        return 0;
       
    }

NanukeX

   Seguinte pessoal, achei o erro, ele estava na leitura do n, que estava com %d e o certo para short int seria de %hi

crashoverhead

Bom dia, sou novo no fórum e aqui na parte de programação. Deixa eu t fazer uma pergunta.  + no linux pode usar o Fflush ou tem q usar o fpurge no caso q vc usou? obrigado!
If i die tomorrow,
i'd be all right because i belive
that after we're gone
The Spirit Carries On..
Dream Theater - Spirit Carries On.