Összegzés, eldöntés, kiválasztás, keresés, megszámolás, maximumkiválasztás algoritmusmintákkal tervezett programok implementálása
Egy T fős baráti társaság egy nyaralás minden napján feljegyezte, hogy aznap mennyit költöttek. Készítsünk programot, amely meghatározza, hogy hány olyan nap volt, amikor fejenként 100 eurónál is többet költöttek!
Megszámolás
Bemenet
T: Egész
NapDb: Egész
Költés: Tömb[1..NapDb:Valós]
Kimenet
DrágaDb: Egész
Előfeltétel
T≥1 és NapDb≥0 és ∀i∈[1..NapDb]: Költés[i]≥0
Utófeltétel
DrágaDb=SZUM(i=1..NapDb, Költés[i]/T>100) 1

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int T;
int NapDb;
const int MaxNapDb=10;
double Koltes[MaxNapDb];
int DragaDb;
//ellenőrzött beolvasás
do
{
cout<<"Hanyan voltak?";
cin>>T;
if (T<1)
{
cout<<"Rossz adat!\n";
}
}
while (T<1);
do
{
cout<<"Hany napos volt a nyaralas?";
cin>>NapDb;
if ((NapDb<0) || (NapDb>MaxNapDb))
{
cout<<"Rossz adat!\n";
}
}
while ((NapDb<0) || (NapDb>MaxNapDb));
for (int i=0; i<NapDb; ++i)
{
do
{
cout<<"Mennyit koltottek a(z) "<<i+1<<". napon?";
cin>>Koltes[i];
if (Koltes[i]<0)
{
cout<<"Rossz adat!\n";
}
}
while (Koltes[i]<0);
}
//megoldás
DragaDb=0;
for (int i=0; i<NapDb; ++i)
{
if (Koltes[i]/T>100)
{
DragaDb++;
}
}
//kiírás
cout<<endl<<DragaDb
<<"db napon koltottek fejenkent tobb mint 100eurot."<<endl;
system("pause");
return 0;
}
Egy fesztivál minden napján feljegyezték, hogy hány belépőt adtak el aznap. Készítsünk programot, amely meghatározza, hogy melyik napon voltak a legtöbben a fesztiválon!
Maximumkiválasztás
Bemenet
NapDb: Egész
Eladás: Tömb[1..NapDb:Egész]
Kimenet
MaxNap: Egész
Előfeltétel
NapDb≥1 és ∀i∈[1..NapDb]: Eladás[i]≥0
Utófeltétel
MaxNap∈[1..NapDb] és ∀i∈[1..NapDb]: Eladás[i]≤Eladás[MaxNap]

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int NapDb;
const int MaxNapDb=10;
int Eladas[MaxNapDb];
int MaxNap;
//ellenőrzött beolvasás
do
{
cout<<"Hany napos volt a fesztival (1-"<<MaxNapDb<<")?";
cin>>NapDb;
if ((NapDb<1) || (NapDb>MaxNapDb))
{
cout<<"Rossz adat!"<<endl;
}
}
while ((NapDb<1) || (NapDb>MaxNapDb));
for (int i=0; i<NapDb; ++i)
{
do
{
cout<<endl<<"Hany belepot vettek a(z) "<<i+1<<". napon?";
cin>>Eladas[i];
if (Eladas[i]<0)
{
cout<<"Rossz adat!"<<endl;
}
}
while (Eladas[i]<0);
}
//megoldás
MaxNap=0;
for (int i=1; i<NapDb; ++i)
{
if (Eladas[i]>Eladas[MaxNap])
{
MaxNap=i;
}
}
//kiírás
cout<<endl<<"A beolvasott adatok:";
for (int i=0; i<NapDb; ++i)
{
cout<<Eladas[i]<<" ";
}
cout<<endl<<MaxNap+1<<". napon volt a legtobb latogato."<<endl;
system("pause");
return 0;
}
Egy papírgyűjtési akcióban mindenkiről feljegyezték, hogy ki hány kiló papírt hozott. Írjunk programot, amely megadja, hogy összesen mennyi papírt gyűjtöttek a résztvevők!
Sorozatszámítás
Bemenet
Db: Egész
Papír: Tömb[1..Db:Valós]
Kimenet
Össz: Valós
Előfeltétel
Db≥0 és ∀i∈[1..NapDb]: Papír[i]≥0
Utófeltétel
Össz=SZUM(i=1..Db) Papír[i]

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int Db;
const int MaxDb=100;
double Papir[MaxDb];
double Ossz;
//ellenőrzött beolvasás
do
{
cout<<"Hanyan voltak?";
cin>>Db;
if ((Db<0) || (Db>MaxDb))
{
cout<<"Ennyien nem lehettek!"<<endl;
}
}
while ((Db<0) || (Db>MaxDb));
for (int i=0; i<Db; ++i)
{
do
{
cout<<"Mennyit hozott az "<<i+1<<". ember?";
cin>>Papir[i];
if (Papir[i]<0)
{
cout<<"Ennyit nem hozhatott!"<<endl;
}
}
while (Papir[i]<0);
}
//megoldás
Ossz=0;
for (int i=0; i<Db; ++i)
{
Ossz=Ossz+Papir[i];
}
//kiírás
cout<<Ossz<<" kilot gyujtottek osszesen."<<endl;
system("pause");
return 0;
}
A Tömbök és ciklusok feladatsor melyik feladatát melyik programozási tétel segítségével lehet megoldani?
1.⇐Összegzés
2.⇐Eldöntés
3.⇐Kiválasztás
4.⇐Keresés
5.⇐Megszámolás
6.⇐Maximumkiválasztás
7.⇐Összegzés, megszámolás
8.⇐Minimumkiválasztás
Egy utazási irodában minden nap feljegyezték, hogy hány érdeklődő volt aznap. Készítsünk programot, amely meghatározza, hogy melyik napon érdeklődtek legtöbben az irodában!
Megoldási javaslat:
![]() ![]() |
![]() |
![]() |