2 Programinhas em C para conversão de bases
Publicado por Samuel Macedo 06/10/2004
[ Hits: 41.222 ]
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;
}
Escolha o algoritmo de ordenação
Número Quadrado perfeito e capicúa
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









