Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <limits.h>
- /**
- 11. A numere.txt szöveges állomány első sorában egy n, (0<n<100000) természetes szám található, a következő sorban pedig egy n darab egyjegyű természetes számot tartalmazó sorozatot,
- amelynek elemei egy-egy szóközzel vannak elválasztva egymástól.
- a) Írjatok, a futási időt szempontjából hatékony C++ programot, amely meghatározza az állomány második sorában levő legnagyobb páros és legkisebb páratlan számjegyet.
- A kapott számjegyeket írassátok ki egy sorba, szóközzel elválasztva.
- Példa: Ha a numere.txt állomány tartalma:
- 7
- 3 5 2 1 6 3 1, akkor kiírja: 6 1 (6p.)
- b) Írjátok le a saját szavaitokkal az általatok használt megoldási módszert és magyarázzátok
- meg, hogy miben rejlik a hatékonysága (3 – 4 sorban). (4p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("numere.txt");
- int p1=INT_MAX, p2=INT_MIN;
- int n;
- f>>n;
- while(f>>n)
- {
- if(n%2==0 && n>p2) p2=n;
- else if(n%2==1 && n<p1) p1=n;
- }
- cout<<p2<<" "<<p1;
- return 0;
- }
- ///azért hatékony, mert a program nem tárol sorozatot, illetve a beolvasás végére már meg is lesz a két eredmény
- ++++++++++++++++++++++++++++++
- #include <iostream>
- #include <limits.h>
- #include <fstream>
- /**
- 12. A numere.txt szöveges állomány első sorában egy n, (0<n<100000) természetes szám található, a következő sorban pedig, egy-egy szóközzel elválasztva, n darab legtöbb kétjegyű
- természetes szám.
- a) Írjatok a futási idő szempontjából egy hatékony C++ programot, amely eldönti, hogy az állomány második sorában levő számok szigorúan növekvő sorrendben vannak-e. Ha igen, akkor
- a DA , ellenkező esetben pedig a NU üzenetet írja ki a képernyőre.
- Példa: Ha a numere.txt állomány tartalma:
- 7
- 3 5 2 1 5 23 1
- Akkor a kiírt üzenet a NU. (6p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("numere.txt");
- int igaz=1;
- int n,e=INT_MIN;
- f>>n;
- while(f>>n)
- {
- if(n<e) igaz=0;
- e=n;
- }
- if(igaz==1) cout<<"DA";
- else cout<<"NU";
- return 0;
- }
- ///azért hatékony, mert a program nem tárol sorozatot, a beolvasás során n-et összehasonlítja az előző taggal
- ++++++++++++++++++++++++++++++++++
- #include <iostream>
- #include <fstream>
- #include <limits.h>
- /**
- 13. A numere.txt szöveges állomány első sorában egy n, (0<n<100000) természetes szám található, a következő sorban pedig, egy-egy szóközzel elválasztva, n darab számjegy.
- a) Írjatok a futási idő szempontjából hatékony C++ programot, amely meghatározza az állomány második sorában levő legnagyobb számjegyet és gyakoriságát. Írassátok ki a kapott értékeket,
- szóközzel elválasztva,. egy a sorba.
- Példa: Ha a numere.txt állomány tartalma:
- 11
- 2 5 3 1 5 8 9 2 7 3 4
- akkor kiírja: 9 1. (6p.)
- b) Írjátok le a saját szavaitokkal tömören az általatok használt megoldási módszert és magyarázzátok meg, hogy miben rejlik a hatékonysága (3 – 4 sorban). (4p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("numere.txt");
- int n;
- f>>n;
- int a[n]={0},max=INT_MIN;
- while(f>>n)
- {
- a[n]++;
- if(n>max) max=n;
- }
- cout<<max<<" "<<a[max];
- return 0;
- }
- ///futási idő szempontjából hatékony, mert egy függvénnyel beolvas és kiszámítja az eredményt
- ++++++++++++++++++++++++++++++++++
- #include <iostream>
- #include <fstream>
- #include <limits.h>
- /**
- 14. A numere.txt szöveges állomány első sorában egy n, (0<n<100000) természetes szám található, a következő sorban pedig, egy-egy szóközzel elválasztva, n darab legtöbb kétjegyű
- természetes szám.
- a) Írjatok a futási idő szempontjából hatékony C++ programot, amely meghatározza, hogy az állomány második sorában levő számokból melyek fordulnak elő legalább kétszer. Írassatok
- ki minden ilyen számot, csak egyszer, növekvő sorrendbe, ugyanabba a sorba, egy-egy szóközzel elválasztva.
- Példa: Ha a numere.txt állomány tartalma:
- 8
- 44 2 54 74 2 44 9 2
- akkor kiírja: 2 44 (6p.)
- b) Írjátok le a saját szavaitokkal tömören az általatok használt megoldási módszert és magyarázzátok meg, hogy miben rejlik a hatékonysága (3 – 4 sorban). (4p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("numere.txt");
- int n;
- f>>n;
- int a[100]={0};
- while(f>>n)
- {
- a[n]++;
- }
- for(int i=0;i<=99;i++)
- {
- if(a[i]>=2) cout<<i<<" ";
- }
- return 0;
- }
- /// futási idő szempontjából hatékony, mert előfordulási tömböt használ
- ++++++++++++++++++++++++++++++++++
- #include <iostream>
- #include <fstream>
- /**
- 2018 – július
- Egy természetes számokból álló számsorozat nem egyenletes szekvenciájának nevezzük az adott sorozat egy olyan egymásutáni elemeit tartalmazó részsorozatát,
- amelyek esetén igaz, hogy bármely három egymás utáni érték különbözik. A szekvencia hossza egyenlő az elemeinek számával. A bac.txt legtöbb 106 természetes számot
- tartalmaz a [0,9] intervallumból. A számok egy-egy szóközzel vannak elválasztva, és létezik legaláb három egymás után levő szám, amelyek különböznek egymástól.
- Ki kell íratni a képernőre az állományban levő sorozat egy nem egyenletes szekvenciájának maximális hosszát. Tervezzen a futási idő és a felhasznált memória szempontjából
- hatékony algoritmust.
- Példa: ha a bac.txt a következő számokat tartalmazza
- 7 7 1 3 7 7 5 3 3 3 7 8 9
- akkor a képernyőre kiírt érték 4
- a) Írja le saját szavaival a használt algoritmust, indokolva annak hatékonyságát. (2p.)
- b) Írja meg a leírt algoritmusnak megfelelő C/C++ programot. (8p.)
- */
- using namespace std;
- int main()
- {
- ifstream f("bac.txt");
- int n, db=0,e,max=-1;
- f>>e;
- while(f>>n)
- {
- if(n!=e)db++;
- else{
- if(db>max) max=db;
- db=0;}
- e=n;}
- cout<<max;
- return 0;
- }
- ///az algoritmus egyenként olvassa be az elemeket és mindegyiket az előzőhöz viszonyítja.
- ///kiszámítja az összes egyenletes szekvenciának a hosszát, majd megnézi, melyik a leghosszabb közülük.
- ///az algoritmus hatékony, mert a beolvasás során megkapja az eredményt és nem tárol sorozatban.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement