Ir para conteúdo
Fórum Script Brasil
  • 0

Programa não executa como esperado


dneto

Pergunta

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

2 respostass a esta questão

Posts Recomendados

  • 0

Olá!

 

Olha não vou ter muito tempo de olhar e explicar o seu codigo, então vou lhe falar do que acho o mais relevante . . .

 

Uma string não passa de uma cadeia de caracteres, e não um único caractere, em casos como esse a logica nos diria que:

 

if ( uma_string == 'a' || uma_string == 'A' )

 

mostraria o resultado esperado, mas não é assim, a sintaxe da linguagem C não permite esse tipo de logica, isso acontece porque uma string é uma cadeia de caracteres ( vetor ), ou seja, um monte de char uns atrás do outro em sequencia, cada qual em sua própria posição.

 

char string [ 25 ] = sou uma string

 

Sendo que quando nos referimos a uma string na linguagem C, o endereço do primeiro elemento da string é um(a) ponteiro ( referencia ) para se encontrar todos os outros elementos do vetor.

 

Neste caso a logica correta seria a de que você terá de ler cada caractere existente na string e comparar cada uma com as condições que você deseja, lembrando que as posições se iniciam em e não em 1 como seria o bom senso, neste caso a logica correta para a comparação seria:

 

int i = ;


while ( uma_string [ i ] != '\0' )
    {
      if ( uma_string [ i ] == 'a' || uma_string [ i ] == 'A' )
        {
          vogais++;
        }
      i++;
    }

 

Bom por hora é isso . . . tente criar um novo projeto apenas para reproduzir a logica que lhe mostrei . . . e como disse não vou ter tempo de dar uma olhada no resto do codigo por hora!

 

Ubuntu 14.04 LTS   -   GCC 4.8   -   MonoDevelop 4.0.12   -   CodeBlocks 13.12

 

Espero Ter Ajudado ! ! !

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...