Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mc Fly

Conversor de bases numéricas em C

4 posts neste tópico
Gostaria de algumas dicas sobre um conversor de bases numéricas em linguagem C, obrigado.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, sou iniciante em programação, mas já fiz um algoritimo para converter números decimais em binários e binários em decimais, além de um conversor de números hexadecimais para binário e de binário para hexadecimal. Na época em que eu fiz eles (a cerca de um mês atrás) não conhecia o "%" por isso inventei uma gambiarra para fazer a conversão decimal > binário. Ai vai os códigos:

55.gif Conversor Binário > Decimal, Decimal > Binário

 

 

#include <iostream.h>

#include <conio.h>

#include <math.h>

int n,v,x=1,y=1,d,z,w=1,r,cont,cont2,cont3,c=2;

void binario(){

  clrscr();

  cout<<"Numer";

  cin>>n;

  if(n!=0){

  if(n!=1){

  v=n;

while(v>x){

x=pow(2,y)-1;

y=y+1;

}

y=y-1;

d=y-1;

z=n;

w=1;

for(cont=y;cont>0;cont--){

if(w==1){

for(cont2=d;cont2>0;cont2--)

  z=z/2;

gotoxy(1,5);

cout<<z;

d=d-1;

w=w-1;

}

else{

r=n;

for(cont3=d;cont3>0;cont3--)

  r=r/2;

if(r==1){

gotoxy(c,5);

cout<<r;

}

else{

  if(r==0){

gotoxy(c,5);

cout<<r;

  }

  else{

  while((r!=1)&&(r!=0))

  r=r-2;

  gotoxy(c,5);

  cout<<r;

  d=d-1;

  c=c+1;

  }

  }

}

}

  }

  else{

  gotoxy(1,5);

  cout<<"1";

 }

 }

 else{

  gotoxy(1,5);

  cout<<"0";

 }

}

void decimal(){

  clrscr();

  cout<<"Numero de Bits:";

  cin>>n;

  z=n-1;

  r=0;

  for(cont=n;cont>0;cont--){

  cout<<"Digito Binari";

  cin>>v;

  r=r+(pow(2,z)*v);

  z=z-1;

  }

  cout<<"n"<<r;

}

