Program 3 Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi. #include<iostream> using namespace std; int main() { int odp,a,m; bool pierwsze_podanie = true; cout << "Program znajduje najwieksza lub najmniejsza z podanych liczb \n" "liczby podajemy dopoki nam sie nie znudzi ;-) \n\n" "powiedz czy interesuje Cie minimum, czy maksimum? \n" "(min - wcisnij 1, max - wcisnij 2) "; cin >> odp; cout<< "\n\n"; if (odp==1) { cout << "policze minimum \n"; do { cout << "podaj liczbe "; cin >> a; if (pierwsze_podanie || m > a) { m = a; if (pierwsze_podanie) pierwsze_podanie = false; } cout << "czy chcesz podac kolejna liczbe? (1-tak,0nie) "; cin >> odp; } while (odp != 0); cout << "najmniejsza z podanych liczb to "<< m << "\n"; } else if (odp==2) { cout << "policze maximum \n"; do { cout << "podaj liczbe "; cin >> a; if (pierwsze_podanie || m < a) { m = a; if (pierwsze_podanie) pierwsze_podanie = false; } do { cout << "czy chcesz podac kolejna liczbe? (1-tak,0nie) "; cin >> odp; } while (odp!=1 && odp!=0); } while (odp == 1); cout << "najwieksza z podanych liczb to "<< m << "\n"; } else cout << "podales nieodpowiednia liczbe, nie wiem co mam policzyc \n"; system("PAUSE"); } Omówienie programu Deklaracje trzech zmiennych typu całkowitego o nazwach odp, a i m: int odp,a,m; Definicja zmiennej typu logicznego (bool) o nazwie pierwsze_podanie: bool pierwsze_podanie = true; Zmienna typu logicznego moŜe posiadać dwie wartości: true (prawda) i false (fałsz). Zmienna pierwsze_podanie ma początkowo wartość true. Wypisanie na ekran komunikatu mówiącego jak działa program (symbol \n to przejście do nowej linii): cout << "Program znajduje najwieksza lub najmniejsza z podanych liczb \n" "liczby podajemy dopoki nam sie nie znudzi ;-) \n\n" "powiedz czy interesuje Cie minimum, czy maksimum? \n" "(min - wcisnij 1, max - wcisnij 2) "; Wprowadzenie przy pomocy klawiatury wartości zmiennej odp: cin>>odp; Przesunięcie kursora o dwie linie w dół: cout<< "\n\n"; W zaleŜności od tego jaką cyfrę wprowadzimy (cyfra ta będzie wartością zmiennej odp) program policzy minimum (jeŜeli wciśniemy 1) lub maksimum (jeŜeli wciśniemy 2). W przypadku gdy wciśniemy cyfrę róŜną od 1 i 2 program wypisze komunikat: podales nieodpowiednia liczbe, nie wiem co mam policzyc. A zatem wykorzystana jest instrukcja warunkowa postaci: if (odp==1) { [jeŜeli wcisnęliśmy cyfrę 1 program znajduje minimum wprowadzonych liczb] } else if (odp==2) { [jeŜeli wcisnęliśmy cyfrę 2 program znajduje maksimum wprowadzonych liczb] } else [jeŜeli wcisnęliśmy cyfrę róŜną od 1 i 2 program wypisze komunikat] cout << "podales nieodpowiednia liczbe, nie wiem co mam policzyc \n"; JeŜeli wcisnęliśmy 1 program ma policzyć minimum wprowadzonych liczb. Kolejno wykonywane są następujące operacje (blok oznaczony na zielono w powyŜszej instrukcji warunkowej): Program wypisuje na ekranie komunikat policze minimum: cout << "policze minimum \n"; Następnie zastosowana jest pętla postaci: do { [Wprowadzenie kolejnych liczb i znalezienie minimum] cout << "czy chcesz podac kolejna liczbe? (1-tak,0-nie) "; cin >> odp; }while (odp != 0); Po wprowadzeniu liczby i sprawdzeniu czy jest to najmniejsza z liczb dotychczas wprowadzonych (blok oznaczony kolorem pomarańczowym) pojawia się komunikat: czy chcesz podac kolejna liczbe? (1-tak,0-nie). JeŜeli wprowadzimy cyfrę 1 wówczas zmienna odp będzie miała taką wartość i warunek odp != 0 będzie spełniony (!= - oznacza „róŜne od”). A zatem pętla nie będzie przerwana (jest wykonywana dopóki warunek ten jest spełniony). JeŜeli wprowadzimy cyfrę 0 wówczas zmienna odp będzie miała taką wartość i warunek odp != 0 nie będzie spełniony. A zatem pętla będzie przerwana (jest wykonywana dopóki warunek ten jest spełniony). Wprowadzenie kolejnych liczb i sprawdzenie czy jest to najmniejsza z liczb dotychczas wprowadzonych (blok oznaczony kolorem pomarańczowym) odbywa się w następujący sposób: Program wypisuje na ekranie komunikat podaj liczbe: cout << "podaj liczbe "; Wprowadzamy liczbę nadając wartość zmiennej a: cin >> a; Następnie zastosowana jest instrukcja warunkowa w której warunek wygląda następująco: if(pierwsze_podanie || m > a) { } Warunek pierwsze_podanie || m > a jest prawdziwy jeŜeli zmienna pierwsze_podanie ma wartość true lub (operator ||) prawdziwa jest nierówność m>a. Po wprowadzeniu pierwszej liczby wartość zmiennej pierwsze_podanie jest true. A zatem cały warunek pierwsze_podanie || m > a jest spełniony. Wówczas zmiennej m nadana jest wartość zmiennej a: m = a; W zmiennej m zapisujemy szukane minimum. JeŜeli wprowadzamy pierwszą liczbę wówczas jej wartość zapamiętujemy w zmiennej m po to Ŝeby móc ją porównać z następnymi liczbami. Następnie sprawdzamy czy wartość zmiennej pierwsze_podanie jest true (tak jest gdy wprowadzamy pierwszą liczbę). JeŜeli tak zmieniamy wartość zmiennej pierwsze_podanie na false: if (pierwsze_podanie) pierwsze_podanie = false; Przy wprowadzaniu drugiej liczby (i kaŜdej następnej) zmienna pierwsze_podanie ma warość false. A zatem warunek pierwsze_podanie || m > a jest spełniony tylko wtedy gdy m>a czyli wtedy gdy wprowadzona liczba (zapisana w zmiennej a) ma wartość mniejszą od wartości zmiennej m. JeŜeli tak jest to zmieniamy wartość zmiennej m, której wartość będzie ostatecznie równa minimum wprowadzonych liczb (wprowadziliśmy liczbę mniejszą od minimum zatem zmieniamy minimum). Obliczenie maksimum wygląda podobnie.