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