Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyswietlaanie licz od najmniejszej do najwiekszej
Forum PHP.pl > Forum > PHP
invx
mam 4 liczyby w zmeinnych a b c i d

i jak uzywajac tylko waronkow if, (nie petli czy gotowej funkcji w php, ani tablic) wyswietlic je od najmniejszej do najwiekszej, gosc mi w szkole cos takiego kazal napisac, ja posiedziale mnad tym pare godzin, i czeski film - nikt nic nie wie. Dajcie jakies wskazowki, bo ja nie obejmuje tego swoim umyslem, jak mozna to na IF'a ch zrobic, pogrzalo go ... ?
NuLL
Prawie : Da się: robisz 3 if-y aby znalesc najwieksza z nich
Tak samo najmniejsza. A z reszta nie wiem sad.gif ale tu chodzi zagniezdzone if-y - mozna usuwac zmienne albo zmieniac im wartosci questionmark.gif- jesli tak to cos sie da zrobic
invx
mi sie tez udalo dojs zeby odnalesc najwieksza i najmniejsza blink.gif nie mozna usuwac, zmiennych, a wartosci to normalnie poprzez przypisanie ze $druga=$b, sadsmiley02.gif, zagniezdzac ify mozna

to bedzie if w ifie ifa ifem pogania aaevil.gif ale pomuzcie, bo cos musze wykombinowac
sztosz
zrobiłem to w c++ bo tak mi łatwiej, program działa sprawnie, ale sprawdz czy się gdzies nie jeb***em sad.gif
Same IF ELSE. W sumie 10 zmiennych. 4 do wprowadzenia danych. 4 do pożadkowania od najwyzszej do najniższej i 2 pomocnicze. Kod jest strasznie długi mimo to go wkleje bo nie mam zadnego miejsca w sieci poza własnym kompem a on nie jest 24 h online,

Kod
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int a,b,c,d;
    int pierwsza,druga,trzecia,czwarta;
    int x,y;
    cout << "podaj czwarta liczby, zatwierdz enterem każdą:";
    cin >> a;
    cin >> b;
    cin >> c;
    cin >> d;
//największa start
    if (a > b)
    {
        if (a > c)
        {
            if (a > d)
            {
                pierwsza = a;
            }
            else
            {
                pierwsza = d;
            }
        }
        else
        {
            if (c > d)
            {
                pierwsza = c;
            }
            else
            {
                pierwsza = d;
            }
        }
    }
    else
    {
        if (b > c)
        {
            if (b > d)
            {
                pierwsza = b;
            }
            else
            {
                pierwsza = d;
            }
        }
        else
        {
            if (c > d)
            {
                pierwsza = c;
            }
            else
            {
                pierwsza = d;
            }
        }
    }
//największa koniec

//najmniejsz start
    if (a < b)
    {
        if (a < c)
        {
            if (a < d)
            {
                czwarta = a;
            }
            else
            {
                czwarta = d;
            }
        }
        else
        {
            if (c < d)
            {
                czwarta = c;
            }
            else
            {
                czwarta = d;
            }
        }
    }
    else
    {
        if (b < c)
        {
            if (b < d)
            {
                czwarta = b;
            }
            else
            {
                czwarta = d;
            }
        }
        else
        {
            if (c < d)
            {
                czwarta = c;
            }
            else
            {
                czwarta = d;
            }
        }
    }
//najmniejsz koniec

//liczby srodkowe do tempów x i y start
    if (a == pierwsza)
    {
        if (b == czwarta)
        {
            x = c;
            y = d;
        }
        else
        {
            if (c == czwarta)
            {
                x = b;
                y = d;
            }
            else
            {
                x = b;
                y = c;
            }
        }
    }
    else
    {
        if (b == pierwsza)
        {
            if (c == czwarta)
            {
                x = a;
                y = d;
            }
            else
            {
                if (a == czwarta)
                {
                    x = c;
                    y = d;
                }
                else
                {
                    x = c;
                    y = a;
                }
            }
        }
        else
        {
            if (c == pierwsza)
            {
                if (b == czwarta)
                {
                    x = a;
                    y = d;
                }
                else
                {
                    if (a == czwarta)
                    {
                        x = b;
                        y = d;
                    }
                    else
                    {
                        x = b;
                        y = a;
                    }
                }
            }
            else
            {
                if (b == czwarta)
                {
                    x = a;
                    y = c;
                }
                else
                {
                    if (a == czwarta)
                    {
                        x = b;
                        y = c;
                    }
                    else
                    {
                        x = b;
                        y = a;
                    }
                }
            }
        }
    }
