2 Programinhas em C para conversão de bases
Publicado por Samuel Macedo 06/10/2004
[ Hits: 41.351 ]
Bom, tô mandando 2 códigos juntos na verdade, ao invés de 1. eles servem para converter bases. O primeio converte um numero decimal para um numero em qualquer base. O segundo converte um numero em qualquer base para um numero decimal. Eu ainda começando em C, por isso o código tá bem tosco, cheio de gatilhos, mas como é uma seção com scripts de iniciantes mesmo, acho q não tem problema. Funcionam normal, só q não exibe mensagens de erro se o cara digitar alguma coisa nada a ver... Valeu!
/*Converte um numero na base 10 para um numero
em uma base qualquer.
-->Samuel Macedo*/
#include <stdio.h>
char numparacar(int);
main()
{
long int bcknum,num,base,i,ind=0;
char j='A',numimp,vetnum[1000],vetch[1000];
printf("Numero (em base 10): ");
scanf("%d",&num);
printf("Base para a qual o numero sera convertido: ");
scanf("%d",&base);
bcknum = num;
for(i=0;i<1000;i++)
vetch[i] = 0;
while(num>0){
numimp = num%base;
if(numimp > 9){
numimp = numparacar(numimp);
vetch[ind]=1;
}
vetnum[ind] = numimp;
++ind;
num = num / base;
}
printf("%d(10) = ",bcknum);
j=ind;
while(vetnum[j]==0)j--;
for(;j>=0;j--){
if(vetch[j]==1)
printf("%c",vetnum[j]);
else
printf("%d",vetnum[j]);
}
printf("(%d)\n",base);
}
char numparacar(NUM)
{
int a;char b='A';
for(a=10;a<NUM;a++)
b++;
return b;
}
------------------------------------------------------------------------------------
/*converte de qualquer base para decimal
-->Samuel Macedo*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int letparaint(char);
main()
{
int numint,i,j,base,valdec=0,valexp,exp;
char gt[2],num[100];
scanf("%s",&num);
scanf("%d",&base);
//printf("numero carregado: %s",num);
for(i=0;num[i]!='{FONTE}';i++);
exp=i-1;
//printf("EXP: %d\n",exp);
for(i=0;num[i]!='{FONTE}';i++){
valexp=1;
for(j=0;j<exp;j++){
valexp=valexp*base;
// printf("valexp: %d\n",valexp);
}
if(num[i]>='0'&& num[i]<='9'){
gt[0]= num[i];
gt[1]='{FONTE}';
numint = atoi(gt);
//printf("numint -> %d\n",numint);
}
else{
numint = letparaint(num[i]);
}
valdec+=(numint*valexp);
--exp;
}
printf("Valor decimal: %d\n",valdec);
}
int letparaint(char LET)
{
int cont=0,i,j;
tolower(LET);
for(i=LET;i>'a';i--)
++cont;
cont+=10;
//printf("---->%d",cont);
return cont;
}
Operações de Soma, Subtração, Multiplicação e Divisão
Vetor de números aleatórios não-repetidos de um intervalo em C
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
Links importantes de usuários do vol (4)
GOG confirma suporte oficial ao sistema Linux: "o trabalho começo... (2)
Para os fãs de DOOM, um vídeo do Romero (com dublagem em pt-br disponí... (2)









