Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Program - wypisanie liczby min/max

Ozaro 03 Kwi 2011 16:17 7651 10
  • #1 03 Kwi 2011 16:17
    Ozaro
    Poziom 9  

    Witam!

    Panowie, mam problem ze stworzeniem programu, który wybierze mi maksymalną i minimalną liczbę z 10 które podam z palca. Zrobiłem coś takiego, dla 4 liczb i co prawda można to rozwinąć na 10 liczb, ale kod będzie nieczytelny i z tego co pamiętam jest w c++ funkcja max / min, problem w tym, że nie umiem jej zadeklarować.. Może ktoś poratować?

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0 10
  • #2 03 Kwi 2011 16:50
    rradi
    Poziom 18  

    Dużo lepiej wczytać liczby do tablicy i wykorzystując pętlę for porównać każdy kolejny indeks z wartością min i max za pomocą zwykłej instrukcji warunkowej. Wartość min i max najlepiej ustawić na początku jako wartość pierwszego elementu tablicy. Potem, jeśli okaże się, że dany element tablicy jest większy od max / mniejszy od min, to przypisujesz daną wartość odpowiednio pod max lub min. Program będzie dużo bardziej czytelny i będzie działał również dla większej ilości liczb, tą metodą, którą przedstawiłeś ciężko byłoby porównać kilka tysięcy liczb, a stosując tablicę można zrobić całość w jednym przebiegu pętli.

    0
  • #3 03 Kwi 2011 19:58
    Ozaro
    Poziom 9  

    Jak mogę zapisać do tablicy wartości podane z klawiatury?

    0
  • #4 03 Kwi 2011 20:20
    rradi
    Poziom 18  

    deklarujesz sobie tablicę 10-elementową:
    int tab[10];
    potem wczytujesz elementy za pomocą pętli for albo while (ogólnie lepszy jest for, bardziej przejrzysty i między innymi do obsługi tablic został wymyślony):
    for(int i=0; i<10; i++)
    {
    cin>>tab[i];
    }

    pamiętaj tylko, że tablica w C++ ma indeksy zaczynające się od zera, tak więc tablica 10-elementowa będzie miała indeksy z przedziału <0;9>

    1
  • #5 03 Kwi 2011 20:27
    krru
    Poziom 32  

    W ogole tablica nie jest potrzebna - po prostu po wczytaniu każdej kolejnej liczby aktualizujesz min i max.

    0
  • #6 03 Kwi 2011 20:39
    Ozaro
    Poziom 9  

    Początek programu wygląda tak:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Chcę, żeby tablica była tworzona z cyferek, które podam z klawiatury. Teraz pytanie, jak wyszukać w nich największą i najmniejszą ? Coś takiego:

    if (tab[0] > tab[1])
    x=tab[0]; else x=tab[1] itd ?

    0
  • #7 03 Kwi 2011 21:30
    krru
    Poziom 32  

    Bez tablicy wygląda to mnie więcej tak:


    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Oczywiście trzeba odpowiednio zainicować min i max (lub dla pierwszego przebiegu po prostu podstawić bezwarunkowo).

    0
  • #8 03 Kwi 2011 22:19
    rradi
    Poziom 18  

    krru: Rzeczywiście czasami najprostsze metody bywają najlepsze, szczególnie, że z dwóch ostatnich postów Ozaro wygląda, że dopiero zaczyna naukę C++ i wprowadzając tablice i pętle for zagmatwałem nieco obraz sytuacji.

    Ja zazwyczaj myślę o programie jako o większej całości, która opiera się na wykorzystaniu funkcji, stąd pomysł na przechowywanie wprowadzonych zmiennych w tablicy. W sposobie post wyżej wpisane liczby nie są przechowywane, jednak w funkcjonalności tego konkretnego programu nie jest to potrzebne.

    Ozaro: Jeśli chcesz rozszerzyć swoją wiedzę na temat C++ polecam książkę Karola Kuczmarskiego "Od zera do gier kodera". Jest ona dostępna na zasadzie wolnej licencji GNU, więc bez problemu znajdziesz w google. Jest w niej naprawdę wiele wyjaśnione, poczynając od zupełnych podstaw po bardziej zaawansowane tematy uwzględniające szeroko rozumianą obiektowość.

    0
  • #9 04 Kwi 2011 13:45
    Dariusz Bismor
    Poziom 17  

    krru, niestety Twój program nie będzie działał. A raczej będzie działał, ale losowo, bo zapomniałeś o inicjalizacji - wartości max jakąś małą wartością, a wartości min dużą.

    HTH,
    Dariusz

    0
  • #10 04 Kwi 2011 15:09
    rradi
    Poziom 18  

    Dariusz Bismor napisał:
    krru, niestety Twój program nie będzie działał. A raczej będzie działał, ale losowo, bo zapomniałeś o inicjalizacji - wartości max jakąś małą wartością, a wartości min dużą.

    HTH,
    Dariusz

    Z tego, co widzę krru napisał:
    krru napisał:
    Oczywiście trzeba odpowiednio zainicować min i max (lub dla pierwszego przebiegu po prostu podstawić bezwarunkowo).

    Dodatkowo w przypadku wyszukiwania wartości min i max nie można zainicjalizować zmiennej dowolną dużą/małą wymyśloną przez siebie wartością, bo może się okazać, że w przypadku zainicjalizowania zmiennej, na przykład max dowolną małą wymyśloną przez siebie wartością, rzeczywista maksymalna wartość może być od niej mniejsza, a program błędnie zwróci zainicjalizowaną przez nas wartość.
    Należy jako początkową wartość min i max podpisać pierwszą z wczytanych liczb, wtedy nie będzie tego problemu.

    0
  • #11 04 Kwi 2011 15:47
    Dariusz Bismor
    Poziom 17  

    Oj, przepraszam, nie doczytałem opisu.

    Co do wartości początkowych, to można też tak:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    HTH,
    Dariusz

    0