Sistema Númerico

Publicado por Romulo 21/09/2003

[ Hits: 6.426 ]

Download snumerico0-3.c




Um programinha que converte números de um sistema para
outro,dicimal-hexadecimal-binário-octal.
Obs.:(Para indicar um número binário não precisa colocar o b
no final basta digitar o númer, ex.: 10010)
  

  



Esconder código-fonte

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

int pot(int x,int y);

int main()
{
int ba10, ba16, ba8, bin1[31], contr, ver, ind, opcao1, opcao2, exp;
char bin2[31];
do
{
system("clear"); /*limpa a tela*/
printf("{FONTE}33[01;33;41m");
printf("{FONTE}33[8;23H");
printf("+-----------[MENU PRINCIPAL]-----------+");
printf("{FONTE}33[9;23H");
printf("| 1 - Converter um número decimal      |");
printf("{FONTE}33[10;23H");
printf("| 2 - Converter um número hexadecimal  |");
printf("{FONTE}33[11;23H");
printf("| 3 - Converter um número octal        |");
printf("{FONTE}33[12;23H");
printf("| 4 - Converter um número binário      |");
printf("{FONTE}33[13;23H");
printf("| 5 - Créditos                         |");
printf("{FONTE}33[14;23H");
printf("| 6 - Sair                             |");
printf("{FONTE}33[15;23H");
printf("+------------------[S.Numérico v.0.3]--+");
printf("{FONTE}33[00m");
printf("{FONTE}33[17;23H");
printf("# ");
scanf("%d", &opcao1);
switch(opcao1)
{
case 1:
system("clear");
puts("Entre com um número decimal: ");
scanf("%d", &ba10);
printf("\nHexadecimal = %X", ba10);
printf("\nOctal = %o", ba10);
/*---------------binario---------------*/
ver=ba10;
ind=0;
while(ver!=0)
{
bin1[ind]=ver%2;
ver/=2;
ind++;
}
printf("\nBinário = ");
for(contr=0;contr<=ind-1;contr++)
{
printf("{FONTE}33[6;%dH", contr+11);/*substitui o gotoxy(x,y) da conio.h*/
printf("%d", bin1[ind-contr-1]); /*imprime na tela cada digito*/
}
/*-----------------fim-----------------------*/
puts("\n\n1 - Menu principal");
puts("2 - Sair");
printf("\n# ");
scanf("%d", &opcao2);
break;

case 2:
system("clear");
puts("Entre com um número hexadecimal: ");
scanf("%X", &ba16);
printf("\nDecimal = %d", ba16);
printf("\nOctal = %o", ba16);
/*---------------binario---------------*/
ver=ba16;
ind=0;
while(ver!=0)
{
bin1[ind]=ver%2;
ver/=2;
ind++;
}
printf("\nBinário = ");
for(contr=0;contr<=ind-1;contr++)
{
printf("{FONTE}33[6;%dH", contr+11);
printf("%d", bin1[ind-contr-1]);
}
/*---------------fim-------------------*/
puts("\n\n1 - Menu principal");
puts("2 - Sair");
printf("\n# ");
scanf("%d", &opcao2);
break;

case 3:
system("clear");
puts("Entre com um número octal: ");
scanf("%o", &ba8);
printf("\nDecimal = %d", ba8);
printf("\nHexadecimal = %X", ba8);
/*---------------binario---------------*/
ver=ba8;
ind=0;
while(ver!=0)
{
bin1[ind]=ver%2;
ver/=2;
ind++;
}
printf("\nBinário = ");
for(contr=0;contr<=ind-1;contr++)
{
printf("{FONTE}33[6;%dH", contr+11);
printf("%d", bin1[ind-contr-1]);
}
/*---------------fim-------------------*/
puts("\n\n1 - Menu principal");
puts("2 - Sair");
printf("\n# ");
scanf("%d", &opcao2);
break;

case 4:
system("clear");
puts("Entre com um número em binário: ");
scanf("%s", &bin2);  /*o numero binario que vai ler esta em caracteres ascii*/
for(ind=0;bin2[ind]!='{FONTE}';ind++)
{
if(bin2[ind]==48) /*aqui ele preenche o vetor bin1 com os 0 ou 1*/
{
bin1[ind]=0;
}
else
{
bin1[ind]=1;
}
}
ba10=0;
for(contr=0;contr<=ind-1;contr++)
{
if(contr!=ind)
{
exp=pot(2,ind-1-contr);
}
else
{
exp=pot(2,0); /*funcao exponencial*/
}
ba10+=bin1[contr]*exp;
}
printf("\nDecimal = %d", ba10);
printf("\nOctal = %o", ba10);
printf("\nHexadecimal = %X", ba10);
puts("\n\n1 - Menu principal");
puts("2 - Sair");
printf("\n# ");
scanf("%d", &opcao2);
break;

case 5:
system("clear");
puts("S.Numérico v.0.3");
puts("Desenvolvido por Waner Wodson");
puts("e mail: [email protected]");
puts("\n1 - Menu principal");
puts("2 - Sair");
printf("\n# ");
scanf("%d", &opcao2);
break;

default:
printf("\a");
break;
}
}
while((opcao1!=6)&&(opcao2!=2));
system("clear");
printf("+------------------------------------------------------+\n");
printf("|        Obrigado por usar o S.Númerico v.0.3          |\n");
printf("+------------------------------------------------------+\n\n");

return 0;
}

int pot(int x,int y)
{
int ret, controle;
ret=1;
if(y==0)
{
ret=1;
}
if(y>0)
{
for(controle=1;controle<=y;controle++)
{
ret*=x;
}
}
return(ret);
}

Scripts recomendados

O poderoso 'return'

D'GAME

Calculo de Área e Diametro do circulo

Structs dinâmicos com UNION

Tabuada


  

Comentários
[1] Comentário enviado por thi_sol em 09/06/2004 - 14:22h

A respeito do programa de conversao de Bases ... eu to encontrando uma dificuldade d faze um programa q converta bases quaisquer !!! por exemplo se eu recebe como base 11,12,13,14,15!!!!!e preciso converte
se alguem tive alguma sugestao por favor entre em contato comigo !!!!
[email protected]

[2] Comentário enviado por m3ocs-d4rksun em 08/10/2005 - 17:23h

ae.. maneiro a source do programa... vou estudar isso ae... valew

[3] Comentário enviado por m2gi em 28/05/2006 - 22:26h

Prezado Romulo.

Baixei seu código-fonte, porém quando fui compilar apresentou apenas um erro na linha 124 como mostra abaixo:

for(ind=0;bin2[ind]!='{FONTE}';ind++) - linha de comando

O erro informa o seguinte:

character constant too long - erro apresentado durante compilação.

Vc pode me enviar a solução?

Grato - Marucio ( e-mail [email protected])


Contribuir com comentário