Advertisement
imarosi

Ciklust keres tömbben

Oct 14th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. int elorejelez(int feljegyzesek[]) {
  2.     int hossz = 0;
  3.     while (feljegyzesek[hossz] != -1)
  4.         hossz++;
  5.     // hossz az lett, ahol a -1 van a tömbben. Olyan hosszú a tömb.
  6.     // Milyen hosszú egy ciklus?
  7.     int ch;
  8.     for (ch=1; ch < hossz; ch++) {
  9.         // feltételezzük, hogy ch a ciklus hossza. Teszteljük le, hogy tényleg az-e?
  10.         // Addig kell tesztelni, amíg az i+ch index még benne van a tömbben
  11.         bool jo_ch = true;
  12.         for (int i=0; i+ch < hossz; i++) {
  13.             if (feljegyzesek[i] != feljegyzesek[i+ch])
  14.                 jo_ch = false;  // mégsem jó ez a ciklushossz
  15.         }
  16.         if (jo_ch)  // ha true maradt, akkor minden tömbelem megegyezik a ch-val odébbival,
  17.             break;  // tényleg ciklust találtunk, nem kell a többi hosszat nézni, mert ch pont jó
  18.     }
  19.     // ch a ciklushossz
  20.     // Ha nem volt semmilyen ismétlődő szakasz, akkor ch == hossz
  21.     // A hossz-adik ciklus elemet akarjuk visszaadni, ami ugyanaz, mint ch-val korábban:
  22.     return feljegyzesek[hossz - ch];
  23.     // Lehetne úgy is, hogy return feljegyzesek[hossz % ch];
  24.     // de az előző azt hiszem, érthetőbb.
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement