Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

zvinnicius

Ordenação de valores

Recommended Posts

Estou com esse exercício:

 

Escreva um programa que receba três valores, armazenando-os nas variáveis x, y e z, e ordene esses valores de modo que, no final, o menor valor esteja armazenado na variável x, o valor intermediário esteja armazenado na variável y e o maior valor esteja armazenado na variável z. Seu programa deve imprimir os valores de x, y e z respectivamente com um espaço entre eles.

 

O que eu fiz até agora:

 

https://github.com/zVinicius/PTP/blob/master/Exercicio_If

 

ou

 

#include <stdio.h>

int main (){

int x;
int y;
int z;

scanf("%i %i %i", &x, &y, &z);


if(x < y && x < z)
printf("%i", x);
if(y < z && y > x)
printf(" %i ", y);
if(z > x && z > y)
printf(" %i", z);
if(x == y && x == z && z == y)
printf( "%i, %i, %i", x, y, z);

printf("\n");

return 0;
}

 

Desde já agradeço pela força.

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include<stdio.h>

int main()
{
    
    int x,y,z,temp = 0;

    printf("\nQual o numero? ");
    scanf("%i %i %i", &x,&y,&z);

    if(x > y && x > z){
        temp = z;
        z = x;
        x = temp;
    }
    if(x > y && x < z){
        temp = y;
        y = x;
        x = temp;
    }
    if(x < y && x > z){
        temp = z;
        z = x;
        x = temp;
        temp = y;
        y = z;
        z = temp;
    }
    if(y > x && y > z){
        temp = z;
        z = y;
        y = temp;
    }
    if(y < x && y < z){
        temp = x;
        x = y;
        y = temp;
        temp = x;

    }
    if(z > y && z < x){
        temp = x;
        x = z;
        z = temp;
        temp = y;
        y = x;
        x = temp;
    }
    if(z > x && z < y){
        temp = y;
        y = z;
        z = temp;
    }
    
    printf("\n%i %i %i", x, y, z);
    
    return 0;
}

Acho que teria formas mais fáceis de se fazer esse código, inclusive com ordenação por borbulhamento mas como o enunciado não fala nada sobre vetores, de qualquer forma minha intenção é ajudar mesmo não sendo um profissional em programação ainda. No seu código você botou vários "ifs" mas não mexeu no valor das variáveis, no caso eu só vi as probabilidades e substitui os valores usando uma variável auxiliar para guardar o valor da variável que eu iria substituir.

 

P.s.: Como fiz rápido não tenho certeza se tem alguma falha no código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma mais customizada é usando um "for" e dois "if".

 

int main(void)
{
    int x = 0, int y = 0, int z = 0;
    int valor_TMP = 0;
    unsigned int tmp = 0;
 
    fprintf(stdout, "Qual o Numero?\n");
    fscanf(stdin, " %d %d %d", &x, &y, &z);
 
    for (; tmp < 2; tmp++ ) // Rodar duas vezes para caso o menor numero esteja no final
    {
        if ( x > y ) // Troca x por y
        {
            valor_TMP = x;
            x = y;
            y = valor_TMP;
        }
 
        if ( y > z ) // Troca y por z
        {
            valor_TMP = y;
            y = z;
            z = valor_TMP;
        }
    }
 
    fprintf(stdout, "\n\n\nMenor: %d\nMeio: %d\nMaior: %d\n", x, y, z );
 
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites


#include <stdio.h>

 

int main()

{

int x, y, z;

 

printf("Informe 3 números [x y z]: \n");

scanf("%d %d %d", &x, &y, &z);

 

if (y < x && y < z) //y é o menor valor

x ^= y ^= x ^= y;

else if (z < x && z < y) //z é o menor valor

x ^= z ^= x ^= z;

 

if (y > x && y > z) //y é o maior valor

z ^= y ^= z ^= y;

else if (x > z && x > y) //x é o maior valor

z ^= x ^= z ^= x;

 

printf("x: %d y: %d z: %d\n", x, y, z);

return 0;

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom eu fiz diferente, comecei com as condicoes mais gerais, ficou assim:

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

main(){
  int x, y ,z , temp;
  scanf("%d", &x);
  scanf("%d", &y);
  scanf("%d", &z);
  if(x<y && x<z && y==z){
    printf("%d,%d,%d", z,y,x);    
  }else if(y<x && y<z && x==z){
    temp=z;
    z=x;
    x=temp;
    temp=x;
    x=y;
    y=temp;
    printf("%d,%d,%d", z,y,x);
  }else if(z<y && z<x && x==y){
    temp=z;
    z=x;
    x=temp;
    printf("%d,%d,%d", z,y,x);
  }else{
    if(x>y && x>z){
      if(y>z){
	temp=z;
	z=x;
	x=temp;
	printf("%d,%d,%d", z,y,x);
      }else if(z>y){
	temp=z;
	z=x;
	x=temp;
	printf("%d,%d,%d", z,y,x);
      }else if(y==z){
	temp=z;
	z=x;
	x=temp;
	temp=x;
	x=y;
	y=temp;
	printf("%d,%d,%d", z,y,x);
      }
      
    }else if(y>x && y>z){
      if(x>z){
	temp=y;
	y=x;
	x=temp;
	temp=x;
	x=z;
	z=temp;
	printf("%d,%d,%d", z,y,x);
      }else if(z>x){
	temp=z;
	z=y;
	y=temp;
	printf("%d,%d,%d", z,y,x);
      }else if(z==x){
	temp=y;
	y=z;
	z=temp;
	printf("%d,%d,%d", z,y,x);
      }
      
    }else if(z>x && z>y){
      if(x>y){
	temp=x;
	x=y;
	y=temp;
	printf("%d,%d,%d", z,y,x);
      }else if(y>x){
	printf("%d,%d,%d", z,y,x);
      }else if(y==x){
	printf("%d,%d,%d", z,y,x);
      }
      
    }
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.