Skip to content

Commit

Permalink
Update main.c
Browse files Browse the repository at this point in the history
  • Loading branch information
felipefrm committed Jun 5, 2018
1 parent 9a515e6 commit 0c8e583
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <string.h>
#include <math.h>
#include "convercoes.h"
#include "verificacoes.h"

#define N 51

Expand All @@ -11,7 +12,7 @@ int main(void){
char num[N], num_convert[N]; // Variavies necessárias
int b_origem, b_destino, num_digitos, num_char[N], i, k;
int ponto, tem_sinal, verif_origem=1, verif_destino=1, tem_valor, verif_num; //flags
float fracionaria, n;
double fracionaria;
unsigned long long int inteira;

while (1){ // loop infinito para inserir as entradas e repeti-las caso
Expand All @@ -22,33 +23,33 @@ int main(void){
scanf("%s%d%d", num, &b_origem, &b_destino);
num_digitos = strlen(num);

tem_valor = verifica_valor(num, num_digitos);
tem_valor = verificaValor(num, num_digitos);
if (num[0] == '+' && tem_valor == 0 && b_origem == 0 && b_destino == 0)
break;

if (num_digitos > 50)
fprintf(stderr, "Insira um valor com menos de 50 dígitos...\n");

tem_sinal = verifica_sinal(num);
tem_sinal = verificaSinal(num);
if (tem_sinal == 0){
fprintf(stderr, "Insira o sinal antes do valor...\n");
}

ponto = verifica_ponto(num, num_digitos);
ponto = verificaPonto(num, num_digitos);
if (ponto == 0){
fprintf(stderr, "Insira o '.' separando a parte inteira da fracão...\n");
}

verif_num = verifica_numero(num, b_origem, ponto, num_digitos);
verif_num = verificaNumero(num, b_origem, ponto, num_digitos);
if (verif_num == 0)
fprintf(stderr, "Este valor não pertence a base %d...\n", b_origem);

verif_origem = verifica_origem(b_origem);
verif_origem = verificaOrigem(b_origem);
if (verif_origem == 0){
fprintf(stderr, "Digite novamente a base de origem...\n");
}

verif_destino = verifica_destino(b_destino);
verif_destino = verificaDestino(b_destino);
if (verif_destino == 0){
fprintf(stderr, "Digite novamente a base de destino...\n");
}
Expand All @@ -57,10 +58,10 @@ int main(void){
if (tem_valor == 1 && ponto != 0 && verif_num == 1 && num_digitos <= 50){

for (i=1; i<num_digitos; i++)
num_char[i] = transforma_char(num[i]);
num_char[i] = transformaChar(num[i]);

inteira = inteiro_para_base10(num, b_origem, ponto, num_char);
fracionaria = fracao_para_base10(num, b_origem, ponto, num_digitos, num_char);
inteira = inteiroParaBase10(num, b_origem, ponto, num_char);
fracionaria = fracaoParaBase10(num, b_origem, ponto, num_digitos, num_char);

if (b_destino == 10){

Expand All @@ -73,15 +74,15 @@ int main(void){
else {

for (i = ponto -1;; i--){
num_convert[i] = inteiro_para_baseX(&inteira, b_destino);
num_convert[i] = inteiroParaBaseX(&inteira, b_destino);
if (inteira == 0)
break;
}
k = i; // guarda o valor de i, pois precisará dele futuramente.

num_convert[ponto] = '.';
for (i = ponto + 1;; i++){
num_convert[i] = fracao_para_baseX(&fracionaria, b_destino);
num_convert[i] = fracaoParaBaseX(&fracionaria, b_destino);
if (fracionaria == 0)
break;
}
Expand All @@ -94,7 +95,7 @@ int main(void){

printf("%c", num[0]); //imprime o sinal
for (; k <= i; k++){
printf("%c", transforma_int(num_convert[k]));
printf("%c", transformaInt(num_convert[k]));
}
printf("\n");
}
Expand Down

0 comments on commit 0c8e583

Please sign in to comment.