Program 3 Program znajduje największa lub najmniejsza z

advertisement
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.
Download