//liczby srodkowe do tempów x i y start

//ukladnanie środkowych środek
    if (x > y)
    {
        druga = x;
        trzecia = y;
    }
    else
    {
        druga = y;
        trzecia = x;
    }
//ukladnanie środkowych koniec
    cout << endl;
    cout << pierwsza << " > " << druga << " > " << trzecia << " > " << czwarta << endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


W sumie było to proste bo nie machnąłem się ani razu przy pisaniu i się skompilował bez ani jednego ostrzeżenia smile.gif
UPDATE:
W sumie dałoby się wykorzystac tylko 8 zmiennych bez wiekszych problemów, ale nie chce mi się, jak będzie trzeba daj znać.
invx
@sztosz dzieki wielkie, jestes moim dluznikiem biggrin.gif:D:D, musze to jeszce na scheat blokowy przerobic blink.gif, ale jakos sobie poradze, jeszce raz dzzieki

aha, co do dlugosci kodu
do guru z infu tak powiedzial "to tylko wyadaje sie skomplikowane, ale bedzie duzo prostrze niz to z trojkatami" aaevil.gif aaevil.gif aaevil.gif (to z trojkatami na hydeparku napisalem, "ostatnie szlify kodu") niech go szlag aaevil.gif
sztosz
No i w sumie miał rację to nie było trudne, to było naprawdę łatwe tylko najgorsze jest to wklepywanie winksmiley.jpg i jeszcze jedno...

Cytat
sztosz...jestes moim dluznikiem...


A jak mogę splacić ten dług który zaciągnąłem? :mrgreen:
invx
odwrotnie, to ja jestem twoim biggrin.gif biggrin.gif

zrobilem z tego schemat blokowy to sto 3 strony A4 zajmuje blink.gif

P.S.
bo to przedewszystkim mialo byc na blokowym, a przeciez cos takiego na blokowy to niepowazne
sztosz
To mu pokaż ten blokowy na 3 stronach A4. Ciekawe co zrobi? Ciekawe czy mu sie bedzie chciało sprawdzać? biggrin.gif Mi by się nie chcialo. biggrin.gif Ale niestety krucej jakoś nie bardzo umiem tego zrobić sad.gif
invx
jasne ze pokaze biggrin.gif , tak skromnie nie chwalac sie to w klasie jest najlepszy z infy, i jak ja tego nie napisalem, o ciekawe co inni zrobia biggrin.gif biggrin.gif

EDIT
to nie 3 strony a 6 :Pkm
antao
tak na marginesie winksmiley.jpg
sortowanie wszystkich możliwych kombinacji (np. 2, 3, 2, 3)
  1. <?php
  2.  
  3. //ustalamy liczby: $first and $quarter
  4. if ($a <= $b && $a <= $c && $a <= $d) 
  5.  $first = $a; //liczba a
  6. elseif ($b <= $a && $b <= $c && $b <= $d) 
  7.  $first = $b; //liczba b
  8. elseif ($c <= $a && $c <= $b && $c <= $d) 
  9.  $first = $c; //liczba c
  10. else $first = $d; //liczba d
  11.  
  12. $quarter = $a; //zakladamy ze jest to ostatnia liczba
  13. if ($b >= $quarter) 
  14. $quarter = $b;
  15. if ($c >= $quarter) 
  16. $quarter = $c;
  17. if ($d >= $quarter) 
  18. $quarter = $d;  
  19.  
  20. //ustalamy liczby: $second and $third
  21. if($a == $b || $a == $c || $a == $d) $p1 = TRUE;
  22. if($b == $c || $b == $d) $p2 = TRUE;
  23. if(empty($p2))
  24. if($c == $d) $p3 = TRUE; //zaleznosc 3-stopnia :)
  25.  
  26. if(($first != $a && $quarter != $a) || 
  27.  (!empty($p1) && $quarter >= $a && $first <= $a)) {
  28.  $m1 = $a;
  29.  $m2 = $a;
  30. }
  31. if(($first != $b && $quarter != $b) || 
  32.  (!empty($p2) && $quarter >= $b && $first <= $b)) {
  33.  $m1 = $b;
  34.  (empty($m2) ? $m2 = $b : $m2 = $m2);
  35. }
  36. if(($first != $c && $quarter != $c) || 
  37.  (!empty($p3) && $quarter >= $c && $first <= $c)) {
  38.  $m1 = $c;
  39.  (empty($m2) ? $m2 = $c : $m2 = $m2);
  40. }
  41. if($first != $d && $quarter != $d) {
  42.  $m1 = $d;
  43.  $m2 = $m2;
  44. }
  45. ($m1 > $m2 ? $second = $m2 : $second = $m1);
  46. ($m1 < $m2 ? $third = $m2 : $third = $m1);
  47. ?>


