Faça um programa que leia dois valores inteiros e chame uma função que receba estes 2 valores de entrada e retorne o maior valor na primeira variável e o menor valor na segunda variável. Escreva o conteúdo das 2 variáveis na tela.
Passo 1
O exercício pede pra ler duas variáveis inteiras, criar uma função que garanta que a primeira variável receba o valor maior e a segunda variável receba o valor menor, e no final mostrar as duas na tela. A matéria envolvida é passagem de parâmetros por referência (usando ponteiros em C), já que a função precisa alterar o conteúdo das variáveis originais.
Passo 2
Vamos criar uma função chamada ordena que receba dois ponteiros de int. Dentro dela, comparamos *x e *y; se *x for menor que *y, trocamos os valores usando uma variável temporária.
Passo 3
No main vamos declarar as duas variáveis, ler os valores do usuário com scanf, chamar ordena passando &a e &b, e depois imprimir as duas variáveis com printf.
Passo 4
É sempre bom testar o programa com exemplos simples. Por exemplo, se o usuário digitar 5 e 2, após a chamada de ordena a deve ser 5 e b deve ser 2; se digitar 3 e 7, depois a deve ser 7 e b deve ser 3.
Resposta
#include <stdio.h>
void ordena(int *x, int *y) {
if (*x < *y) {
int temp = *x;
*x = *y;
*y = temp;
}
}
if (*x < *y) {
int temp = *x;
*x = *y;
*y = temp;
}
}
int main(void) {
int a, b;
printf(“Digite dois valores inteiros: “);
scanf(”%d %d”, &a, &b);
int a, b;
printf(“Digite dois valores inteiros: “);
scanf(”%d %d”, &a, &b);
ordena(&a, &b);
printf("Maior valor: %d\n", a);
printf("Menor valor: %d\n", b);
return 0;
}