Program 20 Napisać następujące funkcje: • funkcję pobierającą (z

advertisement
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
Download