Program 17 Program wykorzystujący funkcje z Programu 16
Transkrypt
Program 17 Program wykorzystujący funkcje z Programu 16
Program 17 Program wykorzystujący funkcje z Programu 16. Program pobieraja od uŜytkownika liczby całkowite do momentu napotkania końcowego zera. Dla kaŜdej trójki kolejno podanych liczb(*) program sprawdza, czy mogą być one długościami boków trójkąta i jeśli tak wypisuje jego pole i obwód. Końcowe zero nie jest brane pod uwagę jako długość boku. Jeśli wprowadzono mniej niŜ trzy liczby róŜne od zera, program wypisuje komunikat o zbyt małej ilości danych. (*) przykład: podajemy liczby 1, 2, 3 - program sprawdza czy mogą być one bokami trójkąta. Następnie podajemy liczbę 4 - program sprawdza, czy 2, 3, 4 mogą być bokami trójkąta. Następnie podajemy 5 - program sprawdza trójkę 3, 4, 5 - itd. #include <iostream> #include <cmath> using namespace std; bool CzyTrojkat(int x,int y,int z); int ObwodTrojkata(int x,int y,int z); float PoleTrojkata(float x,float y,float z); int main() { int a,b,c; cout<<"Wprowadzaj ENTER"<<endl; cin>>a; cin>>b; cin>>c; liczby potwierdzajac klawiszem do { if(CzyTrojkat(a,b,c)) { cout<<"Z wprowadzonych trojek liczb mozna zbudowac trojkat"<<endl; cout<<"Obwod trojkata="<<ObwodTrojkata(a,b,c)<<endl; cout<<"Pole trojkata="<<PoleTrojkata(a,b,c)<<endl; } else { cout<<"Z wprowadzonych trojek liczb nie mozna zbudowac trojkatow"<<endl; } a=b; b=c; cin>>c; }while(c!=0); system("PAUSE"); return 0; } bool CzyTrojkat(int x,int y,int z) { if((x+y>z)&&(y+z>x)&&(z+x>y)) { return true; } return false; } int ObwodTrojkata(int x,int y,int z) { return x+y+z; } float PoleTrojkata(float x,float y,float z) { float p=(x+y+z)/2; return sqrt(p*(p-x)*(p-y)*(p-z)); } Omówienie programu Funkcje wykorzystane w programie są omówione w Programie 16. Pozostaje nam do omówienia następująca zawartość funkcji main(): int a,b,c; cout<<"Wprowadzaj liczby potwierdzajac klawiszem ENTER"<<endl; cin>>a; cin>>b; cin>>c; do { if(CzyTrojkat(a,b,c)) { cout<<"Z wprowadzonych trojek liczb mozna zbudowac trojkat"<<endl; cout<<"Obwod trojkata="<<ObwodTrojkata(a,b,c)<<endl; cout<<"Pole trojkata="<<PoleTrojkata(a,b,c)<<endl; } else { cout<<"Z wprowadzonych trojek liczb nie mozna zbudowac trojkatow"<<endl; } a=b; b=c; cin>>c; }while(c!=0); Pierwsza linijka to definicje trzech zmiennych typu int: a, b i c. int a,b,c; Następnie na ekranie pojawia się komunikat: Wprowadzaj liczby potwierdzajac klawiszem ENTER i przy pomocy klawiatury wprowadzamy 3 liczby: cin>>a; cin>>b; cin>>c; Następnie mamy pętle do…while: do { if(CzyTrojkat(a,b,c)) { cout<<"Z wprowadzonych trojek liczb mozna zbudowac trojkat"<<endl; cout<<"Obwod trojkata="<<ObwodTrojkata(a,b,c)<<endl; cout<<"Pole trojkata="<<PoleTrojkata(a,b,c)<<endl; } else { cout<<"Z wprowadzonych trojek liczb nie mozna zbudowac trojkatow"<<endl; } a=b; b=c; cin>>c; }while(c!=0); Wewnątrz pętli mamy instrukcję warunkową: if(CzyTrojkat(a,b,c)) { cout<<"Z wprowadzonych trojek liczb mozna zbudowac trojkat"<<endl; cout<<"Obwod trojkata="<<ObwodTrojkata(a,b,c)<<endl; cout<<"Pole trojkata="<<PoleTrojkata(a,b,c)<<endl; } else { cout<<"Z wprowadzonych trojek liczb nie mozna zbudowac trojkatow"<<endl; } JeŜeli wprowadzone na początku programu wartości a, b i c nie są bokami trójkąta wówczas funkcja CzyTrojkat zwraca fałsz (false) i na ekranie wypisywany jest komunikat: Z wprowadzonych trojek liczb nie mozna zbudowac trojkatow JeŜeli wartości a, b i c są bokami trójkąta wówczas funkcja CzyTrojkat zwraca prawdę (true) i wykonywane są instrukcje: cout<<"Z wprowadzonych trojek liczb mozna trojkat"<<endl; cout<<"Obwod trojkata="<<ObwodTrojkata(a,b,c)<<endl; cout<<"Pole trojkata="<<PoleTrojkata(a,b,c)<<endl; zbudowac Pierwsza linijka to wypisanie komunikatu: Z wprowadzonych trojek liczb mozna zbudowac trojkat Druga linijka to wypisanie obwodu trójkąta o bokach a, b i c zwracanego przez funkcję ObwodTrojkata. Trzecia linijka to wypisanie pola trójkąta o bokach a, b i c zwracanego przez funkcję PoleTrojkata. Ostatnie trzy linijki w pętli do…while to: a=b; b=c; cin>>c; Zmiennej a przypisujemy wartość zmiennej b: a=b; Zmiennej b przypisujemy wartość zmiennej c: b=c; Wprowadzamy z klawiatury wartość zmiennej c: cin>>c; Pętla jest wykonywana dopóty dopóki wprowadzona wartość zmiennej c jest róŜna od zera stąd: while(c!=0); JeŜeli c!=0 wówczas ponownie następuje sprawdzenie czy wprowadzone wartości a, b i c są bokami trójkąta …itd. Warto zwrócić uwagę na jedną rzecz: podajemy liczby 1, 2, 3 - program sprawdza czy mogą być one bokami trójkąta. Następnie podajemy liczbę 4 - program sprawdza, czy 2, 3, 4 mogą być bokami trójkąta. Następnie podajemy 5 - program sprawdza trójkę 3, 4, 5 - itd. Program kończy działanie jeŜeli wprowadzimy cyfrę 0.