Advertisement
GerexD

18hatekony 7,8

Mar 14th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. /**
  4. 7. A SIR.TXT szövegállomány első sora egy n (1≤n≤10000) természetes számot tárol és a második sora, egy hellyel elválasztva egymástól, egy növekvő sorozatot n természetes számokból,
  5. mindegyik számot legtöbb 9 számjegyből. Platónak nevezzük egy érték sorban, hasonló elemszámmal rendelkező szegmenseket, amelyek egymásmellett helyezkednek el. Egy plató hossza egyenlő az
  6. őt alkotó elemek hosszával.
  7. a) Írjatok egy C++ programot amely beolvassa az állomány adatait és, egy hatékony módszerrel a program futása és a memória használat függvényébe képernyőre vetíti, egy hellyel elválasztva
  8. egymástól, egy plató maximális hosszát, és azt az értéket amely a platót alkotja. Abban az esetben ha több plató ugyanazzal a hosszúsággal rendelkezik kivetítjük a legnagyobb értéket amely
  9. valamelyik platót alkotja. (6p.)
  10. Például: ha a SIR.TXT
  11. állomány tartalma :
  12. 10
  13. 11 211 211 211 328 400 400 1201 1201 1201
  14. akkor a program képernyőre vetít: 3 1201
  15. b) Írjátok le rövíden, saját szavaitokkal, az a pontban használt módszert kifejtve annak hatékonyságát. (4p.)
  16. */
  17. using namespace std;
  18.  
  19. int main()
  20. {
  21. int elem=0,db=0,n,a[10000],max=0;
  22. ifstream f("sir.txt");
  23. f>>n;
  24. for(int i=1;i<=n;i++)
  25. {
  26. f>>a[i];
  27. if(a[i]==a[i-1]) db++;
  28. else if(db>max){ max=db;
  29. elem=a[i];}
  30. else if(db==max) if(a[i]>elem) elem=a[i];
  31. }
  32. cout<<max<<" "<<elem;
  33. return 0;
  34. }
  35. ///hatékony, mert ahogy tárol egyből elvégzi az adott műveletet, valamint egyetlen egy ciklust használ
  36. +++++++++++++++++++++++++++++++++
  37. #include <iostream>
  38. #include <fstream>
  39. /**
  40. 8. a) A BAC.TXT szöveges állomány első sorában egy n (0<n≤1000000) természetes szám található, a második sorában egy-egy szóközzel elválasztva, n darab nullától különböző,
  41. legfeljebb 7 számjegyű, természetes szám található, növekvő sorrendbe rendezve. Írjatok C++ programot, amely beolvassa az állományból az összes számot és egy, a memóriatakarékosság
  42. és a végrehajtás sebessége szempontjából hatékony algoritmust használva, a második sorból olvasott mindegyik számra meghatározza azt az ennél nagyobb vagy egyenlő, de ugyanakkor
  43. legkisebb olyan értéket, amely 2-nek hatványa. Egy x természetes szám 2-nek hatványa, ha létezik olyan k természetes szám, hogy x=2k. Az így meghatározott értékeket írja ki a
  44. képernyőre egy-egy szóközzel elválasztva.
  45. Például: ha az állomány az alábbi tartalommal rendelkezik:
  46. 5
  47. 3 5 8 9 12
  48. akkor, képernyőre kiíródik:
  49. 4 8 8 16 16 (6p.)
  50. b) Írjátok le a saját szavaitokkal tömören az a) pontban általatok használt algoritmust, és magyarázzátok meg, hogy miben rejlik a hatékonysága. (4p.)
  51. */
  52. using namespace std;
  53.  
  54. int main()
  55. {
  56. int n, a[500],h=2;
  57. ifstream f("bac.txt");
  58. f>>n;
  59. for(int i=1;i<=n;i++)
  60. {
  61. f>>a[i];
  62. if(a[i]<h) cout<<h<<" ";
  63. else {while(h<a[i])
  64. h=h*2;
  65. cout<<h<<" ";}
  66. }
  67.  
  68. return 0;
  69. }
  70. ///az algoritmus tárolás után ellenőrzi a műveletet, a h változó növelésével pedig csak szükség esetén foglalkozik
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement