Uproszczenie zapisu if

0

Jak mogę prościej to zapisać?

  if (y>=z)
    mniejsza = y;
  if (z>=y)
    mniejsza = z;
0

Oto cały kod.
Chciałbym zapisać go jakoś prościej.

if ((x>=y) && (x>=z)){
    najwieksza = x;
    {
        if (y>=z)
            mniejsza = y;
        if (z>=y)
            mniejsza = z;
    }
} else if ((y>=x) && (y>=z)){
    najwieksza = y;
    {
        if (x>=z)
            mniejsza = x;
        if (z>=x)
            mniejsza = z;
    }
} else if ((z>=x) && (z>=y)){
    najwieksza = z;
    {
        if (x>=y)
            mniejsza = x;
        if (y>=x)
            mniejsza = y;
    }
}
0
Po pierwsze to na moje slepe oko ten kod jest błędny: ```c if (y>=z) mniejsza = y; if (z>=y) mniejsza = z; ``` Nie wybiera najmniejszego tylko środkowy

Co do pytania jak uprościć tego wewnętrznego ifa to ja bym napisał:

mniejsza = (y < z) ? y : z
0

Kod ma wybierać największą liczbę i środkową.

mniejsza = (y < z) ? y : z

Możesz mi to wyjaśnić za co odpowiada ? oraz :

3

No to:

mniejsza = (y >= z) ? y : z

Możesz mi to wyjaśnić za co odpowiada ? oraz :

Operator trójargumentowy - skrócony zapis ifa, odpowiednik:

if (y >= z)
    mniejsza = y
else
    mniejsza = z;
2
#include <algorithm>

...

int najwieksza, srodkowa;

int tablica[3] = {x, y, z};
std::sort(tablica, tablica + 3);
najwieksza = tablica[2];
srodkowa = tablica[1];
1

W sumie masz tylko 2 sensownych warianty:

#include <iostream>
using namespace std;

int main()
{
	for(int w,x,y,z;cin>>x>>y>>z;)
	{
		cout<<"w1: ";
		if(x<=y)
		{
			if(x<=z)
			{
				if(y<=z) cout<<x<<' '<<y<<' '<<z;
				else cout<<x<<' '<<z<<' '<<y;
			}
			else cout<<z<<' '<<x<<' '<<y;
		}
		else
		{
			if(y<=z)
			{
				if(x<=z) cout<<y<<' '<<x<<' '<<z;
				else cout<<y<<' '<<z<<' '<<x;
			}
			else cout<<z<<' '<<y<<' '<<x;
		}
		cout<<endl;
		
		cout<<"w2: ";
		if(x>y) w=x,x=y,y=w;
		if(x>z) w=x,x=z,z=w;
		if(y>z) w=y,y=z,z=w;
		cout<<x<<' '<<y<<' '<<z;
		cout<<endl;
	}
	return 0;
}
0

@_13th_Dragon: Wszystko musi być z zastosowaniem if
Bez używania for

3
bifed85954 napisał(a):

Jak mogę prościej to zapisać?

  if (y>=z)
    mniejsza = y;
  if (z>=y)
    mniejsza = z;

Nie wiem czemu nazywa się mniejsza ale logicznie to masz to

mniejsza = std::max(y, z);
0
several napisał(a):
bifed85954 napisał(a):

Jak mogę prościej to zapisać?

  if (y>=z)
    mniejsza = y;
  if (z>=y)
    mniejsza = z;

Nie wiem czemu nazywa się mniejsza ale logicznie to masz to

mniejsza = std::max(y, z);

Mogę zrobić coś na zasadzie?

najwieksza = max(x, y, z);
najmniejsza = min(x, y, z);

posrednia != najwieszka && najmniejsza

1 użytkowników online, w tym zalogowanych: 0, gości: 1