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/