1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Ajuda]Organizar um programa

Discussão em 'Programação' iniciada por Patrick_maura, 8 de Junho de 2008. (Respostas: 5; Visualizações: 691)

  1. Patrick_maura

    Patrick_maura Power Member

    Ainda falta um pouco para terminar o programa, no entanto como ele é um pouco extenso tá a ficar muito confuso.

    Não tenho muita pratica e a verdade é que tenho muitas duvidas a estruturar um programa.

    o programa é este:

    Código:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    //INPUT DO PROGRAMA
    
        struct data{//dados pessoais dos proponentes
            int dia;
            int mês;
            int ano;
        };
    
        struct pagamentos{//serviços a que od proponentes pretendem aderir
            int agua;
            int luz;
            int gas;
        };
        struct produtos{
            int cartao_c;
            int cartao_d;
            int B_online;
            struct pagamentos dom_pp;
        };
    
        struct dados_emprestimo{
            int finalidade;//dados referentes ao emprestimo
            int destino_habitação;
            int garagem_parq;
            int localização;
            int condição_def;
            int num_prop;//dados pessoais dos proponentes
            char nome[35];
            struct data data_nasc;
            struct data data_nasc2;
            struct data data_actual;
            int agregado;
            int rend_anual_bruto;
            int rend_anual_bruto2;
            int enc_mensal;
            int conta_pouhab;
            int taxa_juro;
            int seguro_vida;//serviços a que os proponentes pretendem aderir
            int num_pessoas;
            int seg_multiriscos;
            int dom_rend;
            struct produtos prod_serv;
            int valorestimado;//dados do imovel
            int valorcompra;
            int valorpatri;
            int emprestimo;
            int prazo;
            int num_serv;
            int anos_emprestimo;
        };
    
    //função que pede ao utilizador os dados e guarda a resposta na estrutura
    
        void dados_emprestimo emprestimo(dados_emprestimo*dad){
            (*dad).num_serv=0;
            (*dad).rend_anual_bruto2=0;
            
            //DADOS REFERENTES AO EMPRESTIMO
            do{
                printf("Data Actual(Ano):\n");
                scanf("%d",&dad->data_actual.ano);
            }while(dad->data_actual.ano<2008|| dad->data_actual.ano>2020);
                
            do{
                printf("Data Actual(Mês):\n");
                scanf("%d",&dad->data_actual.mês);
            }while(dad->data_actual.mês<1 || dad->data_actual.mês>12);
    
            do{
                printf("Data Actual(Dia):\n");
                scanf("%d",&dad->data_actual.dia);
            }while(dad->data_actual.dia<1 || dad->data_actual.dia>31)//validação mais simples
            
    
            printf("\nDados referentes ao emprestimo:\n");
            do{
                printf("Finalidade do Emprestimo (1-Compra, 2-Construção, 3-Obras)");
                scanf("%d",&dad->finalidade);
            }while(dad->finalidade<1 || dad->finalidade>3);
    
            do{
                printf("Destino da Habitacao (1-Habitacao Propria Permanente, 2-Habitacao secundaria, 3-Habitação para Arrendamento)");
                scanf("%d",&dad->destino_habitação);
            }while(dad->destino_habitação<1 || dad->destino_habitação>3);
    
            do{
                printf("Garagem/Parqueamento(1-Sim, 0-Nao)");
                scanf("%d",&dad->garagem_parq);
            }while(dad->garagem_parq<0 || dad->garagem_parq>1);
    
            do{
                printf("Localizacao do Imovel(1-Continente, 2-Regioes Autonomas)");
                scanf("%d",&dad->localização);
            }while(dad->localização<1 || dad->localização>2);
    
            do{
                printf("Tem condicao de deficiente e pretende um credito para deficientes(1-Sim, 0-Nao)");
                scanf("%d",&dad->condição_def);
            }while(dad->condição_def<0 || dad->condição_def>1);
    
            //DADOS PESSOAIS DOS PROPONENTES
    
                printf("\nDados pessoais dos Proponentes\n")
            do{
                printf("Numero de proponentes (1 ou 2)");
                scanf("%d",&dad->num_prop);
            }while(dad->num_prop<1 || dad->num_prop>2);
    
            // APENAS 1 PROPONENTE
    
            printf("Nome (1.º proponente):\n");
            gets(dad->nome);
    
            do{
                printf("Data de Nascimento (1.º proponente)(Ano):\n");
                scanf("%d",&dad->data_nasc.ano);
            }while(dad->data_nasc.ano<1920 || dad->data_nasc.ano>2000);//ver melhor datas
                
            do{
                printf("Data de Nascimento (1.º proponente)(Mês):\n");
                scanf("%d",&dad->data_nasc.mês);
            }while(dad->data_nasc.mês<1 || dad->data_nasc.mês>12)
    
                /*int numeroDeDias(int ano, int mes) {
      if(mes == 2 || mes == 4 || mes == 6 || mes == 9 || mes == 11) return 30;
      else if(mes == 2) return bissexto(ano) ? 29 : 28;
     else return 31;*/
    
            do{
                printf("Data de Nascimento (1.º proponente)(Dia):\n");
                scanf("%d",&dad->data_nasc.dia);
            }while(dad->data_nasc.dia<1 || dad->data_nasc.dia>31)//validação mais simples
            
    
            //2.º PROPONENTE
            if(dad->num_prop=2){
            
                do{
                    printf("Data de Nascimento (2.º proponente) (Ano):\n");
                    scanf("%d",&dad->data_nasc2.ano);
                }while(dad->data_nasc.ano<1920 || dad->data_nasc2.ano>2000);//ver melhor datas
                
                do{
                    printf("Data de Nascimento (2.º proponente)(Mês):\n");
                    scanf("%d",&dad->data_nasc2.mês);
                }while(dad->data_nasc.mês<1 || dad.data_nasc2.mês>12)
    
                do{
                    printf("Data de Nascimento (2.º proponente)(Dia):\n");
                    scanf("%d",&dad->data_nasc2.dia);
                }while(dad->data_nasc.dia<1 || dad->data_nasc.dia>31)//validação mais simples
            }
        
    
            printf("Agregado familiar (n.º de pessoas):\n");
            scanf("%d",&dad->agregado);
    
            printf("Rendimento anual bruto do 1.º proponente (euros):\n");
            scanf("%d",&dad->rend_anual_bruto);
    
            if(dad->num_prop=2){
                printf("Rendimento anual bruto do 2.º proponente (euros):\n");
                scanf("%d",&dad->rend_anual_bruto2);
            }
    
            printf("Encargo mensal com outros creditos (euros):\n");
            scanf("%d",&dad->enc_mensal);
    
            do{
                printf("Utiliza conta poupanca-habitacao (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->conta_pouhab);
            }while(dad->conta_pouhab<0 || dad->conta_pouhab>1);
    
            do{
                printf("Taxa de juro (1-Indexada á Euribor a 3 meses, 2-Indexada á Euribor a 6 meses, 3-Taxa fixa a 2 anos, 4-Taxa fixa a 3 anos, 5-Taxa fixa a 5 anos, 6-Taxa fixa a 10 anos, 7-Taxa fixa a 15 anos, 8-Taxa fixa a 20 anos, 9-Taxa fixa a 25 anos, 10-Taxa fixa a 30 anos, 11-Taxa fixa a 35 anos, 12-Taxa fixa a 40 anos):\n")
                scanf("%d",&dad->taxa_juro);
            }while(dad->taxa_juro<1 || dad->taxa_juro>12);
    
            if(dad->taxa_juro==3)//SE FOR 1 OU 2 QUANTOS SAO OS ANOS DO EMPRESTIMO?
                dad->anos_emprestimo=2;
            if(dad->taxa_juro==4)
                dad->anos_emprestimo=3;
            if(dad->taxa_juro==5)
                dad->anos_emprestimo=5;
            if(dad->taxa_juro==6)
                dad->anos_emprestimo=10;
            if(dad->taxa_juro==7)
                dad->anos_emprestimo=15;
            if(dad->taxa_juro==8)
                dad->anos_emprestimo=20;
            if(dad->taxa_juro==9)
                dad->anos_emprestimo=25;
            if(dad->taxa_juro==10)
                dad->anos_emprestimo=30;
            if(dad->taxa_juro==11)
                dad->anos_emprestimo=40;
            if(dad->taxa_juro==12)
                dad->anos_emprestimo=45;
            
    
            //SERVIÇOS A QUE OS PROPONENTES PRETENDEM ADERIR
    
            printf("\nServicos a que os proponentes pretendem aderir:\n");
    
            do{
                printf("Subscricao do Seguro de Vida (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->seguro_vida);
            }while(dad->seguro_vida<0 || dad->seguro_vida>1);
    
            if(dad.seguro_vida=1){
                printf("Para 1 ou 2 pessoas (1 ou 2)?\n");
                scanf("%d",&dad->num_pessoas);
            }
    
            do{
                printf("Subscricao do Seguro Multi-Riscos (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->seg_multiriscos);
            }while(dad->seg_multiriscos<0 || dad->seg_multiriscos>1);
    
                
            do{
                printf("Domiciliacao de rendimentos (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->dom_rend);
            }while(dad->dom_rend<0 || dad->dom_rend>1);
    
            printf("Produtos/Servicos:\n");
    
            do{
                printf("Cartao de credito (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->prod_serv.cartao_c);
            }while(dad->prod_serv.cartao_c<0 || dad->prod_serv.cartao_c>1);//VER SE È OU ou E
            
            if(dad->prod_serv.cartao_c==1)
                dad->num_serv=(*dad).num_serv+1;
    
            do{
                printf("Cartao de debito (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->prod_serv.cartao_d);
            }while(dad->prod_serv.cartao_d<0 || dad->prod_serv.cartao_d>1);
    
            if(dad->prod_serv.cartao_d==1)
                dad->num_serv=(*dad).num_serv+1;
    
            do{
                printf("Banco Online (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->prod_serv.B_online);
            }while(dad->prod_serv.B_online<0 || dad->prod_serv.B_online>1)
    
                if(dad->prod_serv.B_online==1)
                dad->num_serv=(*dad).num_serv+1;
    
            printf("Domiciliacao de pagamentos periodicos:\n");
    
            do{
                printf("Agua (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->prod_serv.dom_pp.agua);
            }while(dad->prod_serv.dom_pp.agua<0 || dad->prod_serv.dom_pp.agua>1);
    
            if(dad->prod_serv.dom_pp.agua==1)
                dad->num_serv=(*dad).num_serv+1;
    
            do{
                printf("Luz (1-Sim, 0-Nao):\n");
                scanf("%d",&dad->prod_serv.dom_pp.luz);
            }while(dad->prod_serv.dom_pp.luz<0 || dad->prod_serv.dom_pp.luz>1);
    
            if(dad->prod_serv.dom_pp.luz==1)
                dad->num_serv=(*dados).num_serv+1;
    
            do{
                printf("Gas (1-Sim, 0-Nao):\n");
                scanf("%d",&dad.prod_serv.dom_pp.gas);
            }while(dad->prod_serv.dom_pp.gas<0 || dad->prod_serv.dom_pp.gas>1);
    
            if(dad->prod_serv.dom_pp.gas==1)
                dad->num_serv=(*dad).num_serv+1;
                
        //DADOS DO IMOVEL
    
            printf("\nDados do Imovel:\n");
    
            printf("Valor estimado de avaliacao (euros):\n");
            scanf("%d"&dad->valorestimado);
    
            printf("Valor de compra (escritura)(euros):\n");
            scanf("%d"&dad->valorcompra);
    
            printf("Valor patrimonial (euros):\n");
            scanf("%d"&dad->valorpatri);
    
            printf("Emprestimo (euros):\n");
            scanf("%d"&dad->emprestimo);
    
            printf("Prazo (anos):\n");
            scanf("%d"&dad->prazo);
    
        }
    
        //guardar estrutura no ficheiro
    
        FILE*pf;
        dados_emprestimo tabela[50];
        pf=fopen("Dados.TXT", "rb");
        if(!pf){
            printf("Erro ao abrir o ficheiro");
            exit(1);
        }
        int i=0, j;
        while(fread(&tabela[i],sizeof(dados_emprestimo),1,pf)!=0);{
            i++;
        }fclose(pf);
        if(i==50){//deslocar todas as simulações do vector
            for(j=0;j<50;j++){
                tabela[j-1]=tabela[j];
            tabela[j-1]=dados_emprestimo_presente;//nao temos que declarar dados_emprestimo_presente?
            }
        }else
            tabela[i]=dados_emprestimo_presente;
        pf=fopen("Dados.TXT","wb");
        fwrite(tabela,sizeof(dados),1,pf);
        fclose(pf);
        
    
    
    //CÁLCULO DO IMT
        
        struct struct_IMT {
            float parcela_abater;
            float imt_taxa;
            float imt;
        };
    
        void calc_IMT(dados_emprestimo*dad, struct_IMT*Imt){
    
            Imt->imt=0;
            Imt->parcela_abater=0;
            Imt->imt_taxa=0;
    
            if(dad->localização==1)
                if(dad->emprestimo<85500)
                    IMT.imt=0;
                else
                    if(dad->emprestimo<=117200)
                        Imt->imt_taxa=0.02;
                        Imt->parcela_abater=1710;
                    else
                        if(dad->emprestimo<=159800)
                            Imt->imt_taxa=0.05;
                            Imt->parcela_abater=5226;
                        else
                            if(dad->emprestimo<=266400)
                                Imt->imt_taxa=0.07;
                                Imt->parcela_abater=8422;
                            else
                                if(dad->emprestimo<=532700)
                                    Imt->imt_taxa=0.08;
                                    Imt->parcela_abater=11086;
                                else
                                    Imt->imt_taxa=0.06;
                                    Imt->parcela_abater=0;
    
            else//se o imovel for nas regiões autonomas e nao no continente
                if(dad->emprestimo<106875)
                    Imt->imt=0;
                else
                    if(dad->emprestimo<=146500)
                        Imt->imt_taxa=0.02;
                        Imt->parcela_abater=2087,5;
                    else
                        if(dad->emprestimo<=199750)
                            Imt->imt_taxa=0.05;
                            Imt->parcela_abater=6392,5;
                        else
                            if(dad->emprestimo<=333000)
                                Imt->imt_taxa=0.07;
                                Imt->parcela_abater=10305;
                            else
                                if(dad->emprestimo<=665875)
                                    Imt->imt_taxa=0.08;
                                    Imt->parcela_abater=13566,25;
                                else
                                    Imt->imt_taxa=0.06;
                                    Imt->parcela_abater=0;
            //Fechar if's
    
            Imt->imt=dad->emprestimo*Imt->imt_taxa-Imt->parcela_abater;
    
    
        }
    
        struct struct_TAN{
            float indexante;
            float spread;
            float TAE;
            float TAN;
            float garantia;
            float reducao_spread;
        };
     
        void calc_TAN(struct_TAN*ptr, dados_emprestimo*dados){
            ptr->reducao_spread=0.0;
            
            ptr->garantia=(*dad).emprestimo/(*dad).valorpatri;
            ptr->reducao_spread=0;
            //calcular redução do spread
            if(dados->dom_rend==1)
                ptr->reducao_spread=(*ptr).reducao_spread+0,001;
            if(dados->seguro_vida==1){
                if(dados->num_pessoas==1)
                    ptr->reducao_spread=(*ptr).reducao_spread+0,002;
                else
                    ptr->reducao_spread=(*ptr).reducao_spread+0,003;
            }
            if(dados->num_serv>=2)
                ptr->reducao_spread=(*ptr).reducao_spread+0,002;
    
            //taxa indexada á euribor a 3 meses
    
            if(dados->taxa_juro==1){//se é Indexada á Euribor a 3 meses
                if(ptr->garantia<=0.6){
                    if(dados->emprestimo<50000){
                        ptr->indexante=0.05758;
                        ptr->spread=0.00950;
                    }if(dados->emprestimo<1000000){
                        ptr->indexante=0.05558;
                        ptr->spread=0.00750;
                    }if(dados->emprestimo<150000){
                        ptr->indexante=0.05458;
                        ptr->spread=0.00650;
                    }else
                        ptr->indexante=0.05308;
                        ptr->spread=0.00500;
                }
                if(ptr->garantia<=0.75){
                    if(dados->emprestimo<50000){
                        ptr->indexante=0.05908;
                        ptr->spread=0.011;
                    }if(dados->emprestimo<1000000){
                        ptr->indexante=0.05758;
                        ptr->spread=0.00950;
                    }if(dados->emprestimo<150000){
                        ptr->indexante=0.05558;
                        ptr->spread=0.00750;
                    }else
                        ptr->indexante=0.05508;
                        ptr->spread=0.00950;
                }
                if(ptr->garantia<=0.9){
                    if(dados->emprestimo<50000){
                        ptr->indexante=0.06308;
                        ptr->spread=0.011;
                    }if(dados->emprestimo<1000000){
                        ptr->indexante=0.06058;
                        ptr->spread=0.01250;
                    }if(dados->emprestimo<150000){
                        ptr->indexante=0.05858;
                        ptr->spread=0.01050;
                    }else
                        ptr->indexante=0.05758;
                        ptr->spread=0.00950;
                }
            }else
                if(dados->taxa_juro==2){//Se é indexada á Euribor a 6 meses
                    if(ptr->garantia<=0.6){
                        if(dados->emprestimo<50000){
                            ptr->indexante=0.05767;
                            ptr->spread=0.00950;
                        }if(dados->emprestimo<1000000){
                            ptr->indexante=0.05567;
                            ptr->spread=0.00750;
                        }if(dados->emprestimo<150000){
                            ptr->indexante=0.05467;
                            ptr->spread=0.00650;
                        }else
                            ptr->indexante=0.05317;
                            ptr->spread=0.00500;
                    }
                    if(ptr->garantia<=0.75){
                        if(dados->emprestimo<50000){
                            ptr->indexante=0.05917;
                            ptr->spread=0.011;
                        }if(dados->emprestimo<1000000){
                            ptr->indexante=0.05767;
                            ptr->spread=0.00950;
                        }if(dados->emprestimo<150000){
                            ptr->indexante=0.05567;
                            ptr->spread=0.00750;
                        }else
                            ptr->indexante=0.05517;
                            ptr->spread=0.00700;
                    }
                    if(ptr->garantia<=0.9){
                        if(dados->emprestimo<50000){
                            ptr->indexante=0.06317;
                            ptr->spread=0.01500;
                        }if(dados->emprestimo<1000000){
                            ptr->indexante=0.06067;
                            ptr->spread=0.01250;
                        }if(dados->emprestimo<150000){
                            ptr->indexante=0.05867;
                            ptr->spread=0.01050;
                        }else
                            ptr->indexante=0.05767;
                        ptr->spread=0.00950;
                    }    
                }
                if(ptr->spread-ptr->reducao_spread<0.0025){
                    ptr->spread=0.0025;
                else
                    ptr->spread=(*ptr).spread-(*ptr).reducao_spread;
                }
    
                //calcular taxas fixas nominais com spead
    
                if(dados->taxa_juro==3 || dados->taxa_juro==4 || dados->taxa_juro==5)
                    ptr->indexante=0.04700;
                if(dados->taxa_juro==6)
                    ptr->indexante=0.04800;
                if(dados->taxa_juro==7)
                    ptr->indexante=0.04900;
                if(dados->taxa_juro==8)
                    ptr->indexante=0.04970;
                if(dados->taxa_juro==9)
                    ptr->indexante=0.05000;
                if(dados->taxa_juro==10)
                    ptr->indexante=0.05070;
                if(dados->taxa_juro==11 || dados->taxa_juro==12)
                    ptr->indexante=0.05100;
    
                ptr->TAN=(*ptr).indexante+(*ptr).spread;
    
                //falta calcular a TAE
        }
    
    
        //CALCULO DO ENCARGO MENSAL
    
        struct struct_encmensal{
            int num_prestacoes;
            int pag_ano;
            float comi_processamento;
            float total_encargosemseg;
            float seg_multiriscosparedes;
            float total_encargocomseg;
        };
    
        void encargo_mensal(struct_encmensal*encargo, dados_emprestimo*dad){
            encargo->pag_ano=12;//pagamentos todos os meses
            encargo->num_prestacoes=(*dad).anos_emprestimo+(*encargo).pag_ano;
    
    
        }
    
    
    //OPÇÃO 1 - ESTIMATIVA DOS CUSTOS ASSOCIADOS AO EMPRESTIMO
    
        struct struct_custos{
            float comi_avaliação;
            float regis_aquisição;
            float comi_estudo;
            float custo_escritura;
            int usufruir;
            float regis_hipoteca;
            float selo_venda;
            float selo_hipoteca;
            float conv_registo;
            float i_m_t;
            float imposto_selo;
            float custos_totais;
        };
    
        void calc_custos_empres(struct_custos*custos, dados_emprestimo*dad, struct_IMT*imt){
    
            (*custos).comi_avaliação=175,0;
            (*custos).regis_aquisição=125,0;
            (*custos).comi_estudo=140,0;
            (*custos).custo_escritura=297,0;
            (*custos).regis_hipoteca=135,0;
            (*custos).selo_venda=0,008;
            (*custos).selo_hipoteca=0,006;
            (*custos).conv_registo=48,0;
                
            printf("Calculo dos custos associados ao emprestimo:\n");
    
            if((*dad).conta_pouhab==1){
                do{
                    printf("Pretende usufruir da conta poupança habitação?(1-Sim, 0-Não)\n");
                    scanf("%d",&custos->usufruir);
                }while(custos->usufruir<0 || custos->usufruir>1);
            
                if((*custos).usufruir==1){
                    custos->comi_estudo=0;
                    custos->comi_avaliação=(*custos).comi_avaliação*0,50;
                    custos->custo_escritura=(*custos).custo_escritura*0,50;
                }
                if((*dad).destino_habitação==1 && (*dad).conta_pouhab==1){
                    custos->regis_aquisição=(*custos).regis_aquisição*0,50;
    
                }else
                    custos->regis_aquisição=(*custos).regis_aquisição;
    
            }else
                custos->comi_estudo=(*custos).comi_estudo;
                custos->comi_avaliação=(*custos).comi_avaliação;
                custos->custo_escritura=(*custos).custo_escritura;
    
                //ver se esta bem...se esta dentro do else
    
            custos->regis_hipoteca=(*custos).regis_hipoteca;
            custos->i_m_t=(*imt).imt;
            custos->imposto_selo=(*dad).valorcompra*(*custos).selo_venda+(*dad).emprestimo*(*custos).selo_hipoteca;
            
            //ver se esta correcto
            custos->conv_registo=(*custos).conv_registo;
    
            //posso fazer a soma dos custos de contratação e dos totais ate ao contrato
            custos->custos_totais=(*custos).comi_avaliação+(*custos).comi_estudo+(*custos).conv_registo+(*custos).custo_escritura+(*custos).i_m_t+(*custos).imposto_selo+(*custos).regis_aquisição+(*custos).regis_hipoteca;
    
        }
    
        //mostrar a estimativa dos custoa associados ao emprestimo
    
        void mostra_dados1(struct_custos*custos){
            printf("Estimativa dos custos associadosao emprestimo:\n");
            printf("Total de custos ate ao contrato:\n");
            printf("Comissao de estudo (IS incluido): %f\n",custos->comi_estudo);
            printf("Comissao de avaliacao: %f\n",custos->comi_avaliação);
            printf("Registo provisorio de aquisicao: %f\n",custos->regis_aquisição);
            printf("Registo provisorio de hipoteca: %f\n",custos->regis_hipoteca);
            printf("Imposto s/Transmissoes de Imoveis(IMT): %f\n",custos->i_m_t);
            printf("\nCustos de contratacao:\n");
            printf("Despesas com escrituras: %f\n",custos->custo_escritura);
            printf("Imposto selo: %f\n",custos->imposto_selo);
            printf("Conversão de registos (IVA includo): %f\n",custos->conv_registo);
            printf("\nTotais:Custos associados ate ao contrato+Custos de contratacao: %f\n", custos->custos_totais);
    
        }
        
        //OPCAO 2 - DADOS DO CREDITO
    
        struct struct_dadoscredito{
            char regime;
            float empres;
            int anos;
            char hipoteca;
            float tipo_taxa;
            float spread;
            float tan;
            float tae;
        };
    
            void dados_credito(dados_emprestimo*dad, struct_dadoscredito*credito){
                
            }
    
    
    
        //OPÇÃO 3 - ELEMENTOS DE BASE PARA A SIMULAÇÃO
    
        struct struct_elementos{
            int idade1;
            int idade2;
        };
    
        void calc_elementossimul(struct_elementos*elementos, dados_emprestimo*dad){
            //calcular idades
            if(dad->data_actual.dia<dad->data_nasc.dia && dad->data_actual.mês<dad->data_nasc.mês)
                elementos->idade1=dad->data_actual.ano-dad->data_nasc.ano-1;
            if(dad->data_actual.dia>=dad->data_nasc.dia && dad->data_actual.mês>=dad->data_nasc.mês)
                elementos->idade1=dad->data_actual.ano-dad->data_nasc.ano;
    
            if(dad->num_prop==2)
                if(dad->data_actual.dia<dad->data_nasc2.dia && dad->data_actual.mês<dad->data_nasc2.mês)
                    elementos->idade2=dad->data_actual.ano-dad->data_nasc2.ano-1;
                if(dad->data_actual.dia>=dad->data_nasc2.dia && dad->data_actual.mês>=dad->data_nasc2.mês)    
                    elementos->idade2=dad->data_actual.ano-dad->data_nasc2.ano;
        }
    
        void mostra_dados3(dados_emprestimo*dad, struct_elementos*elementos){
            printf("Idade do 1.º proponente: %d\n", elementos->idade1);
    
            if(dad->num_prop==2)
                printf("Idade do 2.º proponente: %d\n", elementos->idade2);
    
            printf("Rendimento anual bruto do agregado: %d\n", (*dad).rend_anual_bruto+(*dad).rend_anual_bruto2);
            printf("Encargo mensal com outros creditos: %d\n",(*dad).enc_mensal);
            
            if(dad->conta_pouhab==1){
                printf("Utiliza conta poupanca habitacao;\n");
            }else
                printf("Nao utiliza conta poupanca habitacao;\n");
            if(dad->seguro_vida==1){
                printf("Tem subscricao de seguro de vida;\n");
            }else
                printf("Nao tem subscricao do seguro de vida;\n");
            if(dad->seg_multiriscos==1){
                printf("Tem subscricao do seguro Multi-riscos;\n");
            }else
                printf("Nao tem subscricao do seguro Multi-riscos;\n");
            if(dad->dom_rend==1){
                printf("Tem domiciliacao de rendimentos;\n");
            }else
                printf("Nao tem domiciliacao de rendimentos;\n");
            if(dad->prod_serv.B_online==1){
                printf("Aderiu ao Banco Online;\n");
            }else
                printf("Nao aderiu Banco Online;\n");
            if(dad->prod_serv.cartao_c==1){
                printf("Aderiu ao cartao de credito;\n");
            }else
                printf("Nao aderiu ao cartao de credito;\n");
            if(dad->prod_serv.cartao_d==1){
                printf("Aderiu ao cartao de debito;\n");
            }else
                printf("Nao aderiu ao cartao de debito;\n");
            if(dad->prod_serv.dom_pp.agua==1){
                printf("Aderiu a domiciliacao de pagamentos periodicos da agua;\n");
            }else
                printf("Nao aderiu a domiciliacao de pagamentos periodicos da agua;\n");
            if(dad->prod_serv.dom_pp.gas==1){
                printf("Aderiu a domiciliacao de pagamentos periodicos do gas;\n");
            }else
                printf("Nao aderiu a domiciliacao de pagamentos periodicos do gas;\n");
            if(dad->prod_serv.dom_pp.luz==1){
                printf("Aderiu a domiciliacao de pagamentos periodicos da luz;\n");
            }else
                printf("Nao aderiu a domiciliacao de pagamentos periodicos da luz;\n");
    
            //falta as condiçoes especiais
    
        }
            
        //OPCÃO 4 - DOCUMENTOS NECESSÁRIOS
    
        void mostra_documentos_necessarios(void){
            printf("Os documentos necessarios sao:\n");
            printf("Impresso da instituicao bancaria;\nBilhete(s) de identidade;\nCartao(oes) de contribuinte;\nDeclaracao da entidade patronal com indicacao do vinculo contratual;\nRecibos de vencimento(ultimos 3 meses);\nExtractos bancarios;\nDeclaracao de rendimentos e nota de liquidacao de IRS;\nPlanta da localizacao do predio(caso nao tenha n.º de policia);\nPlanta do imovel a hipotecar.\n");
    
        }
    
    //MENU DAS OPÇÕES DE 1 A 6
     
    void main(void){
        struct dados_emprestimo*dados, dados_emprestimo*dad, struct_dadoscredito*credito, struct_custos*custos, struct_IMT*imt, struct_encmensal*encargo, struct_TAN*ptr, struct_elementos*elementos;
    
        int menu_opção(void){
    
            int opção;
            do{
                printf("Adicionalmente ao Encargo Mensal poderá executar as seguintes operacoes:\n");
                printf("1-Estimativa dos custos associados ao emprestimo;\n");
                printf("2-Dados do credito;\n");
                printf("3-Elementos de base para a simulacao;\n");
                printf("4-Documentos necessários;\n");
                printf("5-Plano financeiro para o primeiro ano;\n");
                printf("6-Guardar simulação.\n");
                printf("Seleccione a opcao pretendida (1 a 6):\n");
                scanf("%d",&opção);
    
            }while(opção<1 || opção>6);
    
            if(opção==1)
                calc_custos_empres(struct_custos*custos, dados_emprestimo*dad, struct_IMT*imt);
                mostra_dados1(struct_custos*custos);
            else
                if(opção==2)
                    //chama a função Dados do credito
                else
                    if(opção==3)
                        mostra_dados3(dados_emprestimo*dad, struct_elementos*elementos);
                    else
                        if(opção==4)
                            mostra_documentos_necessarios(void);
                        else
                            if(opção==5)
                                //chama a função Plano financeiro para o primeiro ano
                            else
                                //chama a função Guardar simulação
        }
    }
    Alguem me consegue ajudar a estruturar este programa que ainda nao está acabado?
     
  2. AliFromCairo

    AliFromCairo Power Member

    Boas, podes isolar em ficheiros diferentes certas partes do teu código, como por exemplo, a parte que lê e trata o input do utilizador, e a parte que trata da lógica de negócio (i.e. cálculo de taxas, entre outras coisas).
     
  3. Couve

    Couve Power Member

    Podes usar o switch em vez de tantos if's ali num ou dois casos. Podias usar classes em vez de structs e fazer um ficheiro para cada classe..
     
  4. Patrick_maura

    Patrick_maura Power Member

    Obrigada..

    Vou ver o que consigo fazer.

    Mas estou um pouco limitada porque não sei usar classes...ainda não aprendi isso.
     
  5. Baderous

    Baderous Banido

    Nem vais aprender a não ser que queiras avançar os teus conhecimentos de C (que é o que está aqui em questão) para conhecimentos em C++ (onde usas classes).
     
  6. Patrick_maura

    Patrick_maura Power Member

    Peço desculpa pelo lapso.

    Como falaram em classes pensei que na universidade também me iam ensinar isso... Mas se não faz parte de nenhuma unidade curricular hei de aprender sozinha.
     

Partilhar esta Página