Ir ao conteúdo
  • Cadastre-se
Gabbie1

C <Exercicio de Função Iniciante>

Posts recomendados

Como eu posso fazer esse exercício da melhor forma?

 

/* Faça um programa contendo uma função para verificar se o dia é válido (está no intervalo
entre 1 e 31) e se o mês está entre 1 e 12. Caso esteja incorreto, ler nova data. */

#include <stdio.h>

int data (int d, int m){ 


O máximo que eu consegui até agora foi isso, mas quando o número dá errado ele não entra no if de novo. 

 

if (d >= 1 && d <= 31 && m >= 1 && m <= 12)
printf ("Dia valido!"); 

else 
    printf ("Entre com um dia valido: ");
    scanf ("%d", &d);

    printf ("Entre com um mes valido: ");
    scanf ("%d", &m);
    
}


int main (){
    int dia, mes; 
    
    printf ("Entre com o dia: ");
    scanf ("%d", &dia);

    printf ("Entre com o mes: ");
    scanf ("%d", &mes); 
    
    data(dia, mes);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa fechar um laço no início do programa pra ele voltar ao if. Por exemplo 'do [todo o programa] while [dia/mês é inválido]' ou 'while [dia/mês é inválido], [entre dia/mês válido]'.

Por que sua função main está deslocada abaixo do teste condicional?

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Shaman93 Eu tentei usar um do while no main mas como eu posso dizer pro main que o numero é invalido? 

Esse que é o meu problema.

Eu consigo resolver o problema se fosse todo no main mas como pede função minha dificuldade tá sendo entender isso.  

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, Gabbie1 disse:

Eu tentei usar um do while no main mas como eu posso dizer pro main que o numero é invalido?

Da mesma forma que você usou o comando if. O while também é um comando condicional, tem um if escondido nele. Você pode fazer por exemplo 'do [pergunta dia e mês] while [dia e mês forem inválidos]'. No seu if você testou se o dia e mês eram válidos, basta testar a condição contrária (dia menor que 1 ou maior que 31, mês menor que 1 ou maior que 12). Atente que o operador '&&' significa E, ambas condições devem ser cumpridas. Nesse caso o operador que você precisa usar é '||', OU, se qualquer uma das condições não for cumprida é satisfeito.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Shaman93 Entendi! Obrigada. 

Eu tentei dessa forma, inverti os operadores etc, mas achei que minha lógica estivesse errada e tivesse alguma forma trazer essa informação da função. 

Fico feliz em saber que minha lógica não estava totalmente errada, tinha só esquecido do || e metido && em tudo no while.  

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!