Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- /**
- 2. a) A date.in állomány legtöbb két számjegyből álló, legtöbb 1000 természetes számot tárol (amelyek közt van legalább egy páros és egy páratlan szám), egy-egy szóközzel elválasztva egymástól.
- Írjatok egy C++ programot amely beolvassa a számokat a date.in állományból és a date.out állományba írja, a különböző beolvasott értékeket, egy hellyel elválasztva egymástól a következő
- szabályt betartva: az első sorba legyenek beírva a páratlan számok növekvő sorrendbe, majd a második sorba a páros számok csökkenő sorrendbe. Válasszatok egy hatékony módszert a futási
- idő függvényében.
- Exemplu: Ha a date.in állomány első sorában tárolt számok:
- 75 12 3 3 18 75 1 3
- akkor a date.out állomány tartalma:
- 1 3 75
- 18 12 (6p.)
- b) Írjátok le röviden, saját szavaitokkal a megoldásra használt módszert, kifejtve, hogy miben áll a hatékonysága (3 – 4 sorban). (4p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("date.in");
- ofstream g("date.out");
- int a[99]={0},n;
- while(f>>n)
- {
- a[n]=1;
- }
- for(int i=1;i<=99;i++)
- {
- if(i%2==1 && a[i]==1) g<<i<<" ";
- }
- g<<endl;
- for(int i=98;i>=0;i--)
- {
- if(i%2==0 && a[i]==1) g<<i<<" ";
- }
- return 0;
- }
- /// hatékony, mert előfordulási tömbbel dolgozik és nem használ semmiféle rendezést
- ++++++++++++++++++++++++
- #include <iostream>
- #include <fstream>
- /**
- 3. A date.in szövegállomány első sora legtöbb 1000 természetes számot tárol, egy hellyel elválasztva egymástól, mindegyikük maximum 9 számjegyből.
- a) Írjatok egy C++ programot amely beolvassa a számokat a date.txt állományból, meghatározza és képernyőre vetíti a leghosszabb csökkenő sorrendbe alakult szekvens hosszát,
- amelyet az állományból beolvasott egymásutáni értékek alkotnak. Válasszatok egy hatékony megoldási módszert a futási idő függvényében.
- Például: Ha a date.in állomány tartalma:
- 5 2 19 4 3 6 3 2 1 0 8
- (6p.)
- A képernyőre vetíti:
- 5
- b) Írjátok le röviden, saját szavaitokkal, a megoldásra használt módszert, kifejtve, hogy miben áll a hatékonysága (3 – 4 sorban). ( 4p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("date.in");
- int db=0,max=0,e,n;
- f>>e;
- while(f>>n)
- {
- if(n<e)
- {
- db++;
- e=n;
- }
- else
- {
- if(db>max)
- {
- max=db;
- db=0;
- }
- e=n;
- }
- }
- cout<<max;
- return 0;
- }
- ++++++++++++++++++++++++++++++++
- #include <iostream>
- #include <fstream>
- using namespace std;
- /**
- 4. Egy természetes számokból álló sorozat egy elemét „csúcspontnak” nevezzük, ha két szomszédja van, a sorozat közvetlenül előtte és közvetlenül utána levő eleme, és az illető
- elem értéke szigorúan nagyobb a szomszédainak értékeinél.
- a) A date.in szöveges állomány egy legalább kettő és legfeljebb 10000 elemű, legfeljebb 6 számjegyű természetes számokból álló sorozatot tartalmaz, amelynek elemei egy-egy szóközzel
- vannak elválasztva. Írjatok C++ programot, amely beolvassa az összes számot az állományból és kiírja a képernyőre a beolvasott sorozat „csúcspontjainak” számát. A programban egy, a
- memória felhasználás szempontjából hatékony, algoritmust használjatok. (6p.)
- Például: ha a date.in szöveges állomány tartalma a következő:
- 51 20 100 43 43 618 5000 31 2020 114 116 4
- akkor kiíródik a 4 (a négy aláhúzott szám a sorozat „csúcspontjai”).
- b) Írjátok le tömören a saját szavaitokkal az általatok használt megoldási módszert, és indokoljátok meg a módszer hatékonyságát (3-4 sorban). (4p.)
- */
- int main()
- {
- ifstream f("date.in");
- int a[10000],m=1,db=0,n,e=0;
- while(f>>n)
- {
- a[m]=n;
- m++;
- }
- for(int i=2;i<=m-1;i++)
- {
- if(a[i]>a[i-1] && a[i]>a[i+1]) db++;
- }
- cout<<db;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement