Ir ao conteúdo
  • Cadastre-se

C++ Maquina de estado ou outra resoluçao


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Saudações geral. 

 

Tenho dificuldades com este código abaixo. Alguém pode me ajudar?

Preciso  implementar estado dentro desta função, de modo a não permitir mais que 1 ponto decimal, sinal-/+ somente como primeiro caráter .

Agradeço a ajuda....

 

int l=strlen(linha);
   for(i=0; i<l; i++) {
            if( isdigit(linha) ) continue; 
            if( linha=='.'  )    continue; 
            if( linha=='-'  )    continue;          
            if( linha=='+'  )    continue;          
            if( linha=='\n' )    continue;     
            return FALSE;  // string linha contém ao menos 1 caracter invalido
   };
   return TRUE;  // string linha eh valida como numerica
}

 

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Solução
int l=strlen(linha);
int cont = 0;//conta os ".";
   for(int i=0; i<l; i++) {
          if (!isdigit(linha[i]))
          {
            if (linha[i]=='.') 
            {
                cont++;
                if (cont < 2) continue;
            } 
            if ((i ==0) && ((linha[i] == '+') || (linha[i] == '-')))  continue; 
            return FALSE; // string linha contém ao menos 1 caracter invalido
          }
            
   }
            
   return TRUE;  // string linha eh valida como numerica

Verifique se assim funcionar, não testei.

Link para o comentário
Compartilhar em outros sites

Não é bem assim uma máquina de estados. Na verdade numa máquina mesmo você deve ter uma variavel controlando o estado da máquina (geralemente um int) e if's para controlar em que estado ir.

 

Acredito que nesse seu caso você precise desenhar ou criar um grafo de transição de estados. Ir direto ao código não irá lhe ajudar muito, acredite, desenhar o grafo de transição lhe ajuda muito mais que programar a máquina.

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!