Druga co do wielkości liczba z 3 liczb

0

Mam napisać program wybierający 2-gą co do wielkości liczbę z 3 liczb. Dla przykładu: 2 3 4 ma wyświetlić 3. Nie wiem dlaczego, mi wyświetla 2 .. Mógłby ktoś to wytłumaczyć?

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

int max2(int a, int b, int c)
{
    if((a > b && a < c) && (b < c)) return a;
    if((b > a && b < c) && (a < c)) return c;
    if((c > b && c < a) && (b < c)) return b;
}

int main()
{
    printf("%d\n", 2, 3, 4);

    return 0;
}
0

a pokaż mi w którym miejscu wywołujesz funkcje max2 z parametrami...

0

Aaa, widzę. Ale teraz wyświetla mi 4 :(

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

int max2(int a, int b, int c)
{
    if((a > b && a < c) && (b < c)) return a;
    if((b > a && b < c) && (a < c)) return c;
    if((c > b && c < a) && (b < c)) return b;
}

int main()
{
    printf("%d\n", max2(2, 3, 4));

    return 0;
}
0

Ok chyba mam ale mógłby ktoś sprawdzic?

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

int max(int a, int b)
{
    if(a > b)
        return a;
    else
        return b;
}

int max2(int a, int b, int c)
{
    int m1 = max(a, b);
    int m2 = max(m1, c);

    if(m1 < c)
        return m1;
    else
        return c;
}

int main()
{
    printf("%d\n", max2(2, -3, 4));

    return 0;
}

1

Wiesz jak chcesz żeby to na ifach było to musisz ich dać więcej (wydaje mi się), choć prościej było by jakiś algorytm sortowania użyć, te liczby posortować i wypluwać przedostatni element tej tablicy, i funkcje można by rozbudować o (teoretycznie) niograniczoną liczbę elementów (w tym przypadku podawanych liczb)

1

wybierający 2-gą co do wielkości liczbę z 3 liczb
to się nazywa ”mediana z trzech”, “median of three”.

0

ale moj ostatni kod działa, tylko nie wiem, czy na 100% ok?

0

Jeśli chcesz koniecznie robić to samymi instrukcjami warunkowymi, to zrób sobie najpierw sprawdzenie, czy wszystkie liczby nie są równe. To przyspieszy program jeśli taki przypadek wystąpi. W twoich warunkach nie jest uwzględniony przypadek, gdy dwie liczby będą sobie równe. Polecam operatory ">=" i "<=".
Pomysł z sortowaniem jest na prawdę bardzo fajny, bo tego czego szukamy to liczby pomiędzy największą i najmniejszą. Bo nie wiesz na przykład, czy A ma być mniejsza od B i większe od C, czy może na odwrót. Używając jedynie instrukcji warunkowych musiałbyś uwzględnić wszystkie siedem przypadków osobno. Zamiast tego możesz użyć prostej pętli do znalezienia liczby najmniejsze, potem największej i wyświetlisz to co zostanie. Niemniej, osobiście po prostu bym liczby posortował.

0

Tutaj pojawiło się kilka ciekawych propozycji: Wartość środkowa trzech liczb ;)

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