sortowanie liczb różnych od siebie (np. 1, 2, 3, 4)
  1. <?php
  2.  
  3. if ($a < $b && $a < $c && $a < $d) 
  4.  $first = $a; //liczba a
  5. elseif ($b < $a && $b < $c && $b < $d) 
  6.  $first = $b; //liczba b
  7. elseif ($c < $a && $c < $b && $c < $d) 
  8.  $first = $c; //liczba c
  9. else $first = $d; //liczba d
  10.  
  11. $quarter = $a; //zakladamy ze jest to ostatnia liczba
  12. if ($b > $quarter) 
  13. $quarter = $b;
  14. if ($c > $quarter) 
  15. $quarter = $c;
  16. if ($d > $quarter) 
  17. $quarter = $d;
  18.  
  19. if($a != $first && $a != $quarter) {
  20. $m2 = $a;
  21. }
  22. if($b != $first && $b != $quarter) {
  23. $m1 = $b;
  24. (empty($m2) ? $m2 = $b : $m2 = $m2);
  25. }
  26. if($c != $first && $c != $quarter) {
  27. $m1 = $c;
  28. (empty($m2) ? $m2 = $c : $m2 = $m2);
  29. }
  30. if($d != $first && $d != $quarter) {
  31. $m1 = $d;
  32. $m2 = $m2;
  33. }
  34. ($m1 > $m2 ? $second = $m2 : $second = $m1);
  35. ($m1 < $m2 ? $third = $m2 : $third = $m1);
  36. ?>
sztosz
No tak, zapomniałem o AND NOT i OR sad.gif
rogrog
  1. <?php
  2.  
  3. $a = 2;
  4. $b = 3;
  5. $c = 4;
  6. $d = 5;
  7.  
  8. if ( $a <= $b ){
  9.  
  10. if ( $c <= $a ){
  11.  $pierwsza = $c;
  12.  $druga  = $a;
  13.  $trzecia = $b;
  14. } else {
  15.  if ( $b <= $c ){
  16.  $pierwsza = $a;
  17.  $druga  = $b;
  18.  $trzecia = $c;
  19.  } else {
  20.  $pierwsza = $a;
  21.  $druga  = $c;
  22.  $trzecia = $b;
  23.  }
  24. }
  25.  
  26. } else {
  27.  
  28. if ( $c <= $b ){
  29.  $pierwsza = $c;
  30.  $druga  = $b;
  31.  $trzecia = $a;
  32. } else {
  33.  if ( $c <= $a ){
  34.  $pierwsza = $b;
  35.  $druga  = $c;
  36.  $trzecia = $a;
  37.  } else {
  38.  $pierwsza = $b;
  39.  $druga  = $a;
  40.  $trzecia = $c;
  41.  }
  42. }
  43.  
  44. }
  45.  
  46. if ( $d <= $druga ){
  47. if ( $d <= $pierwsza ){
  48.  //$d <= $pierwsza <= $druga <= $trzecia
  49.  
  50. } else {
  51.  //$pierwsza <= $d <= $druga <= $trzecia
  52. }
  53. } else {
  54. if ( $d <= $trzecia ){
  55.  // $pierwsza <= $druga <= $d <= $trzecia
  56.  
  57. } else {
  58.  // $pierwsza <= $druga <= $trzecia <= $d
  59. }
  60. }
  61.  
  62. ?>


