Program 21 Napisać następujące funkcje: • funkcję pobierającą

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