Motorverseny
motorverseny - Várhelyi Ágnes2 A Motorverseny feladat szövege Ismert a SuperBike világbajnokság 0<n<1<=12 idei futamának beérkezési sorrendje, a BIKE.BE fájlban. Minden sorban 1 név van, futamonként legfeljebb 6. Az egyes futamokat egy üres sor választja el egymástól (mindig maximum hatan érkeznek be). 1.Adjuk meg azok névsorát a FUTAM.TXT fájlban, akik minden futamon célba érkeztek! Minden sorban pontosan egy név szerepeljen! 2.A LISTA.TXT-be kerüljön be a világbajnokság eredményrangsora (rendezés)! A győztes hat, a többiek rendre eggyel kevesebb pontot kapnak! Minden sorban egy név legyen mellette egy szóköz, utána a pontszám!
motorverseny - Várhelyi Ágnes3 Változók 3db textfájl (BIKE.BE; FUTAM.TXT; LISTA.TXT) Amibe kiolvasunk (v) –Olyan rekordokból álló vektor, ahol nev versenyző neve (v.n) pont az olvasásig elért összpontszáma (v.p) futam az olvasásig teljesített futamok száma (v.f) A futamok számlálója (fut) Futamon belül a helyezés számlálója (hely) A versenyzők számának nyilvántartása (n) „sor ” a fájlba íráshoz (sor)
motorverseny - Várhelyi Ágnes4 Adatbeolvasás - kezdőrekord Hozzárendel(f,”BIKE.BE”) Megnyit_olvasásra(f) Fut:=1 n:=0;hely:=0 Olvas(f.sor) Ciklus amíg sor nem üres n:=n+1;hely:=hely+1 V[n].n:=sor;v[n].p:=6+1-hely olvas(f,sor) Ciklus vége (első futam)
motorverseny - Várhelyi Ágnes5 Adatbeolvasás - folyamatos Olvaseljárás(f:textfájl; sor:string; fv:logikai) fv:=hamis Ha nem fájlvége akkor sor:=olvas(f,sor) Különben fv:=igaz Eljárás vége
motorverseny - Várhelyi Ágnes6 A teljes beolvasás ciklusa Olvaseljárás(f,sor,fv) Ciklus amíg nem fv fut:= fut+1 Feldolgozva beír v-be olvaseljárás(f,sor,fv) Ciklus vége (fájlvégéig) Bezár(f)
motorverseny - Várhelyi Ágnes7 A v-be beírás ciklusa Hely:=0 Ciklus amíg nem fv & sor nem üres hely:=hely+1 keresés arra, hogy ez a név szerepelt-e már egy korábbi futamban (l igaz akkor igen ) ha nem l akkor n:=n+1; i:=n v[i].n:=sor; v[i].p:=0; v[i].futam:=0 v[i].p:= v[i].p+6+1-hely; v[i].f:= v[i].f+1 Olvaseljárás(f,sor,fv) Ciklus vége(sor nem üres)
motorverseny - Várhelyi Ágnes8 A keresés i:=0 l:=hamis Ciklus amíg i<n & nem l i:=i+1 l:=v[i].n=sor Ciklus vége (keres)
motorverseny - Várhelyi Ágnes9 A FUTAM.TXT feltöltése Hozzárendel(h, „FUTAM.TXT”) Megnyit_írásra(h) Ciklus i:= 1, k ha v[i].f=fut akkor ír_soremeléssel(h, v[i].n) Ciklus vége (h-ba írás)
motorverseny - Várhelyi Ágnes10 A LISTA.TXT készítése rendezés Ciklus i:=1, n-1 ciklus j:=i+1, n ha v[i].p < v[j].p akkor sv:=v[i].n v[i].n:=v[j].n v[j].n:=sv ciklus vége (j) Ciklus vége (i)
motorverseny - Várhelyi Ágnes11 A LISTA.TXT fájl feltöltése Hozzárendel(g, „LISTA.TXT”) Megnyit_írásra(g) Ciklus i:=1, k sor:=v[i].n+’ ‘+v[i].p ír(g, sor) Ciklus vége (g-be írás) Bezár (g)