Program 20 Napisać następujące funkcje: • funkcję pobierającą (z klawiatury) zawartość tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr; • funkcję wypisującą zawartość tablicy podanej jako parametr o długości podanej jako parametr; • funkcję zwracającą największą sumę trzech kolejnych liczb zapisanych w tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr. Przykład JeŜeli tablica zawiera liczby: 1,3,4,2,3,4,0,1,4,5,0 Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi: 10 Napisać program wykorzystujący powyŜsze funkcje. #include <iostream> using namespace std; void Pobierz(int tab[],int r); void Wypisz(int tab[],int r); int MaxSuma3(int tab[],int n); int main() { int n; cout<<"Wprowadz rozmiar tablicy (liczba wieksza niz 2!): "; cin>>n; int tablica[n]; Pobierz(tablica,n); Wypisz(tablica,n); cout<<"Najwieksza suma trzech kolejnych liczb wynosi " <<MaxSuma3(tablica,n)<<endl; 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 MaxSuma3(int tab[], int n) { int Max=tab[0]+tab[1]+tab[2]; for(int i=1; i<n-2; i++) { if(Max<(tab[i]+tab[i+1]+tab[i+2])) { Max=(tab[i]+tab[i+1]+tab[i+2]); } } return Max; } 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 MaxSuma3 int MaxSuma3(int tab[], int n) { int Max=tab[0]+tab[1]+tab[2]; for(int i=1; i<n-2; i++) { if(Max<(tab[i]+tab[i+1]+tab[i+2])) { Max=(tab[i]+tab[i+1]+tab[i+2]); } } return Max; } 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 Max=tab[0]+tab[1]+tab[2]; to definicja zmiennej typu int o nazwie Max. Zmiennej tej nadajemy wartość równą sumie trzech pierwszych elementów tablicy tab. Następnie mamy pętle: for(int i=1; i<n-2; i++) { if(Max<(tab[i]+tab[i+1]+tab[i+2])) { Max=(tab[i]+tab[i+1]+tab[i+2]); } } W pętli tej zmienna i przyjmuje kolejno wartości: 1,2,3,…,n-3 gdzie n to rozmiar tablicy tab. Przyjmijmy i=1 Wówczas mamy następującą instrukcję warunkową: if(Max<(tab[1]+tab[2]+tab[3])) { Max=(tab[1]+tab[2]+tab[3]); } Czyli porównujemy wartość zmiennej Max (która jest równa sumie pierwszych trzech elementów tablicy tab) z sumą elementów: drugiego (tab[1]), trzeciego (tab[2]) i czwartego (tab[3]). JeŜeli wartość Max jest mniejsza od tej sumy zmieniamy wartość Max. Przyjmijmy i=2 Wówczas mamy następującą instrukcję warunkową: if(Max<(tab[2]+tab[3]+tab[4])) { Max=(tab[2]+tab[3]+tab[4]); } Czyli porównujemy dotychczasową wartość zmiennej Max z sumą elementów: trzeciego (tab[2]), czwartego (tab[3]) i piątego (tab[4]). JeŜeli wartość Max jest mniejsza od tej sumy zmieniamy wartość Max. Dla pozostałych wartości zmiennej i działanie jest analogiczne. Dzięki ograniczeniu działania pętli for do i mniejszego od n-2 (czyli równego maksymalnie n-3) na końcu porównujemy wartość zmiennej Max z sumą trzech ostatnich elementów tablicy tab. Funkcja MaxSuma3 zwraca wartość zmiennej Max: return Max; PowyŜsze funkcje są wykorzystane w następującym programie: int n; cout<<"Wprowadz rozmiar tablicy (liczba wieksza niz 2!): "; cin>>n; int tablica[n]; Pobierz(tablica,n); Wypisz(tablica,n); cout<<"Najwieksza suma trzech "<<MaxSuma3(tablica,n)<<endl; kolejnych liczb wynosi 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[n]; Następnie wprowadzamy liczby do tablicy: Pobierz(tablica,n); oraz wypisujemy na ekranie jej zawartość: Wypisz(tablica,n); Następnie wykorzystując funkcję MaxSuma3 wypisujemy na ekranie największą sumę trzech kolejnych liczb w tablicy (suma ta jest zwracana przez funkcję MaxSuma3): cout<<"Najwieksza suma trzech "<<MaxSuma3(tablica,n)<<endl; kolejnych liczb wynosi