Informática, perguntado por meloadrielle, 1 ano atrás

3. Faça um programa em C que leia 4 valores X, A, B e C onde X é um número inteiro e positivo e A, B,e C são quaisquer valores reais. O programa deve escrever os valores lidos e: • se X = 1, escrever os três valores A, B e C em ordem crescente; • se X = 2, escrever os três valores A, B e C em ordem decrescente; • se X = 3, escrever os três valores A, B, e C de forma que o maior valor fique entre os outros dois; • se X não for um dos três valores acima, dar uma mensagem indicando isso.

Soluções para a tarefa

Respondido por bokomoko
0
Eu faria assim em C

/*
Faça um programa em C que leia 4 valores X, A, B e C onde 
X é um número inteiro e positivo e A, B,e C são quaisquer valores reais. 
O programa deve escrever os valores lidos e: 
• se X = 1, escrever os três valores A, B e C em ordem crescente; 
• se X = 2, escrever os três valores A, B e C em ordem decrescente; 
• se X = 3, escrever os três valores A, B, e C de forma que o maior valor
ique entre os outros dois 
• se X não for um dos três valores acima, dar uma mensagem indicando
sso.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

float maior( float um_valor, float outro_valor) {
  if (um_valor > outro_valor) { return (um_valor); }
  else { return (outro_valor);};
};
float menor( float um_valor, float outro_valor) {
  if (um_valor < outro_valor) { return (um_valor); }
  else { return (outro_valor);};
};

void main() {
int x;
float a=0,b=0,c =0;
float maior_de_todos, segundao, terceiro;
srand(time(NULL));   // should only be called once

x = 0 ;
do {
  printf("\nOs valores correntes são \n A=%f,\n B=%f,\n C=%f \n",a,b,c);
  printf("Digite\n 0 para sair \n 1 para ordem crescente \n");
  printf(" 2 para ordem decrescente \n 3 para o maior no meio \n 4 para
informar novos valores\n");
  printf(" 5 para o computador sortear 3 valores\n");
  printf("Informe o valor de X ou tecle 0 para sair");
  scanf("%i",&x);
  if (x) {
      maior_de_todos = maior(a,maior(b,c));
      terceiro = menor(a, menor(b,c));
      segundao = menor( menor( maior(b,c), maior(b,a)), menor(maior(a,c),maior(a,b)));
      switch (x) {
        case(1) : 
          // ordem crescente
          printf("\nExibir em ordem crescente \n");
          printf("%f < %f < %f \n",terceiro, segundao, maior_de_todos);
          break;

        case(2):
          // ordem decrescente
          printf("\nExibir em ordem decrescente \n");
          printf("%f > %f > %f \n",maior_de_todos, segundao, terceiro);
          break;

        case(3):
          // maior no meio
          printf("\nExibir com o maior no meio\n");
          printf("%f < %f > %f \n",terceiro, maior_de_todos, segundao);
          break;

        case(4):
          // maior no meio
          printf("Revalorando as variáveis A, B e C\n");
          printf("Informe o valor de A");
          scanf("%f",&a);
          printf("Informe o valor de B");
          scanf("%f",&b);
          printf("Informe o valor de C");
          scanf("%f",&c);
          break;

        case(5):
          // cria novos valores aleatórios
          printf("sorteando valores para A, B e C\n");
          a = rand()%100-30; // -30 para dar números negativos
          b = rand()%100-30;
          c = rand()%100-30;
          break;

        default: 
          // mensagem de erro
          printf("Lamento mas essa opção é inválida, tente 0 ou 1 ou 2 ou 3 ou 4
n");
      }
 }
  
}while (x);

}

Pode testá-lo aqui -> https://repl.it/@bokomoko/ordemde-3






meloadrielle: não tem um código mais simples não,tem funções que a professora ainda não deu então não entendo e queria entender pelo menos o funcionamento dele
bokomoko: Observação interessante
bokomoko: Se não usar funções o código vai ficar ainda mais complicado
bokomoko: Se me permite uma sugestão, não aprenda apenas o que o professor ensina ok ? Tenha mais ambição.
bokomoko: No mundo da programação, temos que aprender mais do que nos ensinam.
Perguntas interessantes