Don't like ads? PRO users don't see any ads ;-)
Guest

trabalho1

By: a guest on May 15th, 2012  |  syntax: C  |  size: 5.40 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. /*Universidade de Brasilia
  2. Instituto de Ciencias Exatas
  3. Departamento de Ciencia da Computacao
  4. Computacao Basica – 01/2012
  5. Aluno(a): Danilo Guimaraes Franco Ramos
  6. Matricula: 12/0028921
  7. Turma: A
  8. Versão do compilador: Code::Blocks 10.05
  9. Descricao: Calcular impostos de renda e mostra-lo, e ao final mostrar os dados e o imposto de renda do contribuinte que possuir o maior imposto de renda.*/
  10. #include <stdio.h>
  11. int main(){
  12.  
  13.     int dependentes,dependentes_maior,i,j,k;    /* i,j,k, serviram para transferir dados de strings na linha 71-79*/
  14.     float rend_anual, desp_medicas, imposto, taxa, maior_imposto, rend_maior, desp_maior;/* a variavel maior_imposto servira para guardar o maior imposto e em seguida os dados do contruibuinte que possuir esse maior imposto.*/
  15.     char RG[11], Nome[31], data[9], RG_maior[11], Nome_maior[31], data_maior[9], continuar;  /* As variaveis que possuem o _maior serviram para guardar o valor do RG, Nome, e data, do contruibuinte com maior imposto de renda */
  16.     /* A variavel 'continuar' servira para saber se deseja digitar dados de mais um contruibuinte ou encerrar o programa!*/
  17.  
  18.     imposto=0;
  19.     do{/* Saber se o usuario ira informar dados de outro contruibuinte ou nao!*/
  20.         printf("Informe o RG do contruibuinte:\n");
  21.         scanf("%s", &RG);
  22.         getchar();
  23.         printf("Informe o nome do contruibuinte:\n");
  24.         scanf("%[^\n]s%*c", &Nome);
  25.         getchar();
  26.         printf("Informe a data de nascimento do contruibuinte no formato DD/MM/AA:\n");
  27.         scanf("%[^\n]s", &data);
  28.         getchar();
  29.         printf("Informe o total do rendimento no ano do contruibuinte:\n");/* Aqui o programa ira perguntar e ler todos os dados do contruibuinte.*/
  30.         scanf("%f", &rend_anual);
  31.         printf("Informe o total de despesas medico-hospitares do contruibuinte:\n");
  32.         scanf("%f", &desp_medicas);
  33.         while (desp_medicas<0){ /* Aqui testamos a consistencia da informaçao digitada pelo usuario. Nesse caso : Despesas Medicas.*/
  34.             printf("ERRO! Despesas medico-hospitalares nao podem ser negativas.\n Por favor informe um valor valido para despesas medico-hospitalares:\n");
  35.             scanf("%f", &desp_medicas);
  36.         }
  37.         printf("Informe o numero de dependentes do contruibuinte:\n");
  38.         scanf("%d", &dependentes);
  39.         while (dependentes<0){ /* Aqui testamos novamente a consistencia da informaçao digitada pelo usuario. Nesse caso : numero de dependentes.*/
  40.             printf("ERRO! Dependentes nao podem ser negativos.\n Por favor informe um numero valido de dependentes:\n");
  41.             scanf("%d", &dependentes);
  42.         }
  43.         if(rend_anual<24000){
  44.             printf("Isento\n");
  45.         }
  46.         else if ((rend_anual>=24000) && (rend_anual<30000)){
  47.             taxa=0.07;                                            /* Aqui condicionamos o valor da taxa para calculo do imposto de rodo de acordo
  48.                                                                  com o rendimento anual do contruibuinte.*/
  49.         }
  50.         else if ((rend_anual>=30000) && (rend_anual<48000)){
  51.             taxa=0.11;
  52.         }
  53.         else {
  54.             taxa=0.15;
  55.         }
  56.         if ((desp_medicas>=1500) && (rend_anual>=24000)){                                         /* Aqui fazemos o calculo do imposto de renda de acordo com a taxa e condicionado
  57.                                                                         no valor das despesas medicas.*/
  58.             imposto=(rend_anual*taxa - desp_medicas - dependentes*200);
  59.         }
  60.         else if ((rend_anual>=24000) && (desp_medicas<1500)) {
  61.             imposto=(rend_anual*taxa - dependentes*200);
  62.         }
  63.         if (imposto<=0){
  64.             printf("Imposto de renda = 0, Isento");               /* Aqui imprime o valor do imposto condicionando ele ser menor/igual a zero ou maior que zero.*/
  65.         }
  66.         else if ((rend_anual>=24000) && (imposto>0)){
  67.             printf("Imposto devido: R$ %.2f \n", imposto);
  68.         }
  69.         if (imposto>maior_imposto){          /* Esse condicional serve para armazenar o maior imposto em uma variavel, e copiar os dados do contruibuinte que possui
  70.                                             esse maior imposto para outras variaveis, como explicado na declaraçao de variaveis no inicio. */
  71.             maior_imposto=imposto;
  72.             for (i=0;i!=11;i++){
  73.                 RG_maior[i]=RG[i];
  74.             }
  75.             for (j=0;j!=31;j++){
  76.                 Nome_maior[j]=Nome[j];
  77.             }
  78.             for (k=0;k!=9;k++){
  79.                 data_maior[k]=data[k];
  80.             }
  81.             dependentes_maior=dependentes;
  82.             rend_maior=rend_anual;
  83.             desp_maior=desp_medicas;
  84.         }
  85.         printf("Deseja cadastrar mais um contruibuinte? (S/N):\n"); /* Saber se o usuario deseja informar mais um contruibuinte.*/
  86.         scanf("%s", &continuar);
  87.         getchar();
  88.     }while (continuar=='S'); /* Condicional para o loop, se o usuario digitar S para informar mais um contruibuinte o loop ocorrera novamente!*/
  89.     printf("** CONTRUIBUINTE COM MAIOR VALOR DE IMPOSTO DE RENDA ** \n\nRG: %s\nNOME: %s\nDATA DE NASC.: %s\nTOTAL DE RENDIMENTOS NO ANO: R$ %.2f\nTOTAL DE DESPESAS MEDICO-HOSPITALARES: R$ %.2f\nNUMERO DE DEPENDENTES: %d\nIMPOSTO DEVIDO: R$ %.2f\n", RG_maior, Nome_maior, data_maior, rend_maior, desp_maior, dependentes_maior, maior_imposto);
  90.     /* Impressao final de dados*/
  91.     getchar();
  92. }