Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a modul kezdőlapjáraUgrás a tananyag előző oldalára (15)Ugrás a tananyag következő oldalára (teszt)Fogalom megjelenítés (nem elérhető funckió)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintéseSúgó megtekintése

Tanulási útmutató

Összefoglalás

Folytatjuk a korábbi, hasonló témájú leckét. Újabb feladatokat oldunk meg, amelyek az összegzés (a sorozatszámítás leggyakoribb esete), eldöntés, kiválasztás, keresés, megszámolás, maximumkiválasztás algoritmusmintákkal oldhatók meg. Majd természetesen ezeket implementáljuk is C++ nyelven.

Követelmény

Önállóan megoldható feladatok

Sorozatszámítás, eldöntés, kiválasztás, keresés, megszámolás, maximumkiválasztás algoritmusmintákkal tervezett programok implementálása

Az animáció áttekinti a programozási tételeket és használatukat:

Az animáció áttekinti a programozási tételeket.

Flash lejátszó letöltése

Programozási tételek

Feladat: „Programozási tételek 1.” feladatsor/1.

Feladat

Írjunk programot, amely egy szabászat személyi nyilvántartása (személyi számok) alapján eldönti, hogy dolgozik-e férfi ezen a munkahelyen!

Vissza a tartalomjegyzékhez

Megoldás

Alkalmazott tétel

Eldöntés

Specifikáció

Bemenet

Db: Egész

Szszk: Tömb[1..Db:Szöveg]

Kimenet

VanFfi: Logikai

Előfeltétel

Db≥0 és ∀i∈[1..Db]: Hossz(Szszk[i])=11 és Jele(Szszk[i],1)∈{’1’,’2’} és …

Utófeltétel

VanFfi=∃i∈[1..Db]: Jele(Szszk[i],1)=’1’

Algoritmus

Az 1. feladat algoritmusa, struktogrammal.

Vissza a tartalomjegyzékhez

Feladat: „Programozási tételek 1.” feladatsor/6.

Feladat

Határozzuk meg az első 1-re végződő N-jegyű prímszámot!

Vissza a tartalomjegyzékhez

Megoldás

Alkalmazott tétel

Kiválasztás

Specifikáció

Bemenet

N: Egész

Kimenet

PrímN: Egész

Előfeltétel

N>1 [ilyen garantáltan létezik, ha N<???]

Utófeltétel

PrímN∈[10N-1+1.. 10N-1] és (PrímN Mod 10)=1 és Prím?(PrímN) és

∀pm∈[10N-1+1.. 10N-1]: (pm Mod 10)=1 és Prím?(pm)→pm≥PrímN

Definíció

Prím?:Egész→Logikai és

Prím?(x)=∀i∈[2..gyök(x)]: nem(i|x) [eldöntés tétel]

Algoritmus

A 6. feladat algoritmusa, struktogrammal.
A Prím-e függvény algoritmusa, struktogrammal.

Vissza a tartalomjegyzékhez

Feladat: „Programozási tételek 1.” feladatsor/10.

Feladat

Nyelvvizsgán a nyelvtani tesztek pontszámait (0..maxP, maxP>0) ülési sorrendben jegyezték föl. Keressünk olyan vizsgázót, aki ugyanannyi pontot kapott, mint valamelyik szomszédja!

Vissza a tartalomjegyzékhez

Megoldás

Alkalmazott tétel

Keresés

Specifikáció

Bemenet

VDb: Egész

Tesztek: Tömb[1..VDb:Egész]

MaxP: Egész

Kimenet

Van: Logikai

Sorsz: Egész

Előfeltétel

VDb≥0 és MaxP>0 és ∀i∈ [1..VDb]: tesztek[i]∈[0..maxP]

Utófeltétel

Van=∃i∈[1..VDb−1]: tesztek[i]=tesztek[i+1] és

Van → Sorsz∈[1..VDb−1] és tesztek[Sorsz]=tesztek[Sorsz+1]

Algoritmus

A 10. feladat algoritmusa, struktogrammal.

