Program 11
Transkrypt
Program 11
Program 11 Napisać następujące funkcje: • funkcje Pobierz pobierającą dane do tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr; • funkcje Wypisz wypisującą zawartość tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr; • funkcje CzyPosortowana zwracającą wartość logiczną mówiącą, czy tablica podana jako parametr, o długości podanej jako parametr, jest uporządkowana rosnąco; oraz program tworzący tablice liczb całkowitych o podanej przez użytkownika długości, pobierający jej zawartość, a następnie wypisujący informacje, czy tablica jest uporządkowana rosnąco, czy nie. Program ma wykorzystywać wymienione wyżej funkcje. #include <iostream> using namespace std; void Pobierz(int tab[],int n); void Wypisz(int tab[],int n); bool czyPosortowana(int tab[],int n); int main() { int roz; cout<<"Podaj ilosc elementow w tablicy: "; cin>>roz; int t[roz]; Pobierz(t,roz); Wypisz(t,roz); if(czyPosortowana(t,roz)) { cout<<"Tablica jest posortowana rosnaco"<<endl; } else { cout<<"Tablica nie jest posortowana rosnaco"<<endl; } system ("PAUSE"); return 0; } PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/ void Pobierz(int tab[],int n) { cout<<"Wprowadz elementy tablicy:"<<endl; for(int i=0;i<n;i++) { cout<<"Element "<<i+1<<": "; cin>>tab[i]; } } void Wypisz(int tab[],int n) { cout<<"Elementy tablicy:"<<endl; for(int i=0;i<n;i++) { cout<<"Element "<<i+1<<": "<<tab[i]<<endl; } } bool czyPosortowana(int tab[],int n) { bool test=true; for(int i=0;i<n-1;i++) { if(tab[i]>=tab[i+1]) test=false; } return test; } Omówienie programu Deklaracje trzech funkcji użytych w programie: void Pobierz(int tab[],int n); void Wypisz(int tab[],int n); bool czyPosortowana(int tab[],int n); Funkcja Pobierz: void Pobierz(int tab[],int n) { cout<<"Wprowadz elementy tablicy:"<<endl; for(int i=0;i<n;i++) { cout<<"Element "<<i+1<<": "; cin>>tab[i]; } } PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/ Funkcja posiada dwa argumenty. Pierwszy to tablica liczb całkowitych o nazwie tab, argument drugi to liczba całkowita (int). Funkcja nie zwraca wartości – stąd void przed nazwą funkcji. void Pobierz(int tab[],int n) Działanie funkcji polega na wypisaniu komunikatu: cout<<"Wprowadz elementy tablicy:"<<endl; Następnie wykorzystana jest pętla for, która umożliwia wprowadzenie z klawiatury elementów tablicy będącej pierwszym argumentem funkcji. Drugi argument funkcji określa rozmiar tablicy. Funkcja Wypisz działa podobnie i wypisuje elementy tablicy. Funkcja czyPosortowana: bool czyPosortowana(int tab[],int n) { bool test=true; for(int i=0;i<n-1;i++) { if(tab[i]>=tab[i+1]) test=false; } return test; } Funkcja ma argumenty identyczne jak powyższe funkcje. Jednak w przeciwieństwie do funkcji Pobierz i Wypisz funkcja czyPosortowana zwraca wartość typu bool (typ bool ma tylko dwie wartości true (prawda) i false (fałsz)). Szczegóły funkcji: Pierwsza linijka to definicja zmiennej o nazwie test typu bool i nadanie jej wartości true: bool test=true; Następnie mamy pętle for, która umożliwia sprawdzenie czy tablica przesłana jako argument funkcji jest uporządkowana rosnąco: for(int i=0;i<n-1;i++) { if(tab[i]>=tab[i+1]) test=false; PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/ } W pętli porównywane są kolejno sąsiednie elementy tablicy i jeżeli dla jakiejś pary spełniony jest warunek: tab[i]>=tab[i+1] wówczas wartość zmiennej test zmieniana jest na false. Zauważmy, że powyższy warunek spełniony jest wtedy gdy element tablicy tab[i] jest większy lub równy od elementu następnego w tablicy czyli tab[i+1]. Spełnienie tego warunku oznacza, że elementy tablicy nie są uporządkowane rosnąco. Na końcu funkcja zwraca wartość zmiennej test: return test; Wartość ta jest równa true jeżeli dla żadnej pary kolejnych elementów tablicy nie jest spełniony warunek (i=0,1,2,…,n-1): tab[i]>=tab[i+1] Oznacza to, że tablica jest uporządkowana rosnąco. Jeżeli jednak dla jakiejś pary (przynajmniej jednej) kolejnych elementów tablicy warunek tab[i]>=tab[i+1] jest spełniony wówczas funkcja zwraca zmienna test przyjmuje wartość false. Funkcja main() Wewnątrz funkcji main() mamy: int roz; cout<<"Podaj ilosc elementow w tablicy: "; cin>>roz; int t[roz]; Pobierz(t,roz); Wypisz(t,roz); if(czyPosortowana(t,roz)) { cout<<"Tablica jest posortowana rosnaco"<<endl; } PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/ else { cout<<"Tablica nie jest posortowana rosnaco"<<endl; } Pierwsza linijka: int roz; to deklaracja zmiennej o nazwie roz typu int. Następnie wypisywany jest na ekranie komunikat: cout<<"Podaj ilosc elementow w tablicy: "; oraz wprowadzana z klawiatury wartość zmiennej roz: cin>>roz; Definicja tablicy o nazwie t typu int (rozmiar tablicy jest uzależniony od wartości zmiennej roz): int t[roz]; Następnie wywoływane są funkcje Pobierz i Wypisz: Pobierz(t,roz); Wypisz(t,roz); Pierwszym argumentem obu funkcji jest tablica t, drugim – rozmiar tablicy t czyli zmienna Roz. Dzięki wywołaniu funkcji Pobierz możemy wprowadzić liczby do tablicy t, dzięki wywołaniu funkcji Wypisz zawartość tablicy t jest wypisana na ekranie. Następnie mamy instrukcje warunkową: if(czyPosortowana(t,roz)) { cout<<"Tablica jest posortowana rosnaco"<<endl; } else { cout<<"Tablica nie jest posortowana rosnaco"<<endl; } PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/ Warunek jest spełniony jeżeli wartość zwrócona przez funkcję czyPosortowana to true. Wówczas wypisany jest na ekranie komunikat: Tablica jest posortowana rosnaco Jeżeli wartość zwrócona przez funkcję czyPosortowana to false wówczas wypisany jest na ekranie komunikat: Tablica nie jest posortowana rosnaco PDF stworzony przez wersję demonstracyjną pdfFactory Pro www.pdffactory.pl/