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.