How to convert percentages to C? [closed]

2

I tried to make a program to convert percentages from days to weeks, months, years, etc. But it is not working, this is the code as it is now, I do not know what the error is.

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

int main(){

setlocale(LC_ALL,"");

int pct1, tmp1, tmp2;

double pct2=0, dec1=0, dec2=0;

printf("Olá, bem-vindo ao programa para transformar porcentagens.");
printf("\nEste programa irá calcular a porcentagem dada em um período para outra em outro período de tempo maior ou menor.");
printf("\nPor favor insira a porcentagem original: ");
scanf("%d", &pct1);
printf("\nE o tempo original, de acordo com os índices indicados: ");
printf("\n1.Dia");
printf("\n2.Semana");
printf("\n3.Mês");
printf("\n4.Bimestre");
printf("\n5.Trimestre");
printf("\n6.Semestre");
printf("\n7.Ano\n");
scanf("%d", &tmp1);
printf("Digite o tempo para qual deseja que a porcentagem seja convertida, de acordo com os índices indicados: ");
printf("\n1.Dia");
printf("\n2.Semana");
printf("\n3.Mês");
printf("\n4.Bimestre");
printf("\n5.Trimestre");
printf("\n6.Semestre");
printf("\n7.Ano\n");
scanf("%d", &tmp2);

if(tmp1>7 || tmp1<1 || tmp2>7 || tmp2<1 || tmp1==tmp2){
    printf("Erro. Valores Inválidos.");
}else if((tmp1==1 && tmp2==1) || (tmp1==2 && tmp2==2) || (tmp1==3 && tmp2==3) || (tmp1==4 && tmp2==4) || (tmp1==5 && tmp2==5) || (tmp1==6 && tmp2==6) || (tmp1==7 && tmp2==7)){
    printf("Os valores dos tempos são iguais. A porcentagem será a mesma.");
}else if(tmp1==1 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 7))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==1 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 30))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==1 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 60))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==1 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 90))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==1 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 180))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==1 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 360))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, (1/7)))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 4))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 9))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 13))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 26))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==2 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 52))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.03333333))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.25))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 2))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 3))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 6))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==3 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=(pow(dec2, 12)-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==4 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.01666667))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==4 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.125))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==4 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.5))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if (tmp1==4 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 1.5))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==4 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 3))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==4 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 6))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.01111111))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.07692308))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.33333333))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.66666667))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 2))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==5 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 4))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.00555556))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.03846154))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.16666667))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.33333333))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.5))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==6 && tmp2==7){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 2))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==1){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.00277778))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.01923077))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==3){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.08333333))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==4){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.16666667))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==5){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.25))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}else if(tmp1==7 && tmp2==6){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 0.5))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}

return 0;
}
    
asked by anonymous 07.12.2015 / 01:22

1 answer

1

This is not an answer - I still have no reputation to comment: it's just a comment. Your code is very doughy and redundant. I suggest you, in the first place, take some time to reformulate it. For example, you do not always have to repeat printf("A nova porcentagem é %lf.", pct2); . In addition, all if (...) else if (...) else (...) is not a good programming practice.

For now, I find something very complicated. For example, instead of:

else if(tmp1==1 && tmp2==2){
    dec1=pct1/100;
    dec2=1+dec1;
    pct2=((pow(dec2, 7))-1)*100;
    printf("A nova porcentagem é %lf.", pct2);
}

Just write:

else if(tmp1==1 && tmp2==2){
   pct2=1/7*100;
   printf("A nova percentagem é: %f",pct2);
 }
    
07.12.2015 / 02:24