Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
aalex

duvida em verificar se uma letra é vogal

Recommended Posts

aalex

estou aqui a tentar fazer uma função que me verifica se uma letra é vogal, mas não estou a conseguir  🤔

#include<stdio.h>

int main (char letra)
{
  /*char letra;*/
  
  printf("Introduza uma letra: ");
  scanf ("%c",&letra);

    if ((letra=='a') || (letra=='e') || (letra=='i') || (letra=='o') || (letra=='u'))
       return printf("A letra %c é vogal", letra);

   else 
       return printf("A letra %c não é vogal", letra);
}

esse é o codigo que desenvolvi, ele não da erros e compila, so que não me devolve os printf a dizer se é vogal ou não

Share this post


Link to post
Share on other sites
aalex

int main(char letra) não está correcto.

porque não esta correcto? bem mas de qualquer das formas com a variavel declarada dessa forma ou depois da primeira { funciona, eu é que me esqueci dos \n no fim dos dois printf e então não estava a mudar de linha e funcionava só que eu nem estava a ver que estava a funciona  :cheesygrin:

peço desculpa por isso

bem mas enquanto por aqui tentava descubrir o mal fiz de outra forma:

int main (void)
{
  char l1;
  
  
  printf("Introduza uma letra: ");
  scanf ("%c",&l1);
  
    if(evogal (l1))
      printf ("Acabou vogal\n");
    else
      printf ("Acabou não é vogal\n");
    return 1;
}


int evogal (void)
{
    char letra;

    if ((letra=='a') || (letra=='e') || (letra=='i') || (letra=='o') || (letra=='u'))
       return 1;
   
    else 
       return 0;
}

só que agora desta forma diz-me sempre que não é vogal  😲, e não consido descubrir porque  :down:

Share this post


Link to post
Share on other sites
IceBrain

int evogal (void)
{
    char letra;

O que tens aqui é que a função não recebe nenhum valor (void) e depois crias uma variável vazia que vais comparar com as outras vogais.

O que tu tens que fazer é indicar que queres receber um char nessa função:

int evogal (char letra) 

E não precisas de criar uma variável nova, ela está definida no cabeçalho da função.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
aalex

bem ou eu não percebi ou dessa forma não esta a funcionar,  🤔

agora esta-me a dar erro :D

Share this post


Link to post
Share on other sites
Black-Wolf

Boas,

Segue o código em baixo a funcionar com as modificações comentadas

int evogal (char letra); //declarar a assinatura das funções antes da main

int main (void)
{
  char l1;
  
  
  printf("Introduza uma letra: ");
  scanf ("%c",&l1);
  
    if(evogal (l1))
      printf ("Acabou vogal %c\n",l1); //alterei os printfs para se ver o que passa
    else
      printf ("Acabou não é vogal %c\n",l1);
    return 1;
}


int evogal (char letra)
{
    //char letra; // Eliminei esta declaração pois o parâmetro é passado à função

    if ((letra=='a') || (letra=='e') || (letra=='i') || (letra=='o') || (letra=='u'))
       return 1;
   
    else 
       return 0;
}

Abraço

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.