Ir ao conteúdo
  • Cadastre-se

C questão sobre funcao if else


CaioFagundes22
Ir à solução Resolvido por CaioFagundes22,

Posts recomendados

  • Solução

a funcao funciona, mais não atende todos os valores da questão 

enunciado:

1 - Escreva uma função que receba como parâmetros quatro números inteiros (A, B, C e D) e retorne o valor 0 se os números digitados são válidos ou o valor 1 caso sejam inválidos. Eles serão válidos se todas as seguintes condições são satisfeitas: (a) B for maior que C; (b) D for maior que A; (c) a soma de C com D for maior que a soma de A com B; (d) C e D forem valores positivos; e (e) A é um número par.

2 -

#include <stdio.h>
#include <stdlib.h>

void funcao( int a, int b, int c, int d)
{
    if ( b > c || d > a || c + d> a + b|| c > 0|| d > 0|| a%2==0){
        printf("Valores aceitos");
    }
    else
    printf("Valores não aceitos");
    
}

int main()
{
    int a;
    int b;
    int c;
    int d;
    scanf("%d%d%d%d", &a, &b, &c, &d);
    funcao(a,b,c,d);
 
    return 0;
}

Escreva uma função principal (main) que leia quatro valores inteiros digitados pelo usuário, chame a função anterior e imprima a mensagem "Valores aceitos" ou "Valores não aceitos" de acordo com o retorno da função

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

"Eles serão válidos se todas as seguintes condições são satisfeitas"

não usa || (or) e sim && (and).
não é "UM ou OUTRO".

é "UM e o OUTRO".

"retorne o valor 0 se os números digitados são válidos ou o valor 1 caso sejam inválidos"
O enunciado não pediu para imprimir na tela, mandou retornar valores. Se a função tem retorno ela não pode ser do tipo void. (repare também que nesse caso 0 é para verdadeiro e 1 é para falso, então voce pode usar uma negação para inverter os valores)

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

@CaioFagundes22    esse tipo de exercício serve para treinar sobre esses operadores mesmo ,  pois é fácil confundir o  e "&&"  com o ou "||" ,  e como o @Swalls    disse você colocou o operador   ou  "||"  , e assim se alguma dessas comparações for verdadeira ele informa números validos  ,   e também o enunciado diz para usar a função apenas para verificar se os números são válidos ,  e retornar 1 ou zero ,  e de volta na função main escrever o a msg de acordo com o resultado das comparações ,  e então seu código modificado ficou assim  :

#define _CRT_SECURE_NO_WARNINGS  // para usar scanf e outras funcoes no visual studio
#include <stdio.h>
#include <stdlib.h>
int funcao(int a, int b, int c, int d);

int main()
{
    int a;
    int b;
    int c;
    int d;
    scanf("%d%d%d%d", &a, &b, &c, &d);
    int ret = funcao(a, b, c, d);
    if (ret)  printf("Valores aceitos"    );
    else      printf("Valores n%co aceitos", 131); // o códig do caract "a" com Til eh 131
    return 0;
}
int funcao(int a, int b, int c, int d)
{
    return ((b > c && d > a && c + d > a + b && c > 0 && d > 0 && a % 2 == 0));
    // se todas essas comparacoes forem verdadeiras retorna 1 
    // se alguma delas for Falso , retorna zero
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...