Jump to content

Estou com problema nesse código, quando faço a conversão de decimal para binario.


Heitor Nery

Recommended Posts

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

int main (void)
{
    int menu1=0, menu2, menu3, menu4, tiponum1, tiponum2, num1, num2, soma, mult, div, sub;
    printf("\tCALCULADORA DE BASES NUMERICAS\n\n\n");
    while(menu1==0)
    {
                   printf("Qual operacao deseja realizar?\n");
                   printf("1 - Conversao\n2 - Soma\n3 - Divisao\n4 - Subtracao\n5 - Multiplicacao\nResposta: ");
                   scanf("%i", &menu2);
                   while(menu2==1)
                   {
                                  printf("Seu primeiro numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum1);
                                  if(tiponum1==1){
                                                     printf("Digite o numero: \n");
                                                     scanf("%x",&num1);
                                                     }
                                  if(tiponum1==2){
                                                     printf("Digite o numero: \n");
                                                     scanf("%o",&num1);
                                                     }
                                  if(tiponum1==3){
                                                     printf("Digite o numero: \n");
                                                     scanf("%i",&num1);
                                                     }
                                  if(tiponum1==4){
                                                     printf("Digite o numero: \n");
                                                     scanf("%i",&num1);
                                                     }
                                  printf("Deseja converter para qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum2);
                                  if(tiponum2==1){
                                                     printf("O valor em Hexadecimal e: %x\n", num1);
                                                     }
                                  if(tiponum2==2){
                                                     printf("O valor em Octal e: %o\n", num1);
                                                     }
                                  if(tiponum2==3){
                                                     printf("O valor em Decimal e: %i\n", num1);
                                                     }
                                  if(tiponum2==4){
                                                     printf("O valor em Binario e: %s\n");
                                                     }
                                  menu1=0;
                                  menu2=0;
                   }
                   while(menu2==2)
                   {
                                  printf("Seu primeiro numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum1);
                                  if(tiponum1==1){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%x",&num1);
                                                     }
                                  if(tiponum1==2){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%o",&num1);
                                                     }
                                  if(tiponum1==3){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  if(tiponum1==4){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  printf("Seu segundo numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum2);
                                  if(tiponum2==1){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%x",&num2);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%o",&num2);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }     
                                  soma=num1+num2;
                                  printf("Deseja exibir o resultado em que base?\n1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta: \n");
                                  scanf("%i", &tiponum2); 
                                  if(tiponum2==1){
                                                     printf("Valor da soma e: %x\n", soma);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Valor da soma e: %o\n", soma);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Valor da soma e: %i\n", soma);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Digite o segundo numero: \n");
                                                     }
                                  menu1=0;
                                  menu2=0;                        
                   }
                   while(menu2==3)
                   {
                                  printf("Seu primeiro numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum1);
                                  if(tiponum1==1){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%x",&num1);
                                                     }
                                  if(tiponum1==2){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%o",&num1);
                                                     }
                                  if(tiponum1==3){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  if(tiponum1==4){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  printf("Seu segundo numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum2);
                                  if(tiponum2==1){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%x",&num2);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%o",&num2);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }     
                                  div=num1/num2;
                                  printf("Deseja exibir o resultado em que base?\n1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta: \n");
                                  scanf("%i", &tiponum2); 
                                  if(tiponum2==1){
                                                     printf("Valor da divisao e: %x\n", div);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Valor da divisao e: %o\n", div);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Valor da divisao e: %i\n", div);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Valor da divisao e: \n");
                                                     }
                                  menu1=0;
                                  menu2=0;                        
                   }
                   while(menu2==4)
                   {
                                  printf("Seu primeiro numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum1);
                                  if(tiponum1==1){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%x",&num1);
                                                     }
                                  if(tiponum1==2){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%o",&num1);
                                                     }
                                  if(tiponum1==3){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  if(tiponum1==4){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  printf("Seu segundo numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum2);
                                  if(tiponum2==1){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%x",&num2);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%o",&num2);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }     
                                  sub=num1-num2;
                                  printf("Deseja exibir o resultado em que base?\n1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta: \n");
                                  scanf("%i", &tiponum2); 
                                  if(tiponum2==1){
                                                     printf("Valor da subtracao e: %x\n", sub);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Valor da subtracao e: %o\n", sub);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Valor da subtracao e: %i\n", sub);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Valor da subtracao e: \n");
                                                     
                                                     }
                                  menu1=0;
                                  menu2=0;                        
                   }
                   while(menu2==5)
                   {
                                  printf("Seu primeiro numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum1);
                                  if(tiponum1==1){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%x",&num1);
                                                     }
                                  if(tiponum1==2){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%o",&num1);
                                                     }
                                  if(tiponum1==3){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  if(tiponum1==4){
                                                     printf("Digite o primeiro numero: ");
                                                     scanf("%i",&num1);
                                                     }
                                  printf("Seu segundo numero esta em qual base?\n");
                                  printf("1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta\n");
                                  scanf("%i", &tiponum2);
                                  if(tiponum2==1){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%x",&num2);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%o",&num2);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Digite o segundo numero: ");
                                                     scanf("%i",&num2);
                                                     }     
                                  mult=num1*num2;
                                  printf("Deseja exibir o resultado em que base?\n1 - Hexadecimal\n2 - Octal\n3 - Decimal\n4 - Binario\nResposta: \n");
                                  scanf("%i", &tiponum2); 
                                  if(tiponum2==1){
                                                     printf("Valor da multiplicacao e: %x\n", mult);
                                                     }
                                  if(tiponum2==2){
                                                     printf("Valor da multiplicacao e: %o\n", mult);
                                                     }
                                  if(tiponum2==3){
                                                     printf("Valor da multiplicacao e: %i\n", mult);
                                                     }
                                  if(tiponum2==4){
                                                     printf("Valor da multiplicacao e: \n");
                                                     }
                                  menu1=0;
                                  menu2=0;                        
                   }
          }
}                                                     
    
 

Link to comment
Share on other sites

Em primeiro lugar, recomendo que aprenda a modularizar seu código; em segundo, a comentá-lo e; em terceiro, a evitar fazer as mesmas coisas mais de uma vez... Eis um esqueleto do que seu código poderia ser (incompleto - porque não vou fazer seu dever de casa!):
 

#include <stdio.h>

/* Por conveniência, essa enumeração será usada para selecionar a operação */
enum operacao_e {
  CONVERT = 1,
  SUM,
  SUBTRACT,
  DIVIDE,
  MULTIPLY
};

static int get_choice( char ** );
static void convert( void );
static void sum( void );
static void subtract( void );
static void divide( void );
static void multiply( void );

int main( void )
{
  static char *operacoes[] =
  {
    "Conversão",
    "Soma",
    "Divisao",
    "Subtração",
    "Multiplicação",
    NULL
  };

  int operacao;

  puts( "CALCULADORA DE BASES NUMERICAS\n"
        "Digite Ctrl+C para sair do programa." );

  while ( 1 )
  {
    operacao = get_choice( operacoes );

    switch ( operacao )
    {
      case CONVERT:
        convert();
        break;

      case SUM:
        sum();
        break;

      case SUBTRACT:
        subtract();
        break;

      case DIVIDE:
        divide();
        break;

      case MULTIPLY:
        multiply();
        break;

      default:
        fputs( "***ERRO***: Opção inválida.\n", stderr );
    }
  }

  /* Nunca vai chegar aqui! */
}

/* Mostra a lista de opções e permite a seleção de uma.
   Retorna 0 se houve algum erro. */
int get_choice( char **choicesp )
{
  int numchoices, i;

  numchoices = 0;
  puts( "" );
  while ( *choicesp )
    printf( "%d - %s\n", 1 + numchoices++, *choicesp++ );
  fputs( "Resposta: ", stdout );
  fflush( stdout );

  i = 0;

  if ( scanf( "%d", &i ) != 1 )
    return 0;

  if ( i < 1 || i > numchoices )
    return 0;

  return i;
}

/* Aqui você deverá colocar código similar, em cada uma das funções */
void convert( void ) {}
void sum( void ) {}
void subtract( void ) {}
void divide( void ) {}
void multiply( void ) {}

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...