Ir ao conteúdo

Posts recomendados

Postado

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);
    
}

 

Postado

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);  
}

 

 

 

 

  • Curtir 1
Postado

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:

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!