Program 21 Napisać następujące funkcje: • funkcję pobierającą dane do tablicy liczb całkowitych podanej jako parametr o długości podanej jako parametr; • funkcję wypisująca zawartość tablicy liczb całkowitych podanej jako parametr o długości podanej jako parametr; • funkcje MinSum4, która wyszukuje w tablicy czwórkę stojących obok siebie liczb o najmniejszej sumie, i zwraca te sumę (przykład: dla tablicy 1, 1, 2, 3, -1, 1,-2 funkcja zwraca 1, czyli sumę liczb 3, -1, 1 i -2). Parametrami funkcji maja być tablica liczb całkowitych i długość tej tablicy. oraz program tworzący tablicę liczb całkowitych o podanej przez uŜytkownika długości, pobierający jej zawartość, a następnie, jeśli tablica ma co najmniej cztery elementy wypisujący najmniejsza liczbę, jaka moŜemy dostać sumując cztery sąsiadujące elementy tej tablicy (funkcja MinSum4). W przypadku, gdy w tablicy są mniej niŜ cztery liczby, program ma wypisać odpowiedni komunikat. W programie naleŜy wykorzystać wymienione wyŜej funkcje. #include <iostream> using namespace std; void Pobierz(int tab[],int r); void Wypisz(int tab[],int r); int MinSuma4(int tab[],int n); int main() { int n; cout<<"Wprowadz rozmiar tablicy: "; cin>>n; int *tablica=new int[n]; Pobierz(tablica,n); Wypisz(tablica,n); if(n<4) { cout<<"Tablica powinna miec conajmniej 4 elementy"<<endl; } else { cout<<"Najmniejsza suma czterech kolejnych liczb wynosi " <<MinSuma4(tablica,n)<<endl; } delete [] tablica; system("PAUSE"); return 0; } void Pobierz(int tab[],int r) { cout<<"Wprowadz elementy tablicy:"<<endl; for(int i=0;i<r;i++) { cout<<"Element "<<i+1<<": "; cin>>tab[i]; } } void Wypisz(int tab[],int r) { cout<<"Elementy tablicy:"<<endl; for(int i=0;i<r;i++) { cout<<"Element "<<i+1<<": "<<tab[i]<<endl; } } int MinSuma4(int tab[], int n) { int Min=tab[0]+tab[1]+tab[2]+tab[3]; for(int i=1; i<n-3; i++) { if(Min>(tab[i]+tab[i+1]+tab[i+2]+tab[i+3])) { Min=(tab[i]+tab[i+1]+tab[i+2]+tab[i+3]); } } return Min; } Omówienie programu W programie są wykorzystane następujące funkcje: Funkcja Pobierz – funkcja ta była omówiona w Programie 11. Funkcja Wypisz – funkcja ta była omówiona w Programie 11. Funkcja MinSuma4 int MinSuma4(int tab[], int n) { int Min=tab[0]+tab[1]+tab[2]+tab[3]; for(int i=1; i<n-3; i++) { if(Min>(tab[i]+tab[i+1]+tab[i+2]+tab[i+3])) { Min=(tab[i]+tab[i+1]+tab[i+2]+tab[i+3]); } } return Min; } Funkcja posiada dwa parametry (argumenty) – tablicę typu int (o nazwie tab) oraz zmienną typu int (o nazwie n), którą „interpretujemy” jako rozmiar tablicy. Pierwsza linijka: int Min=tab[0]+tab[1]+tab[2]+tab[3]; to definicja zmiennej typu int o nazwie Min. Zmiennej tej nadajemy wartość równą sumie czterech pierwszych elementów tablicy tab. Następnie mamy pętle: for(int i=1; i<n-3; i++) { if(Min>(tab[i]+tab[i+1]+tab[i+2]+tab[i+3])) { Min=(tab[i]+tab[i+1]+tab[i+2]+tab[i+3]); } } W pętli tej zmienna i przyjmuje kolejno wartości: 1,2,3,…,n-4 gdzie n to rozmiar tablicy tab. Przyjmijmy i=1 Wówczas mamy następującą instrukcję warunkową: if(Min>(tab[1]+tab[2]+tab[3]+tab[4])) { Min=(tab[i]+tab[i+1]+tab[i+2]+tab[i+3]); } Czyli porównujemy wartość zmiennej Min (która jest równa sumie pierwszych czterech elementów tablicy tab) z sumą elementów: drugiego (tab[1]), trzeciego (tab[2]), czwartego (tab[3]) i piątego (tab[4]). JeŜeli wartość Min jest większa od tej sumy zmieniamy wartość Min (szukamy najmniejszej sumy czterech kolejnych elementów w tablicy). Przyjmijmy i=2 Wówczas mamy następującą instrukcję warunkową: if(Min>(tab[2]+tab[3]+tab[4]+tab[5])) { Min=(tab[2]+tab[3]+tab[4]+tab[5]); } Czyli porównujemy dotychczasową wartość zmiennej Min z sumą elementów: trzeciego (tab[2]), czwartego (tab[3]), piątego (tab[4]) i szóstego (tab[5]). JeŜeli wartość Min jest większa od tej sumy zmieniamy wartość Min. Dla pozostałych wartości zmiennej i działanie jest analogiczne. Dzięki ograniczeniu działania pętli for do i mniejszego od n-3 (czyli równego maksymalnie n-4) na końcu porównujemy wartość zmiennej Min z sumą czterech ostatnich elementów tablicy tab (tablica ma rozmiar n): tab[n-4]+tab[n-3]+tab[n-2]+tab[n-1] Funkcja MinSuma4 zwraca wartość zmiennej Min: return Max; PowyŜsze funkcje są wykorzystane w następującym programie (funkcja main): int n; cout<<"Wprowadz rozmiar tablicy: "; cin>>n; int *tablica=new int[n]; Pobierz(tablica,n); Wypisz(tablica,n); if(n<4) { cout<<"Tablica powinna miec conajmniej 4 elementy"<<endl; } else { cout<<"Najmniejsza suma czterech kolejnych liczb wynosi " <<MinSuma4(tablica,n)<<endl; } delete [] tablica; Na początku definiujemy zmienną typu int o nazwie n, wprowadzamy jej wartość oraz definiujemy tablicę typu int o rozmiarze n: int n; cout<<"Wprowadz rozmiar tablicy (liczba wieksza niz 2!): "; cin>>n; int *tablica=new int[n]; Następnie wprowadzamy liczby do tablicy: Pobierz(tablica,n); oraz wypisujemy na ekranie jej zawartość: Wypisz(tablica,n); JeŜeli tablica zawiera mniej niŜ 4 liczby wypisywany jest odpowiedni komunikat. W przeciwnym razie funkcja MinSuma4 jest wykorzystana do wypisania na ekranie najmniejszej sumy czterech kolejnych liczb w tablicy (suma ta jest zwracana przez funkcję MinSuma4): cout<<"Najmniejsza suma czterech "<<MinSuma4(tablica,n)<<endl; kolejnych liczb wynosi