Ir ao conteúdo

Posts recomendados

Postado

Criei uma função para verificar se o que foi digitado pelo usuário contém somente caracteres alfabéticos e que a palavra tenha no mínimo 5 dígitos, entretanto, meu código só lê a primeira posição do vetor, o que faz com que qualquer palavra que não tenha número na primeira posição passe. Alguém pode me ajudar?

bool caracteres_alfabeticos(char alfab[])
{
        int i;
        
        for (i = 0; strlen(alfab); i++)
        {
                if ((alfab[i] >= 'a' && alfab[i] <= 'z' && strlen(alfab) > 4 && strlen(alfab) < 50)){
                
                        return true;
                }
                else
                {
                        return false;
                }
        }
}

a saída:

 image.png.fc6bd89b37d33e600e7d975f1ada2920.png

  • Curtir 1
Postado
bool caracteres_alfabeticos(char alfab[])
{
        int i;
        int l = strlen(alfab);
        if (l < 5 || l > 49) return false;
        for (i = 0; i < l; i++)
        {
                if (alfab[i] < 'a' || alfab[i] > 'z') return false;
        }
        return true;
}

Funciona apenas com caracteres minúsculos. Para os maiúsculos, deixo com você.

  • Curtir 1
Postado

@nagatonie Seu código só lê a primeira posição porque você já faz o return true ou false na leitura do primeiro caractere. Como comentado acima, no teste da condição só retorne quando for falsa e deixe o return no fim da função como true.

  • Curtir 1
  • Amei 1

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