ladniej to wyglada na schemacie winksmiley.jpg
nie chce mi sie robic kodu ustawiajacego na koncu cztery liczby...

wykonuje max 5 porównań
invx
a teraz kazal 4 warunkami blink.gif blink.gif blink.gif blink.gif
rogrog
to moje rozwiazanie jest optymalne jeśli chodzi o ilość porównań.
antao
blink.gif
  1. <?php
  2.  
  3.  //pierwsza liczba - L1
  4.  if( ($a <= $b && $a <= $c && $a <= $d && $L1 = &$a && $N1 = 'a') || 
  5.  ($b <= $a && $b <= $c && $b <= $d && $L1 = &$b && $N1 = 'b') ||
  6.  ($c <= $a && $c <= $b && $c <= $d && $L1 = &$c && $N1 = 'c') ||
  7.  ($d <= $a && $d <= $b && $d <= $c && $L1 = &$d && $N1 = 'd')){}
  8.  
  9.  //czwarta liczba - L4
  10.  if( ($a >= $b && $a >= $c && $a >= $d && $L4 = &$a && $N4 = 'a') ||
  11.  ($b >= $a && $b >= $c && $b >= $d && $L4 = &$b && $N4 = 'b') ||
  12.  ($c >= $a && $c >= $b && $c >= $d && $L4 = &$c && $N4 = 'c') ||
  13.  ($d >= $a && $d >= $b && $d >= $c && $L4 = &$d && $N4 = 'd')){}
  14.  
  15.  if( ($a >= $L1 && $a <= $L4 && 'a' != $N1 && 'a' != $N4 && $Lx1 = &$a && $Nx = 'a') ||
  16.  ($b >= $L1 && $b <= $L4 && 'b' != $N1 && 'b' != $N4 && $Lx1 = &$b && $Nx = 'b') ||
  17.  ($c >= $L1 && $c <= $L4 && 'c' != $N1 && 'c' != $N4 && $Lx1 = &$c && $Nx = 'c') ||
  18.  ($d >= $L1 && $d <= $L4 && 'd' != $N1 && 'd' != $N4 && $Lx1 = &$d && $Nx = 'd')){}
  19.  
  20.  //liczby L2, L3
  21.  if( ('a' != $N1 && 'a' != $N4 && $Nx != 'a' && 
  22.  ( ($a >= $Lx1 && $L2 = &$Lx1 && $L3 = &$a) || 
  23.  ($a <= $Lx1 && $L3 = &$Lx1 && $L2 = &$a) )) ||
  24.  ('b' != $N1 && 'b' != $N4 && $Nx != 'b' && 
  25.  ( ($b >= $Lx1 && $L2 = &$Lx1 && $L3 = &$b) || 
  26.  ($b <= $Lx1 && $L3 = &$Lx1 && $L2 = &$b) )) ||  
  27.  ('c' != $N1 && 'c' != $N4 && $Nx != 'c' && 
  28.  ( ($c >= $Lx1 && $L2 = &$Lx1 && $L3 = &$c) || 
  29.  ($c <= $Lx1 && $L3 = &$Lx1 && $L2 = &$c) )) ||
  30.  ('d' != $N1 && 'd' != $N4 && $Nx != 'd' && 
  31.  ( ($d >= $Lx1 && $L2 = &$Lx1 && $L3 = &$d) || 
  32.  ($d <= $Lx1 && $L3 = &$Lx1 && $L2 = &$d) ))){}
  33. ?>

dane wejściowe: a, b, c, d
dane wyjściowe: L1, L2, L3, L4
bug: nie obsługuje zer (questionmark.gif?) //no moze jedno, ale... sadsmiley02.gif
rogrog
antao: robisz masę porównań. W algorytmach chodzi o to, żeby liczbę porównań ograniczyć do minimum.
antao
to jest tylko inny sposób rozwiązania (tzn. pętla nie jest zagnieżdżona) winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.