[Algorytmy] Wyszukiwanie maksimum

kalik

[Algorytmy] Wyszukiwanie maksimum

Post autor: kalik »

Wczytać ciąg n liczb rzeczywistych i znaleźć element największy.
Jak będzie wyglądał schemat blokowy z wykorzystaniem dwóch warunków interacyjnych dopóki? Byłbym wdzięczny za pomoc
Ostatnio zmieniony 21 lis 2011, o 19:36 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Xitami

[Algorytmy] Wyszukiwanie maksimum

Post autor: Xitami »

Kod: Zaznacz cały

        
     +-----+
     |  1  |
     +-----+
        |
        v
     _______
    /   2   \________
    \_______/        |
     ^     |         |
     |     V         V
     |  +-----+   +-----+
     |  |  3  |   |  4  |
     |  +-----+   +-----+
     |     |         |
     |_____|         V
                  _______
                 /   5   \____________
                 \_______/            |
                  ^     |             V
                  |     v          +------+
                  |    /          |  8   |
                  |   / 6 \____    +------+
                  |      /    |
                  |     /     v
                  |     V   +-----+
                  |     |   |  7  |
                  |     |   +-----+
                  |     V      |
                  +------------+
lukasz93a
Użytkownik
Użytkownik
Posty: 118
Rejestracja: 31 sty 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy
Pomógł: 16 razy

[Algorytmy] Wyszukiwanie maksimum

Post autor: lukasz93a »

AU
AU
n48pvl.jpg (15.25 KiB) Przejrzano 97 razy
Można to zrobić w jednej pętli, ale prosiłeś w dwóch.
Xitami

[Algorytmy] Wyszukiwanie maksimum

Post autor: Xitami »

"prosiłeś w dwu" a "zadano w dwu" to różnica
kolejne kretyńskie zadanie, gdzie trzeba zgadywać co poeta miał na myśli
niby można w jednej, ale...
będziemy "wczytywać" a to okazja do błędów

Kod: Zaznacz cały

dana liczba N
-------------
   |
   V
+-----+
|  1  |
+-----+
   |
 __V__
/  2  \______________
\_____/              |
 ^   |             __V__
 |   V            |  12 |
 | +-----+        +-----+
 | |  3  |           |
 | +-----+         __V__
 |    |            finito
 |  __V__
 | /  4  
 | \_____/     
 |  ^   |
 |  |  _V___
 |  | |  5  |
 |  | +-----+
 |  |    |
 |  |    V
 |  |   /  T
 |  |  / 6 \_____
 |  |     /     |
 |  |    /      V
 |  |    | N    /  T
 |  |  __V__   / 8 \_____
 |  | |  7  |     /     |
 |  | +-----+    /   +-----+
 |  |____|       |N   |  9  |
 |               V    +-----+
 |            T /       |
 |        _____/ 10     |
 |       |        /     |
 |       V       /      |
 |    +-----+    |N      |
 |    |  11 |    |       |
 |    +-----+    |       |
 |       |       |       |
 |       V       V       V
 |<-----------------------
1- pierwsza:=1
2- dopóki N>0
3- n:=n-1
4- dopóki prawada (czyli do usr... śmierci)
5- wczytaj A, zmniejsz N o jeden
6- czy się udało?
7- jeżeli nie to połknij jeden znak z wejścia
8- czy to jest pierwsza wczytana liczba? (pier==1)
9- jeżeli tak to przypisz M:=A oraz pierwsza:=0
10- czy A>M
11- jeżeli tak to przypisz M:=A
12- wyprowadź M, czyli największą z wczytanych liczb

w języku C(++) można to zapisać np. tak:

Kod: Zaznacz cały

float max( int n ){
        float m, a; int pier, err;
        pier= 1; 
        while( n>0 ){
                n--;
                while( 1 ) {
                        err=scanf("%f", &a);
                        if( err<1 ) getchar();
                        else break;}
                if( pier ) {
                        m= a; pier= 0;}
                else if( a>m )
                        m= a;}
        return m;}
lub tak:

Kod: Zaznacz cały

float max1(int n){
        float m,a;
        int p=0;
        while( n-->0 ){
                while( 0 >= scanf("%f", &a) ) 
                        getchar();
                if( 0 == p++ ) m=a;
                else if( a>m ) m=a; }
        return m;}
co zrobić gdy N==0?

Łukaszu, czym zrobiłeś taki ładny obrazek?
Notatnik no ma swoje ograniczenia, Photoshop to jakby przesada.
lukasz93a
Użytkownik
Użytkownik
Posty: 118
Rejestracja: 31 sty 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 14 razy
Pomógł: 16 razy

[Algorytmy] Wyszukiwanie maksimum

Post autor: lukasz93a »

Oczywiście ten sam program można zapisać na kilka różnych sposobów (mniej, lub bardziej optymalnych).
Osobiście bym go napisał w poniższy sposób choć nie zawiera on dwóch pętli:

Kod: Zaznacz cały

    int n, temp, max;

    cin >> n;
    if(n > 0)
    {
        cin >> max;
        while(--n > 0)
        {
            cin >> temp;
            if(temp > max)
                max = temp;
        }
        cout << max << endl;
    }
    else
        cout << "ciag pusty
";
Dla N=0 ciąg nie ma żadnych elementów więc nie ma czego sprawdzać.

Rysunek zrobiłem w wordzie (Wstaw -> Kształt).
Xitami

[Algorytmy] Wyszukiwanie maksimum

Post autor: Xitami »

zrobiłbym to podobnie, ale miały być pętelki dwie
prawiem pewny, że kretyn zadający miał na myśli twój i mój pierwszy algorytm
znaczy czytaj do tablicy po czym szukaj w tablicy (nie opisywałem pudełek bo to przecie bez sensu)
twoje o tyle nie fajne, że dwa razy "czytamy" liczbę (znaczy w dwu miejscach), a to by były trzy pętelki (pętelkując po poprawności liczb na wejściu, a nie po liczbie liczb)
chciałem pokazać, że można "to samo" ale zupełnie inaczej i bardzom ciekaw tłumaczeń kretyna, że "ja myślałem...."
jeżeli jesteś kretyn, nie potrafiący postawić jednoznacznego zadania to nie tylko jesteś kretyn, jesteś po prostu głupi szkodnik i jeżeli masz uczyć dzieci to ja jestem za eutanazję (na siłę )

czy dalej jest tak jak kiedyś, że "informatyki" uczą chrzestni pani Ziuty co mają w kiosku teczkę na bajtka?
a co z religią?
pewnie to dla wielu pokrewne "dziedziny" nauki
ODPOWIEDZ