Ir para conteúdo

POWERED BY:

Arquivado

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

kavookavala

[Resolvido] Menu de opções

Recommended Posts

Bom estou tentando fazer um menu para meu programa,

eu até consegui fazer.

mas eu queria diferente

por exemplo, quando leio a variavel da opção do menu,

o programa fica esperando apertar o enter,

eu queria que na hora que o usuário digitar a opção ja vá direto sem precisar apertar o enter!!!

 

ABAIXO SEGUE O PROGRAMA PARA MELHOR COMPREENSÃO DO PROBLEMA

 

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define n 10
int k=0,m=0,i,j,aux,op;
struct  
       {
           char b2[30],res[30],descb1[30],descb2[30];
           int b1;
       } conv[n];
       

void dec_bin()
  {
                  
        printf ("Digite o Decimal a ser convertido para bin%crio : ",160);
        scanf("%d",&conv[m].b1);
        strcpy(conv[m].descb1,"Decimal");
        strcpy(conv[m].descb2,"Binario");    
        
        aux=conv[m].b1;
        for (i=0;conv[m].b1>=1;i++)
            {
                conv[m].b2[i]=conv[m].b1%2+48;
                conv[m].b1/=2;
            }
            conv[m].b2[i]='\0';
      
        for (i=0, j=strlen(conv[m].b2)-1;j>=0;i++,j--)
            conv[m].res[i]=conv[m].b2[j];
        conv[m].res[i]='\0';
        conv[m].b1=aux;
       
        printf("\n\n O Decimal %d convetido para Bin%crio %c = %s",conv[m].b1,160,130,conv[m].res);
        getch();          
   
            
  }

void bin_dec()

  {    
                     
        conv[m].b1=0;    
        printf ("Digite o Bin%crio a ser convertido para Decimal : ",160);
        scanf("%s",&conv[m].b2);
        strcpy(conv[m].descb1,"Binario");
        strcpy(conv[m].descb2,"Decimal");

     
        for (i=0,j=strlen(conv[m].b2)-1;j>=0;i++,j--)
           conv[m].b1+=(conv[m].b2[j]-48)*pow(2,i);   

        printf("\n\n O Bin%crio %s convetido para Decimal %c = %d",160,conv[m].b2,130,conv[m].b1);
        getch();  
           
 }

void oct_dec()
 
 {

             
        conv[m].b1=0;
        printf ("Digite o octal a ser convertido para Decimal : ");
        scanf("%s",&conv[m].b2);
        
        strcpy(conv[m].descb1,"Octal");
        strcpy(conv[m].descb2,"Decimal");
     
        for (i=0,j=strlen(conv[m].b2)-1;j>=0;i++,j--)
            conv[m].b1+=(conv[m].b2[j]-48)*pow(8,i);
          

        printf("\n\n O Octal %s convetido para Decimal %c = %d",conv[m].b2,130,conv[m].b1);
        getch();     
       
 }

void dec_oct()
 
 {
               
        printf ("Digite o Decimal a ser convertido para Octal : ");
        scanf("%d",&conv[m].b1);    
        aux=conv[m].b1;
        
        strcpy(conv[m].descb1,"Decimal");
        strcpy(conv[m].descb2,"Octal");
        for (i=0;conv[m].b1>=1;i++)
            {
                conv[m].b2[i]=conv[m].b1%8+48;
                conv[m].b1/=8 ;
            }
            conv[m].b2[i]='\0';
      
        for (i=0, j=strlen(conv[m].b2)-1;j>=0;i++,j--)
            conv[m].res[i]=conv[m].b2[j];
        conv[m].res[i]='\0';
        conv[m].b1=aux;
       
        printf("\n\n O Decimal %d convetido para Octal %c = %s",conv[m].b1,130,conv[m].res);
        getch();          
 }

void hexa_dec()

 {
             
        conv[m].b1=0;
        printf ("Digite o Hexadecimal a ser convertido para Decimal : ");
        scanf("%s",&conv[m].b2);
        strupr(conv[m].b2);
        
        strcpy(conv[m].descb1,"Hexadecimal");
        strcpy(conv[m].descb2,"Decimal");
     
        for (i=0,j=strlen(conv[m].b2)-1;j>=0;i++,j--)
            {
                if(conv[m].b2[i]>=65)
                    conv[m].b1+=(conv[m].b2[j]-55)*pow(16,i);
                else
                    conv[m].b1+=(conv[m].b2[j]-48)*pow(16,i);
            }

       printf("\n\n O Hexadecimal %s convetido para Decimal %c = %d",conv[m].b2,130,conv[m].b1);
       getch();         
 }

