Ir ao conteúdo

Posts recomendados

Postado

boa tarde!

estou tendo problemas com o meu codigo(de novo),

estou tentando verificar se numa string a primeira "casa" é uma letra e as outras sao dígitos, letra ou "_", mas infelizmente não entendi como usa as funções para a verificação.

quando executo o codigo parece que ele simplesmente ignora o "if", sera que alguém pode me dar uma luz??

 

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    string palav = "";
    int i=0, n;
    char resp;
    bool achou=false;

    do{
    cout << "Digite uma palavra " << endl;
    getline(cin, palav);
    }while(palav == " ");


    if(isalpha(palav[i]) == true){
      for(i=1; i<=palav.size(); i++){
        if(isalnum(palav[i]) == true and palav[i] == '_'){
            achou = true;
        }else{
          achou = false;
          resp = palav[i];
          break;
        }
      }
    }

    if(achou == true){
        cout << "A sua entrada foi permitida";
    }else{
      cout << "entrada invalida";
    }

    return 0;
}

Ps. não me julgue caso eu tenha feito uma burrice mt grande, estou mt enferrujado com manipulação de strings.

  • Obrigado 1
Postado

@Mr-86     as funções isalnum e isalpha não precisam de comparador "true ou false" ,  e no "IF"  ele nunca seria executado , pois  se for alfanumeric não seria "and"  também  igual  a underline , e sim "or"  ou uma coisa ou outra ,  e esse trecho poderia ser assim  :

string palav = "";
do
{
  cout << "Digite uma palavra " << endl;
  getline(cin, palav);
} while(palav == "");                /// igual a vazio
if( isalpha( palav[i] )/* == true*/) /// checa se eh letra
{ 
  cout << palav[i] << " Eh  Uma Letra !" << endl;
  for(i=0; i<palav.size(); i++)      /// vetor comeCa em zero
  {
    if(isalnum(palav[i]) /*== true*/ /// checa se eh letra ou dIgito numErico
       or palav[i] == '_' )          /// ou eh caractere special underline
    {
      achou = true;
    }
    else

 

Postado

@devair1010 tentei aplicar o que você falou, mas continua dando o mesmo erro. ele continua exibindo a mensagem de entrada invalida.

 

 if(isalpha(palav[i])){

        cout << palav[i] << endl;
        system("pause");

      for(i=0; i<=palav.size(); i++){
        if(isalnum(palav[i]) or palav[i] == '_'){
            achou = true;
        }else{
          achou = false;
          resp = palav[i];
          break;
        }
      }
    }

    if(achou == true){
        cout << "A sua entrada foi permitida";
    }else{
      cout << "entrada invalida" << endl << "O caractere não permitido e" << resp;
    }

Acredito que ele não ta entrando no If que esta dentro do for ou esta entrando direto no else e parando o for.

  • Curtir 1
Postado

@Mr-86    poste seu código Atual ,  e um parecido , seria esse :

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
  int i=0, n;
  char resp;
  bool achou = false;
  string palav = "";
  do
  {
    cout << "Digite uma palavra " << endl;
    getline(cin, palav);
  }while(palav == "");                 /// igual a vazio
  if( isalpha( palav[i] )/* == true*/) /// checa se eh letra
  { 
    cout << palav[i] << " Eh  Uma Letra !" << endl;
    for(i=0; i<palav.size(); i++)      /// vetor comeCa em zero
    {
      if(isalnum(palav[i]) /*== true*/ /// checa se eh letra ou dIgito numErico
         or palav[i] == '_' )          /// ou eh caractere special underline
      {
        achou = true;
      }
      else
      {
        achou = false;
        resp = palav[i];
        break;
      }
    }
  }
  if(achou == true)
  {
    cout << "A sua entrada foi permitida";
  }
  else
  {
    cout << "entrada invalida";
  }
  return 0;
}

 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!