Ir ao conteúdo
  • Cadastre-se

Programa não executa como esperado


DNeto

Posts recomendados

  • Membro VIP

Boa tarde!

O objetivo deste programa é mostrar quantas consoantes uma frase tem.

 

 

#include <stdio.h>
#include <stdlib.h>
int conta_vogais(char string[])
{
    int i=0;
    int vogais=0;
    while(string!='\0'){
        if(string=='a'||string=='A'){
            vogais++;
        }
        if(string=='e'||string=='E'){
            vogais++;
        }
        if(string=='i'||string=='I'){
            vogais++;
        }
        if(string=='o'||string=='O'){
            vogais++;
        }
        if(string=='u'||string=='U'){
            vogais++;
        }
        i++;
    }
    return vogais;
}
int main(void)
{
    int soma;
    int consoantes = 0;
    int j=0;
    char uma_string[]="Sou uma string";
    while (uma_string[j]!='\0'){
        j++;
        soma=soma+j;
    }
    int vogais=conta_vogais(uma_string);
    printf("Vogais:%d\n", vogais);
    consoantes=soma - vogais;
    printf("Consoantes=%i\n", consoantes);
    system("pause");
}

 

Link para o comentário
Compartilhar em outros sites

Fiz um desses uma vez... deixo ele aqui.

#include <stdio.h>
#include <ctype.h>

void flush_in() {
    int ch;
    
    while ( ( ch = fgetc ( stdin ) ) != EOF && ch != '\n' ) {}
}

int main(){
    char frase[100] = {0};
    int letraAsc2 = 0;
    int vogal = 0;
    int consoante = 0;
    int i;
    
    printf("Entre a frase ou nome: ");
    scanf("%99[^\n]", frase); //leemos maximo 99 letras deixando espaço para o ultimo caracter nulo.
    flush_in(); // porém você já se perguntou o que acontece si superamos esas 99 letras do scanf? Continuam no buffer, melhor livrarnos delas com flush_in ;)
    
    printf("\n\n");
    for (i=0; i < (int)sizeof(frase); i++ ){
        letraAsc2 = tolower ( frase[i]); // transformamos as letras a minusculas, assim sempre sabemos que estamos trabalhando com minusculas sem se preucupar por maiusculas.
        if ( isalpha(letraAsc2) ){ // Si es una letra alfabetica....
            switch (letraAsc2) {
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    vogal++;
                    printf("Letra %c vogal\n", frase[i] ); 
                    break;
                default:
                    consoante++;
                    printf("Letra %c consoante\n", frase[i] );
                    break;
            }
        }
    }
    //Tadahhh!!!
    printf("\n\nVogal=%d\nconsoante=%d", vogal, consoante);
    
    getchar();
    return 0;
}

Não tem muito mistério, acredito que não precise de muita explicação, se tiver duvidas pergunte.

Link para o comentário
Compartilhar em outros sites

Explicação no código:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>//isdigit(int)

int conta_vogais(char string[]) 
{
    int i=0;
    int vogais=0;
    while(string[i] !='\0'){//sempre usar o indice [int]
        if(string[i]=='a'||string[i]=='A'){
            vogais++;
        }
        else if(string[i]=='e'||string[i]=='E'){//como nao vamos verificar o valor duas vezes caso ja encontramos acima, temos que usar else,
            vogais++;							//assim se encontrarmos em um dos else ifs, ele não ira ver nos outros abaixos.
        }
        else if(string[i]=='i'||string[i]=='I'){
            vogais++;
        }
        else if(string[i]=='o'||string[i]=='O'){
            vogais++;
        }
        else if(string[i]=='u'||string[i]=='U'){
            vogais++;
        }
        i++;
    }
    return vogais;
}
int main(void)
{
    int soma;
    int consoantes = 0;
    int j=0;
    char uma_string[]="Sou uma string";
    
    while (uma_string[j]!='\0'){
        if(uma_string[j] != ' ' && !isdigit(uma_string[j])) //Se não for espaco e numero
		   consoantes++;//então acrescentar consoantes - sendo que so depois obtemos o valor original de consoantes
		   j++;
    }
    
    int vogais=conta_vogais(uma_string);//Obter valor de vogais
    consoantes-=vogais;//consoantes = consoantes - vogais , obter valor original de consoantes
    
    printf("Vogais:%d\n", vogais);
    printf("Consoantes=%d\n", consoantes);
    system("pause");
}

Portanto, seu único erro deve ter sido o não uso de índice , no vetor string em conta_vogais(), portanto não sei dizer, pois poderia ter sido removido se você postou o codigo direto sem <> code.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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