Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

aalex

duvida em verificar se uma letra é vogal

Mensagens Recomendadas

aalex

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

#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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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  :biggrin:

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  :shocking:, e não consido descubrir porque  :down:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.