7)Fazer uma função que receba 3 números reais como parâmetros, A B e C ,e os ordene de tal forma que,ao final da função,A contenha o menor número e C o maior.Em seguida,fazer um programa que receba 3 números do usuário,chame a função e mostre os números ordenados.

Passo 1

O enunciado pede uma função que receba três números reais (vamos chamar de \,A, \,B e \,C) e os coloque em ordem crescente de modo que, ao final, \,A seja o menor e \,C seja o maior. Em seguida, devemos escrever um programa que leia três números do usuário, chame essa função e mostre o resultado ordenado. O conteúdo envolvido é: passagem de parâmetros por referência e algoritmo de ordenação simples (trocas entre pares).

Passo 2

Definimos a assinatura da função usando ponteiros para permitir a troca dos valores originais. Em C, ficaria assim:
void ordena(float *A, float *B, float *C);
Aqui, \,*A, \,*B e \,*C referem-se aos valores passados, e podemos modificá-los dentro da função.

Passo 3

Dentro de ordena usamos comparações sucessivas e uma variável temporária para trocar valores. A estratégia é:
  • Se \,*A > *B, trocamos \,*A com \,*B.
  • Se \,*A > *C, trocamos \,*A com \,*C.
  • Se \,*B > *C, trocamos \,*B com \,*C.
    Esse conjunto de três comparações garante que, no fim, *A\le *B\le *C.

Passo 4

No main lemos três valores reais do usuário em variáveis locais (por exemplo, x, y, z), chamamos
ordena(&x, &y, &z);
e então imprimimos x, y e z, que já estarão em ordem crescente.

Resposta

#include <stdio.h>

/* Função ordena três valores em ordem crescente via passagem por referência */
void ordena(float *A, float *B, float *C) {
 float temp;
 /* Garante *A <= *B */
 if (*A > *B) {
 temp = *A;
 *A = *B;
 *B = temp;
 }
 /* Garante *A <= *C */
 if (*A > *C) {
 temp = *A;
 *A = *C;
 *C = temp;
 }
 /* Garante *B <= *C */
 if (*B > *C) {
 temp = *B;
 *B = *C;
 *C = temp;
 }
}

int main() {
 float x, y, z;
 printf("Digite tres numeros reais:
");
 scanf("%f %f %f", &x, &y, &z);

 ordena(&x, &y, &z);

 printf("Numeros em ordem crescente: %.2f %.2f %.2f
", x, y, z);
 return 0;
}

Exercícios relacionados