Ir ao conteúdo
  • Cadastre-se
Guilherme Sixe

Funcao que return o maior e o menor de tres numeros.

Recommended Posts

Escreva uma função que receba 3 números informados pelo usuário no programa principal.

A função deverá retornar o maior e o menor número. Posteriormente, o programa principal

deverá imprimir essas informações. Essa função não possui o comando printf.

 

-> O meu codigo ta mostrando ao contrario, nao sei se o jeito que eu estou retornando esta certo, ou e o codigo da funcao que da margem pra erro. Dependendo dos numeros que eu entro, ele retorna certo. Se alguem souber onde esta a falha, agradeceria.

#include<stdlib.h>
#include<stdio.h>
int maior(int X, int Y, int Z);
int main(){
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	
	printf("Maior: %d\n\nMenor:%d\n\n", maior(a, b, c));
	
	system("pause");
	return 0;
	
}


int maior(int X, int Y, int Z){ 
    int maior, menor;

    if(X > Y){
    	maior = X;
    }else{
        maior = Y;
    }
    if(Z > maior){
        maior = Z;   
    }
	
    if(X < Y){
    	menor = X;
    }
    else{
        menor = Y;
    }
    if(Z < menor){
        menor = Z;
       
    }
    return(maior, menor);
    
}

 

Editado por Guilherme Sixe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente de forma semelhante

 

int maior(int X, int Y, int Z){ 
	// caso X for maior que todos ele vai entrar aqui
	if(x > y and x > z){
      maior = x;
		if(y > z) 
			menor = z;
		else  
			menor = y;
    }
	//caso X for menor que todos ele vai entrar aqui
	else if(x < y and x < z) {
		menor = x;
		if(y > z) 
			menor = z;
		else 
			menor = y;		
	}
	//se X é o numero do meio, vamos descobrir qual dos dois é o maior e o menor
	else if(z > y) {
		maior = z;
		menor = y;
	}
	else {
		menor = z;
		maior = y;
	}
    return(maior, menor);  
}

 

 

 

 

Editado por Fn1X
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa dia, não vi problema na tarefa e si, apenas o return que tem erro.

O erro é que, return somente retorna um dado. No teu código você pede que ele retorne dois, neste formato não funciona na linguagem C'.

Solução!? Ligeiramente simples; Pode ser: um vetor, struct, ponteiro, um interruptor no parâmetro.

A mais engenhosa que posso imaginas agora é a seguinte: Como trata se da comparação de inteiros, podemos pensar em um truque, ao invés da função retorna 1 ou mais inteiros ela retorna um float onde antes do ( . ) damos o maior valor, e depois do ponto o menor valor E.i: Digamos que o maior valor é 3, e o menor é 1 então a função retorna um float f = 3.1, ?Entedeu?!

Problema surgi se um ou mais dos  ̶p̶a̶r̶â̶m̶e̶t̶r̶o̶s̶ argumentos for negativo, aí complica. É importante pensamos que a função deve retorna o maior e o menor número, mas não ao mesmo tempo. Achamos que é melhor refazer a interpretação do exercício que imaginarmos uma maneira de retorna dois valores sem usar: Vetor, struct ou ponteiro.

:tw_confounded:

 

Editado por Mauro Britivaldo
Dica
  • 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

×