void main(){

  int o;

  char a;

  do{

  clrscr();

  cout<<"1 - Conversao Decimal Binario";

  cout<<"n2- Conversao Binario Decimal";

  cout<<"nEscolha uma opca";

  cin>>o;

  switch Conversor Hexadecimal > Binário, Binário > Hexadecimal

 

 

#include <iostream.h>

#include <conio.h>

#include <ctype.h>

int o,n,d,cont,x=1;

char l,o2;

void binario(){

  gotoxy(1,7);

  cout<<"Numero de Digitos: ";

  cin>>n;

  for(cont=n;cont>0;cont--){

  gotoxy(1,8);

  cout<<"   ";

  gotoxy(1,8);

  cout<<"[N] Numero [Outra Tecla] Letra ";

  cin>>o2;

  if((o2==''n'')||(o2==''N'')){

  gotoxy(1,9);

  cout<<"   ";

  gotoxy(1,9);

  cout<<"Digit ";

  cin>>d;

  switch38.gif{

 case 0: gotoxy(x,11);

cout<<"0000";

break;

 case 1: gotoxy(x,11);

cout<<"0001";

break;

 case 2: gotoxy(x,11);

cout<<"0010";

break;

 case 3: gotoxy(x,11);

cout<<"0011";

break;

 case 4: gotoxy(x,11);

cout<<"0100";

break;

 case 5: gotoxy(x,11);

cout<<"0101";

break;

 case 6: gotoxy(x,11);

cout<<"0110";

break;

 case 7: gotoxy(x,11);

cout<<"0111";

break;

 case 8: gotoxy(x,11);

cout<<"1000";

break;

 case 9: gotoxy(x,11);

cout<<"1001";

break;

 default: gotoxy(1,13);

cout<<"Opcao Invalida";

break;

  }

  x=x+5;

  }//fim do if

  else{

  gotoxy(1,9);

  cout<<"   ";

  gotoxy(1,9);

  cout<<"Digit ";

  cin>>l;

  l=toupper24.gif;

  switch24.gif{

 case ''A'': gotoxy(x,11);

  cout<<"1010";

  break;

 case ''B'': gotoxy(x,11);

  cout<<"1011";

  break;

 case ''C'': gotoxy(x,11);

  cout<<"1100";

  break;

 case ''D'': gotoxy(x,11);

  cout<<"1101";

  break;

 case ''E'': gotoxy(x,11);

  cout<<"1110";

  break;

 case ''F'': gotoxy(x,11);

  cout<<"1111";

  break;

 default: gotoxy(1,13);

cout<<"Opcao Invalida";

break;

  }

  x=x+5;

  }//fim else

  }//fim for

}

void hexadecimal(){

  gotoxy(1,7);

  cout<<"Numero de Grupos de 4 bits (0000): ";

  cin>>n;

  for(cont=n;cont>0;cont--){

  gotoxy(1,8);

  cout<<" ";

  gotoxy(1,8);

  cout<<"Grupo de 4 bits: ";

  cin>>d;

  switch38.gif{

 case 0000: gotoxy(x,11);

  cout<<"0";

  break;

 case 0001: gotoxy(x,11);

  cout<<"1";

  break;

 case 0010: gotoxy(x,11);

  cout<<"2";

  break;

 case 0011: gotoxy(x,11);

  cout<<"3";

  break;

 case 0100: gotoxy(x,11);

  cout<<"4";

  break;

 case 0101: gotoxy(x,11);

  cout<<"5";

  break;

 case 0110: gotoxy(x,11);

  cout<<"6";

  break;

 case 0111: gotoxy(x,11);

  cout<<"7";

  break;

 case 1000: gotoxy(x,11);

cout<<"8";

break;

 case 1001: gotoxy(x,11);

cout<<"9";

break;

 case 1010: gotoxy(x,11);

cout<<"A";

break;

 case 1011: gotoxy(x,11);

cout<<"B";

break;

 case 1100: gotoxy(x,11);

cout<<"C";

break;

 case 1101: gotoxy(x,11);

cout<<"D";

break;

 case 1110: gotoxy(x,11);

cout<<"E";

break;

 case 1111: gotoxy(x,11);

cout<<"F";

break;

 default: gotoxy(1,13);

cout<<"Opcao Invalida";

break;

  }

  x=x+1;

  }

}

void main(){

  int o3;

  char e;

  do{

  clrscr();

  x=1;

  cout<<"1 - Conversao Hexadecimal Binario";

  cout<<"n2- Conversao Binario Hexadecimal";

  cout<<"nEscolha uma Opca";

  cin>>o3;

  switch(o3){

 case 1: binario();

break;

 case 2: hexadecimal();

break;

 default: cout<<"nOpcao Invalida";

break;

  }

  cout<<"nnDeseja Converter Outro Numero?";

  cout<<" Sim [Outra Tecla] Nao ";

  cin>>e;

  }while((e==''s'')||(e==''S''));

}

 

 

 

Desculpe se o código ficou meio bagunçado (por causa da página da Internet pois o código original está ok) tentei arrumar o máximo que pude.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

  Kra meu colega me mandou esse programa ano passado, vê se ajuda !

 

/*-----------------------------------------------------------------------------+

| Programador: Jorge Augusto |

| E-Mail: [email protected] |

| Nota: Compilado no Visual C++ 6.0 Introductory Edition |

+-----------------------------------------------------------------------------*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

// Prototipo de funções:

char *ConverteBase(int, int, int);

 

// Função principal

int main(int argc, char *argv[])

{

  int iNumM  = 0;

  int iBaseO = 0;

 int iBaseD = 0;

 

  printf("Digite o Numero para convertern");

  scanf("%d", &iNumM);

 printf("Digite a Base de Origemn");

  scanf("%d", &iBaseO);

 printf("Digite a Base de Destinon");

  scanf("%d", &iBaseD);

  printf("%d na Base %d  corresponde a %s na Base %dn", iNumM, iBaseO, ConverteBase(iNumM, iBaseO, iBaseD), iBaseD);

  system("PAUSE");

 

  return 0;

}

/*

 Essa função é genérica mais pode ser dividor para executar a tarefa de forma mais específica

 fiz ela desse jeito por que assim se tem tudo de uma única vez... divida se achar necessário

*/

char *ConverteBase(int iNum, int iBaseOrig, int iBaseDest)

{

  char   szBuffer[40]; // buffer maior que 32 para 4 bi em binário

  static char szResult[40]; // idem

  char r   = 0; // resto

  char i   = 0; // iterador

  char c   = 0; // contador

  char cLen = 0; // comprimento da string

 int  iTemp  = 0; // temporário claro!

 int  iIndex = 0; // indece da matriz

  szBuffer[0] = 0;

  szResult[0] = 0;

 

  sprintf(szBuffer, "%d", iNum);

 cLen = strlen(szBuffer);

 

 iIndex = cLen - 1;

 // converte para a base 10

  for(i = 0; i < cLen; i++){

iTemp += (szBuffer[iIndex] - 48) * (pow(iBaseOrig, i));

iIndex--;

 }

 

 iNum = iTemp;

 i ^= i;

 // converte de 10 para a base de destino

  do{

  r = (iNum % iBaseDest);

  iNum = iNum / iBaseDest;

  szBuffer = r + 48;

  i++;

  }while(iNum != 0);

 

 i--;

 

 // inverte a string do resultado... necessário

 for(; i > -1; i--, c++){

  szResult[c] = szBuffer;

  }

 

  return szResult;

}  

 


Só sei que nada sei!

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galerinha, vi aqui varias pessoas mandando seus programas e aceitei o desafio. Fiz um para conversão de decimal para binario e de binario para decimal.

OBS: só aceita conversao de decimal para binário no valor de 65535 e de binário para decimal no valor de 1111111111111111 (16 numeros "1"), isso devido a limitação da variável unsigned int.

 

La vai o programa (ficou um pouco grande): Ah.. foi feito em Turbo C++ 3.0

 

#include <conio.h>

#include <stdio.h>

#include <ctype.h>

#include <string.h>

#include <math.h>

void binario(unsigned int num)

{

 unsigned int bin[50];

 int 'n' = 0; // está entre aspas porque o corretor troca o "ene" por não

 do

 {

  bin[n++] = num % 2;

  num = num / 2;

 } while (num != 1);

 bin[n] = num;

 printf("nnNumero em binari ");

 for (int i = n; i >= 0; i--)

 {

  printf("%i",bin);

 }

}

void decimal(char *num)

{

 unsigned int t = strlen(num),

dec[20], total = 0,

cont = 1, pot = 2,

teste = 1;

 for (int i = 0; i < t; i++)

 {

  if (num == '1') dec = 1;

  else if (num == '0') dec = 0;

else { teste = 0; break; }

 }

 if (teste)

 {

if (dec[--t]) total = 1;

for (int i = t-1; i >= 0; i--)

{

  pot = pow(2,cont++);

  if (dec) total = total + pot;

}

printf("nnNumero em decimal: %d",total);

 }

 else

 {

  printf("nnVALOR INVALIDO!!!");

 }

}

void main()

{

 unsigned int numd;

 char resp,numb[20];

 do

 {

  clrscr();

  printf("Conversao para decimal ou para binario? (D - decimal, B - binario)n");

  resp = getche();

  switch (toupper(resp))

  {

case 'D': printf("nnDigite o número Binari ");

  gets(numb); fflush(stdin);

  decimal(numb);

  break;

case 'B': printf("nnDigite o número Decimal: ");

  scanf("%d",&numd);

  binario(numd);

  break;

default:  printf("nnOpcao invalida!");

  break;

  }

  printf("nnnDeseja digitar outro número (S para digitar, qualquer outro para sair)? ");

  resp = getche(); fflush(stdin);

 } while (toupper(resp) == 'S');

}

 

é isso aí.. se alguém achar um jeito de melhorar esse programa, por favor, me deixe saber, sempre gosto de aprender mais e melhorar o desempenho dos meus programas, mesmo que os mais simples.

 

EDITADO! mudei as variaveis int para unsigned int, com isso o valor máximo foi para 65535 contra 32767 de antes.

______________________________________________________________________

AMD Athlon 64 3200+ S939 BOX Venice / placa-mãe Asus A8N-E S939 PCI-E

2x512 RAM DDR PC3200 Kingston Dual / HD Serial ATA 160GB Samsung 7200 RPM

7600GT 256mb/128bits / Teclado e mouse Wireless Leadership

Monitor 17" LG Flatron Tela Plana / Gravador de DVD LG

Gabinete X-Blade Prata com Display LCD / Seventeam 420BKV.

Skype: bspavanelli

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
    • 1 Mensagens
    • 252 Visualizações
    • 6 Mensagens
    • 559 Visualizações
    • 3 Mensagens
    • 902 Visualizações
    • 4 Mensagens
    • 8582 Visualizações
    • 1 Mensagens
    • 539 Visualizações

  • Postagens Recentes

    • Análise de logs - encaminhamento para sites duvidosos
      nAbn - C:\Program Files (x86)\GbPlugin\gbiehAbn.dll
      O23 - Service: Adobe Acrobat Update Service (AdobeARMservice) - Adobe Systems Incorporated - C:\Program Files (x86)\Common Files\Adobe\ARM\1.0\armsvc.exe
      O23 - Service: @%SystemRoot%\system32\Alg.exe,-112 (ALG) - Unknown owner - C:\WINDOWS\System32\alg.exe (file missing)
      O23 - Service: Serviço de atualização Ask (APNMCP) - APN LLC. - C:\Program Files (x86)\AskPartnerNetwork\Toolbar\apnmcp.exe
      O23 - Service: Atheros Bt&Wlan Coex Agent - Atheros - C:\Program Files (x86)\Dell Wireless\Bluetooth Suite\Ath_CoexAgent.exe
      O23 - Service: Intel(R) Content Protection HECI Service (cphs) - Intel Corporation - C:\WINDOWS\SysWow64\IntelCpHeciSvc.exe
      O23 - Service: @%SystemRoot%\system32\DiagSvcs\DiagnosticsHub.StandardCollector.ServiceRes.dll,-1000 (diagnosticshub.standardcollector.service) - Unknown owner - C:\WINDOWS\system32\DiagSvcs\DiagnosticsHub.StandardCollector.Service.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\efssvc.dll,-100 (EFS) - Unknown owner - C:\WINDOWS\System32\lsass.exe (file missing)
      O23 - Service: @%systemroot%\system32\fxsresm.dll,-118 (Fax) - Unknown owner - C:\WINDOWS\system32\fxssvc.exe (file missing)
      O23 - Service: Gbp Service (GbpSv) - GAS Tecnologia - C:\Program Files (x86)\GbPlugin\GbpSv.exe
      O23 - Service: Serviço do Google Update (gupdate) (gupdate) - Google Inc. - C:\Program Files (x86)\Google\Update\GoogleUpdate.exe
      O23 - Service: Serviço do Google Update (gupdatem) (gupdatem) - Google Inc. - C:\Program Files (x86)\Google\Update\GoogleUpdate.exe
      O23 - Service: Google Software Updater (gusvc) - Google - C:\Program Files (x86)\Google\Common\Google Updater\GoogleUpdaterService.exe
      O23 - Service: McAfee Home Network (HomeNetSvc) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: HP Support Solutions Framework Service (HPSupportSolutionsFrameworkService) - Hewlett-Packard Company - C:\Program Files (x86)\Hp\Common\HPSupportSolutionsFrameworkService.exe
      O23 - Service: @%SystemRoot%\system32\ieetwcollectorres.dll,-1000 (IEEtwCollectorService) - Unknown owner - C:\WINDOWS\system32\IEEtwCollector.exe (file missing)
      O23 - Service: @keyiso.dll,-100 (KeyIso) - Unknown owner - C:\WINDOWS\system32\lsass.exe (file missing)
      O23 - Service: McAfee SiteAdvisor Service - McAfee, Inc. - C:\Program Files (x86)\McAfee\SiteAdvisor\McSACore.exe
      O23 - Service: McAfee AP Service (McAPExe) - McAfee, Inc. - C:\Program Files\McAfee\MSC\McAPExe.exe
      O23 - Service: McAfee Boot Delay Start Service (McBootDelayStartSvc) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: McAfee CSP Service (mccspsvc) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\CSP\1.9.829.0\\McCSPServiceHost.exe
      O23 - Service: McAfee Personal Firewall Service (McMPFSvc) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: McAfee VirusScan Announcer (McNaiAnn) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: McAfee Scanner (McODS) - McAfee, Inc. - C:\Program Files\McAfee\VirusScan\mcods.exe
      O23 - Service: McAfee Platform Services (mcpltsvc) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: McAfee Proxy Service (McProxy) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: McAfee Firewall Core Service (mfefire) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\SystemCore\\mfefire.exe
      O23 - Service: McAfee Service Controller (mfemms) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\SystemCore\\mfemms.exe
      O23 - Service: McAfee Validation Trust Protection Service (mfevtp) - Unknown owner - C:\Windows\system32\mfevtps.exe (file missing)
      O23 - Service: McAfee Module Core Service (ModuleCoreService) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\ModuleCore\ModuleCoreService.exe
      O23 - Service: @comres.dll,-2797 (MSDTC) - Unknown owner - C:\WINDOWS\System32\msdtc.exe (file missing)
      O23 - Service: McAfee Anti-Spam Service (MSK80Service) - McAfee, Inc. - C:\Program Files\Common Files\McAfee\Platform\McSvcHost\McSvHost.exe
      O23 - Service: @mqutil.dll,-6102 (MSMQ) - Unknown owner - C:\WINDOWS\system32\mqsvc.exe (file missing)
      O23 - Service: @%SystemRoot%\System32\netlogon.dll,-102 (Netlogon) - Unknown owner - C:\WINDOWS\system32\lsass.exe (file missing)
      O23 - Service: Intel Security PEF Service (PEFService) - Intel Security, Inc. - C:\Program Files\Common Files\Intel Security\PEF\CORE\PEFService.exe
      O23 - Service: RoxMediaDB12OEM - Sonic Solutions - C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\SharedCOM\RoxMediaDB12OEM.exe
      O23 - Service: Roxio Hard Drive Watcher 12 (RoxWatch12) - Sonic Solutions - C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\SharedCOM\RoxWatch12OEM.exe
      O23 - Service: @%systemroot%\system32\Locator.exe,-2 (RpcLocator) - Unknown owner - C:\WINDOWS\system32\locator.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\samsrv.dll,-1 (SamSs) - Unknown owner - C:\WINDOWS\system32\lsass.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\SensorDataService.exe,-101 (SensorDataService) - Unknown owner - C:\WINDOWS\System32\SensorDataService.exe (file missing)
      O23 - Service: SoftThinks Agent Service (SftService) - SoftThinks SAS - C:\Program Files (x86)\Dell DataSafe Local Backup\sftservice.EXE
      O23 - Service: Skype Updater (SkypeUpdate) - Skype Technologies - C:\Program Files (x86)\Skype\Updater\Updater.exe
      O23 - Service: @%SystemRoot%\system32\snmptrap.exe,-3 (SNMPTRAP) - Unknown owner - C:\WINDOWS\System32\snmptrap.exe (file missing)
      O23 - Service: @%systemroot%\system32\spoolsv.exe,-1 (Spooler) - Unknown owner - C:\WINDOWS\System32\spoolsv.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\sppsvc.exe,-101 (sppsvc) - Unknown owner - C:\WINDOWS\system32\sppsvc.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\stlang64.dll,-10102 (STacSV) - IDT, Inc. - C:\Program Files\IDT\WDM\stacsv64.exe
      O23 - Service: stllssvr - MicroVision Development, Inc. - C:\Program Files (x86)\Common Files\SureThing Shared\stllssvr.exe
      O23 - Service: @%SystemRoot%\system32\TieringEngineService.exe,-702 (TieringEngineService) - Unknown owner - C:\WINDOWS\system32\TieringEngineService.exe (file missing)
      O23 - Service: Intel(R) Turbo Boost Technology Monitor 2.0 (TurboBoost) - Intel(R) Corporation - C:\Program Files\Intel\TurboBoost\TurboBoost.exe
      O23 - Service: @%SystemRoot%\system32\ui0detect.exe,-101 (UI0Detect) - Unknown owner - C:\WINDOWS\system32\UI0Detect.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\vaultsvc.dll,-1003 (VaultSvc) - Unknown owner - C:\WINDOWS\system32\lsass.exe (file missing)
      O23 - Service: @%SystemRoot%\system32\vds.exe,-100 (vds) - Unknown owner - C:\WINDOWS\System32\vds.exe (file missing)
      O23 - Service: @%systemroot%\system32\vssvc.exe,-102 (VSS) - Unknown owner - C:\WINDOWS\system32\vssvc.exe (file missing)
      O23 - Service: @%systemroot%\system32\wbengine.exe,-104 (wbengine) - Unknown owner - C:\WINDOWS\system32\wbengine.exe (file missing)
      O23 - Service: @%ProgramFiles%\Windows Defender\MpAsDesc.dll,-320 (WdNisSvc) - Unknown owner - C:\Program Files (x86)\Windows Defender\NisSrv.exe (file missing)
      O23 - Service: @%ProgramFiles%\Windows Defender\MpAsDesc.dll,-310 (WinDefend) - Unknown owner - C:\Program Files (x86)\Windows Defender\MsMpEng.exe (file missing)
      O23 - Service: @%Systemroot%\system32\wbem\wmiapsrv.exe,-110 (wmiApSrv) - Unknown owner - C:\WINDOWS\system32\wbem\WmiApSrv.exe (file missing)
      O23 - Service: @%PROGRAMFILES%\Windows Media Player\wmpnetwk.exe,-101 (WMPNetworkSvc) - Unknown owner - C:\Program Files (x86)\Windows Media Player\wmpnetwk.exe (file missing)   --
      End of file - 16157 bytes -->