Ir ao conteúdo
  • Cadastre-se

Imprimir e contar consoantes em C


Posts recomendados

Alguma boa alma poderia me ajudar com esse código ? 

antecipadamente agradeço :)

 

/* Elabore um programa que leia uma palavra e se a palavra tiver número ímpar de caracteres, imprima e conte todas as suas consoantes. */

 

#include <stdio.h>
#include <string.h>
#include <locale.h>                          // biblioteca de local usada para chamar a setclocale no codigo

 

int main (void)
{

 

  setlocale(LC_ALL, "Portuguese");           // habilita a acentuação para o português

 

  char palavra [50];
  char letra;
  int tamanho,cont,i;


  /* Entrada de Dados */

 

  printf ("Informe uma PALAVRA: ");
  scanf ("%s", palavra);

 

  /* Processamento de Dados */

 

  tamanho = strlen (palavra);

  if (tamanho % 2 != 0)
  {
      for (i=0 ; i < 50 ; i++)
      {
          letra = palavra ;
          if (letra != 'a' && letra != 'e' && letra != 'i' && letra != 'o' && letra != 'u')
          {
              cont = cont + 1;
              printf ("\nConsoantes da palavra: %c\n", letra);
          }
      }
  }


  /* Saída de Dados */

 

  printf ("\nA palavra %s possui %d consoantes", palavra, cont);

 

  return (0);

 

}

Link para o comentário
Compartilhar em outros sites

#include <stdio.h>
#include <string.h>
#include <locale.h>                          // biblioteca de local usada para chamar a setclocale no codigo

int main (void)
{

  setlocale(LC_ALL, "Portuguese");           // habilita a acentuação para o português

  char palavra [50];
  //char letra;
  int tamanho=0,cont=0,i;

  /* Entrada de Dados */

  printf ("Informe uma PALAVRA: ");
  fflush(stdin);
  scanf ("%s", palavra);

  /* Processamento de Dados */

  tamanho = strlen (palavra);
  if (tamanho % 2 != 0)
  {
      for (i=0 ; i < tamanho ; i++)
      {
          //letra = palavra[i] ;
          if (palavra[i] != 'a' && palavra[i] != 'e' && palavra[i] != 'i' && palavra[i] != 'o' && palavra[i] != 'u')
          {
              cont = cont + 1;
              printf ("\nConsoantes da palavra: %c\n", palavra[i]);
          }
      }
  }else{
        printf("Palavra par!");
  }

  /* Saída de Dados */

  printf ("\nA palavra %s possui %d consoantes", palavra, cont);

  return (0);

}

corrigi e mudei algumas coisas...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

18 minutos atrás, Gabriel_Moro disse:

#include <stdio.h>
#include <string.h>
#include <locale.h>                          // biblioteca de local usada para chamar a setclocale no codigo

int main (void)
{

  setlocale(LC_ALL, "Portuguese");           // habilita a acentuação para o português

  char palavra [50];
  //char letra;
  int tamanho=0,cont=0,i;

  /* Entrada de Dados */

  printf ("Informe uma PALAVRA: ");
  fflush(stdin);
  scanf ("%s", palavra);

  /* Processamento de Dados */

  tamanho = strlen (palavra);
  if (tamanho % 2 != 0)
  {
      for (i=0 ; i < tamanho ; i++)
      {
          //letra = palavra[i] ;
          if (palavra[i] != 'a' && palavra[i] != 'e' && palavra[i] != 'i' && palavra[i] != 'o' && palavra[i] != 'u')
          {
              cont = cont + 1;
              printf ("\nConsoantes da palavra: %c\n", palavra[i]);
          }
      }
  }else{
        printf("Palavra par!");
  }

  /* Saída de Dados */

  printf ("\nA palavra %s possui %d consoantes", palavra, cont);

  return (0);

}

corrigi e mudei algumas coisas...

@Gabriel_Moro qual a função desse fflush(stdin) ? ainda não vi isso na faculdade :/

Link para o comentário
Compartilhar em outros sites

24 minutos atrás, Wagner Candido disse:

@Gabriel_Moro qual a função desse fflush(stdin) ? ainda não vi isso na faculdade :/

Ótimo, isso que significa que sua faculdade não te ensina a fazer do modo errado. :thumbsup:

 

Então aproveite para aprender a não usá-lo, pois fflush não foi feito para ser usado com o stdin e tem comportamento indefinido quando usado dessa maneira (com o comportamento dependendo da implementação do compilador sendo usado).

 

A invés disso use uma função como essa:

void flushstdin(){
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}

E use-a no lugar onde usaria fflush(stdin)...

 

Quanto a pra que isso serve, é pra limpar o buffer/stream da entrada padrão, ou seja, quando você digita dados no prompt que serão capturados por uma função de entrada de dados (como scanf), esta função pegará a parte da entrada que é relevante para ela, e se tiver mais alguma coisa ela deixará o restante do que foi digitado na entrada padrão (que poderia ser capturado por outra função de entrada posterior no programa).

 

Então, em várias situações é necessário limpar a entrada padrão (stdin) para descartar o que ficou sobrando após o comando de leitura fazer a captura.

 

Para entender melhor leia esse meu post onde expliquei uma situação bem comum onde isto acontece:

 

  • Curtir 1
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...