Kód

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    int VDb;
    const int MaxVDb=10;
    int Tesztek[MaxVDb];
    int MaxP;
    bool Van;
    int Sorsz;
    //ellenőrzött beolvasás
    do
    {
        cout<<"Hany pontot lehetett elerni osszesen?";
        cin>>MaxP;
        if (MaxP<=0)
        {
            cout<<"Rossz adat!"<<endl;
        }
    }
    while (MaxP<=0);
    do
    {
        cout<<"Hanyan irtak tesztet (1-"<<MaxVDb<<")?";
        cin>>VDb;
        if ((VDb<0) || (VDb>MaxVDb))
        {
            cout<<"Rossz adat!"<<endl;
        }
    }
    while ((VDb<0) || (VDb>MaxVDb));
    for (int i=0; i<VDb; ++i)
    {
        do
        {
            cout<<endl<<"Hany pontot ert el a(z) "<<i+1<<". vizsgazo?";
            cin>>Tesztek[i];
            if (Tesztek[i]<0 || Tesztek[i]>MaxP)
            {
                cout<<"Rossz adat!"<<endl;
            }
        }
        while (Tesztek[i]<0 || Tesztek[i]>MaxP);
    }
    //megoldás
    int i=0;
    while (i<VDb-1 && Tesztek[i]!=Tesztek[i+1])
    {
        i++;
    }
    Van=i<VDb-1;
    if (Van)
    {
        Sorsz=i;
    }
    //kiírás
    if (Van)
    {
        cout<<endl<<"A(z) "<<i+1
            <<". vizsgazo es szomszedja ugyanannyi pontot kapott."<<endl;
    }
    else
    {
        cout<<endl<<"Nincs olyan vizsgazo, aki ugyanannyi pontot kapott, 
                     mint valamelyik szomszedja!"<<endl;
    }
    system("pause");
    return 0;
}

Vissza a tartalomjegyzékhez

Feladat: „Programozási tételek 1.” feladatsor/2.

Feladat

Adott egy hőmérsékletsorozat. Állapítsuk meg, hogy szigorúan monoton növekvő-e!

Vissza a tartalomjegyzékhez

Megoldás

Alkalmazott tétel

Eldöntés

Specifikáció

Bemenet

Db: Egész

H: Tömb[1..Db:Valós]

Kimenet

SzigMonNo: Logikai

Előfeltétel

Db≥1

Utófeltétel

SzigMonNo=∀i∈[1..Db-1]: H[i]<H[i+1]

Algoritmus

A 2. feladat algoritmusa, struktogrammal.

Kód

#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    int Db;
    const int MaxDb=10;
    double H[MaxDb];
    bool SzigMonNo;
    //ellenőrzött beolvasás
    do
    {
        cout<<"Hany homerseklet van megadva (1-"<<MaxDb<<")?";
        cin>>Db;
        if ((Db<2) || (Db>MaxDb))
        {
            cout<<"Rossz adat!"<<endl;
        }
    }
    while ((Db<2) || (Db>MaxDb));
    for (int i=0; i<Db; ++i)
    {
        cout<<endl<<"A(z) "<<i+1<<". homerseklet?";
        cin>>H[i];
    }
    //megoldás
    int i=0;
    while (i<Db-1 && H[i]<H[i+1])
    {
        i++;
    }
    SzigMonNo=i==Db-1;
    //kiírás
    if (SzigMonNo)
    {
        cout<<endl<<"A sorozat szigoruan monotonon novekvo."<<endl;
    }
    else
    {
        cout<<endl<<"A sorozat nem szigoruan monotonon novekvo."<<endl;
    }
    system("pause");
    return 0;
}

Vissza a tartalomjegyzékhez

Házi feladat

Feladat

Írjunk programot, amely egy fizetési kimutatás alapján eldönti, hogy volt-e olyan munkavállaló, aki 100.000Ft alatti összeget kapott!

Vissza a tartalomjegyzékhez

Fel a lap tetejére
Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.