0

Erro em Código C

R
Renan Scarabelli

Olá pessoal! Estou realizando alguns exercícios do curso de Gestão de TI, Porém o código passado no livro está dando erro.

O código deveria calcular quantas consoantes há em uma palavra, porém independente da palavra ele coloca que há apenas uma consoante. Copiei ele igualzinho no livro para conferirmos o erro.


#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <string.h>


int conta(char nome[])

{

int i, tam, qtd;

tam = strlen(nome);

nome = strupr(nome);

qtd = 0;

for (i=0;i<tam;i++);

{

if ((nome[i] != 'A') && (nome[i] != 'E') && (nome[i] != 'I') && (nome [i] != 'O') && (nome [i] != 'U') && (nome[i] != ' ')) qtd ++;

  }

  return qtd;

}


int main(){

setlocale(LC_ALL,"");


int total;

char palavra[30];

printf("Informe a string: ");

gets(palavra);

total = conta(palavra);

printf("A quantidade de consoantes da string %s é %d \n", palavra, total);

system("pause");

return(0);

}




0
0

Comentários (3)

0
R

Renan Scarabelli

27/06/2021 12:43

Perfeito Caio, Acertou em cheio e resolveu o problema. Eu errei na hora de copiar o Código.

Testei agora e deu certinho.

0
Josélio Júnior

Josélio Júnior

27/06/2021 03:51

É como o Caio falou mesmo. O ponto e vírgula está empatando a continuidade do laço de iteração for.

Testei esse código traduzindo para JavaScript para confirmar e sim acontece o mesmo problema.


O código correto do teste que fiz em JavaScript.

const nome = 'RENAN';

(() => {
    let i, tam, qtd;
    tam = nome.length;
    qtd = 0;

    for (i = 0; i < tam; i++) {
        if (
            nome[i] != 'A' &&
            nome[i] != 'E' &&
            nome[i] != 'I' &&
            nome[i] != 'O' &&
            nome[i] != 'U' &&
            nome[i] != '' 
        ) qtd++;
    };

    console.log(qtd);

})();


Como se trata de um teste de livro creio que ao desenrolar dele serão abordados assuntos como expressões regulares que diminuem o tamanho da condicional. Ótimos estudos!

1
C

Caio Brone

27/06/2021 02:55

Tudo beleza, olhando só para sua sintaxe, sem parar para ver a lógica, for (i=0;i<tam;i++); acredito que esses ; ai ta sobrando brother.

None

Brasil