Ir ao conteúdo

C questão sobre funcao if else


Ir à solução Resolvido por CaioFagundes22,

Posts recomendados

  • Solução
Postado

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
Postado

"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
Postado

@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
}

 

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!