Advertisement
GerexD

18hatekony 11,12,13,14, 2018julius

Mar 20th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <limits.h>
  4. /**
  5. 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,
  6. amelynek elemei egy-egy szóközzel vannak elválasztva egymástól.
  7. 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.
  8. A kapott számjegyeket írassátok ki egy sorba, szóközzel elválasztva.
  9. Példa: Ha a numere.txt állomány tartalma:
  10. 7
  11. 3 5 2 1 6 3 1, akkor kiírja: 6 1 (6p.)
  12. b) Írjátok le a saját szavaitokkal az általatok használt megoldási módszert és magyarázzátok
  13. meg, hogy miben rejlik a hatékonysága (3 – 4 sorban). (4p.)
  14. */
  15. using namespace std;
  16.  
  17. int main()
  18. {
  19. ifstream f("numere.txt");
  20. int p1=INT_MAX, p2=INT_MIN;
  21. int n;
  22. f>>n;
  23. while(f>>n)
  24. {
  25. if(n%2==0 && n>p2) p2=n;
  26. else if(n%2==1 && n<p1) p1=n;
  27. }
  28. cout<<p2<<" "<<p1;
  29. return 0;
  30. }
  31. ///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
  32. ++++++++++++++++++++++++++++++
  33. #include <iostream>
  34. #include <limits.h>
  35. #include <fstream>
  36. /**
  37. 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ű
  38. természetes szám.
  39. 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
  40. a DA , ellenkező esetben pedig a NU üzenetet írja ki a képernyőre.
  41. Példa: Ha a numere.txt állomány tartalma:
  42. 7
  43. 3 5 2 1 5 23 1
  44. Akkor a kiírt üzenet a NU. (6p.)
  45. */
  46. using namespace std;
  47.  
  48. int main()
  49. {
  50. ifstream f("numere.txt");
  51. int igaz=1;
  52. int n,e=INT_MIN;
  53. f>>n;
  54. while(f>>n)
  55. {
  56. if(n<e) igaz=0;
  57. e=n;
  58. }
  59. if(igaz==1) cout<<"DA";
  60. else cout<<"NU";
  61. return 0;
  62. }
  63. ///azért hatékony, mert a program nem tárol sorozatot, a beolvasás során n-et összehasonlítja az előző taggal
  64. ++++++++++++++++++++++++++++++++++
  65. #include <iostream>
  66. #include <fstream>
  67. #include <limits.h>
  68. /**
  69. 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.
  70. 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,
  71. szóközzel elválasztva,. egy a sorba.
  72. Példa: Ha a numere.txt állomány tartalma:
  73. 11
  74. 2 5 3 1 5 8 9 2 7 3 4
  75. akkor kiírja: 9 1. (6p.)
  76. 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.)
  77. */
  78. using namespace std;
  79.  
  80. int main()
  81. {
  82. ifstream f("numere.txt");
  83. int n;
  84. f>>n;
  85. int a[n]={0},max=INT_MIN;
  86. while(f>>n)
  87. {
  88. a[n]++;
  89. if(n>max) max=n;
  90. }
  91. cout<<max<<" "<<a[max];
  92. return 0;
  93. }
  94. ///futási idő szempontjából hatékony, mert egy függvénnyel beolvas és kiszámítja az eredményt
  95. ++++++++++++++++++++++++++++++++++
  96. #include <iostream>
  97. #include <fstream>
  98. #include <limits.h>
  99. /**
  100.  
  101. 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ű
  102. természetes szám.
  103. 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
  104. ki minden ilyen számot, csak egyszer, növekvő sorrendbe, ugyanabba a sorba, egy-egy szóközzel elválasztva.
  105. Példa: Ha a numere.txt állomány tartalma:
  106. 8
  107. 44 2 54 74 2 44 9 2
  108. akkor kiírja: 2 44 (6p.)
  109. 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.)
  110.  
  111. */
  112. using namespace std;
  113.  
  114. int main()
  115. {
  116. ifstream f("numere.txt");
  117. int n;
  118. f>>n;
  119. int a[100]={0};
  120. while(f>>n)
  121. {
  122. a[n]++;
  123. }
  124. for(int i=0;i<=99;i++)
  125. {
  126. if(a[i]>=2) cout<<i<<" ";
  127. }
  128. return 0;
  129. }
  130. /// futási idő szempontjából hatékony, mert előfordulási tömböt használ
  131. ++++++++++++++++++++++++++++++++++
  132. #include <iostream>
  133. #include <fstream>
  134. /**
  135. 2018 – július
  136. 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,
  137. 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
  138. 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.
  139. 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
  140. hatékony algoritmust.
  141. Példa: ha a bac.txt a következő számokat tartalmazza
  142. 7 7 1 3 7 7 5 3 3 3 7 8 9
  143. akkor a képernyőre kiírt érték 4
  144. a) Írja le saját szavaival a használt algoritmust, indokolva annak hatékonyságát. (2p.)
  145. b) Írja meg a leírt algoritmusnak megfelelő C/C++ programot. (8p.)
  146. */
  147. using namespace std;
  148.  
  149. int main()
  150. {
  151. ifstream f("bac.txt");
  152. int n, db=0,e,max=-1;
  153. f>>e;
  154. while(f>>n)
  155. {
  156. if(n!=e)db++;
  157. else{
  158. if(db>max) max=db;
  159. db=0;}
  160. e=n;}
  161.  
  162. cout<<max;
  163.  
  164. return 0;
  165. }
  166. ///az algoritmus egyenként olvassa be az elemeket és mindegyiket az előzőhöz viszonyítja.
  167. ///kiszámítja az összes egyenletes szekvenciának a hosszát, majd megnézi, melyik a leghosszabb közülük.
  168. ///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