void dec_hexa ()

 {    
       for(j=0;j<7;j++)
        {
          for(i=0;i<79;i++)
            {
                if (i==24&&j>1&&j<5)
                    {
                       if(j==2)                      
                          {
                              printf("                              "); 
                              i+=29;
                          }               
                       if(j==3)
                          {
                             printf("    Decimal - Hexadecimal     ");
                             i+=29;
                          }  
                       if(j==4)                    
                          {
                             printf("                              "); 
                             i+=29;
                          }  
                     }       
                else
                    printf ("%c",177);
              }
            printf("\n");
        }                   
        printf ("\n\n Digite o Decimal : ");
        scanf("%d",&conv[m].b1);    
        aux=conv[m].b1;        
        
        strcpy(conv[m].descb1,"Decimal");
        strcpy(conv[m].descb2,"Hexadecimal");
        
        for (i=0;conv[m].b1>=1;i++)
            {
                
                conv[m].b2[i]=conv[m].b1%16;
                conv[m].b1/=16;
     
                if(conv[m].b2[i]>=10)
                     conv[m].b2[i]+=55;       
                else
                     conv[m].b2[i]+=48;
            }
        conv[m].b2[i]='\0';
        conv[m].b1=aux;
      
        for (i=0, j=strlen(conv[m].b2)-1;j>=0;i++,j--)
             conv[m].res[i]=conv[m].b2[j];
        conv[m].res[i]='\0';
        printf("\n\n O Decimal %d convetido para Hexadecimal %c = %s",conv[m].b1,130,conv[m].res);
        getch();     
 } 
 
void hist()
 
 
 {
    
     for(j=0;j<7;j++)
     {
          for(i=0;i<79;i++)
            {
                if (i==24&&j>1&&j<5)
                    {
                       if(j==2)                      
                          {
                              printf("                              "); 
                              i+=29;
                          }               
                       if(j==3)
                          {
                             printf("   Hist%crico  de conver%c%ces   ",224,135,228);
                             i+=29;
                          }  
                       if(j==4)                    
                          {
                             printf("                              "); 
                             i+=29;
                          }  
                     }       
                else
                    printf ("%c",177);
              
            }             
    
     printf("\n");
     }
     for(i=0;i<m;i++)  
     {
     printf("\nConver%c%co realizada => %s-%s",135,198,conv[i].descb1,conv[i].descb2);
     
     if(conv[i].descb1[0]=='D')
        {
           printf("\nN%cmero de entrada = > %d",163,conv[i].b1);
           printf("\nN%cmero de Sa%cda = > %s\n\n",163,161,conv[i].b2);
        }             
     
     else
        {
           printf("\nN%cmero de entrada = > %s",163,conv[i].b2);
           printf("\nN%cmero de Sa%cda = > %d\n\n",163,161,conv[i].b1);           
        } 
        printf("---------------------------------------------------\n");
     }
     m--;    
     getch();
}
main()
 
  {
        for (m=0;m<n && op!=4;m++)
        {
           system("cls");
           printf("\n             Oi, como vai você? ");
           printf("\n\n-------------------------------------------------------------\n");
           printf("\n\n     Escolha abaixo qual convers%co deseja realizar. ",198);
           printf("\n\n\n  1. DECIMAL para Outra Base*");
           printf("\n\n  2. Outra Base* para DECIMAL");
           printf("\n\n  3. Hist%crico de convers%ces",162,228);
           printf("\n\n  4. Sair\n");
          
           for(j=17;j<23;j++)
               printf("\n");
           printf("-------------------------------------------------------------");
           printf("\n* Somente Bin%crio, Octal ou Hexadecimal",160);           
           scanf("%d",&op);\\creio que tenhu que mudar a forma de ler a variavel mas não sei como         
                       
           system("cls");
           if(op<1 || op>4)
              {
                   printf("N%cmero errado!    Digite uma Op%c%co V%clida",163,135,198,160);
                   getch();
                   system("cls");
                   m--;
               }    
           else
               {
                  if(op==1&&k!=4)  
                    {  
                        printf("\n\n     Escolha abaixo qual convers%co deseja realizar. ",198);
                        printf("\n\n-------------------------------------------------------------\n");                        
                        printf("\n\n  1. Decimal para Bin%crio",160);
                        printf("\n  2. Decimal para Octal");          
                        printf("\n  3. Decimal para Hexadecimal");
                        printf("\n  4. Voltar");
                        
                        scanf("%d",&k);
                        system ("cls");
                     
                        if(k==1)
                           dec_bin();
                        if(k==2)
                           dec_oct();
                        if(k==3)
                           dec_hexa();           
                    }
                  
                 if(op==2&&k!=4)    
                    {
                        printf("\n\n     Escolha abaixo qual convers%co deseja realizar. ",198);
                        printf("\n\n-------------------------------------------------------------\n");
                        printf("\n\n  1. Bin%crio para Decimal",160);
                        printf("\n  2. Octal para Decimal");
                        printf("\n  3. Hexadecimal para Decimal");
                        printf("\n  4. Voltar");
                        scanf("%d",&k);
                        system("cls");
                     
                        if(k==1)
                           bin_dec();
                        if(k==2)
                           oct_dec();
                        if(k==3)
                           hexa_dec();
                    } 
                 if(op==3)
                     hist();                   
               }          
        }                                       
}

 

OBS: não reparem no visual do programa pois ainda estou editando!!! kkkk

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado,

mas acho que você se enganou!!!

 

char e;
e=getchar();

eu continuava a ter o mesmo problema

então tentei assim

char e;
e=getch();

e deu certo

mas mesmo assim obrigado,

sou muito grato por sua ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.