5. hét: vegyes feladatok, gyakorlás

Czirkos Zoltán, Frey Balázs · 2020.08.04.

1. Prímtényezős felbontás

Írj egy programot, amelyik kér egy számot a felhasználótól, és kiírja a prímtényezős felbontását!

Melyik számot? 75

 75│3
 25│5
  5│5
  1│
Tipp

Tippek

  • Addig kell végezni a kísérletezést – osztogatást, amíg 1-hez nem jutunk. Egy while szam != 1-ünk máris van!
  • Növekvő sorban kell haladni az osztók vizsgálatával.
  • Baj, ha megpróbálunk összetett számmal osztani (pl. 4-gyel, 6-tal)? Miért?
  • Ha osztható a szám, elosztjuk, kiírjuk. Ha nem osztható, másik osztót kell keresni.
  • Alkalmazd a sztringek formázási lehetőségeit, az előadáson tanult módon!

2. A Fisher-Yates keverés

Előadáson szerepelt Fisher és Yates algoritmusa, amellyel egy listát lehet megkeverni. Az ott bemutatott verzió helyben keveri meg a listát (egyetlen listát módosít az elemek cseréjével), és az elejétől a végéig halad. A működése:

CIKLUS i = 0-tól n-2-ig:
    j = véletlenszám i ≤ j < n között
    csere: lista[i] ↔ lista[j]

Implementáld újra az algoritmust a pszeudokód alapján! (Csak akkor nézd meg az előadásanyagot, ha elakadtál.) Utána írd meg két további változatban:

  • Az első verzióban dolgozz egy listával, de keverd azt a végétől haladva az eleje felé! Vagyis cseréld meg az utolsó elemet egy véletlenszerűen választottal, az utolsó előttit egy véletlenszerűen választottal és így tovább.
  • A második verzióban dolgozz két listával! Az eredeti lista véltelenszerűen választott elemeit tedd át egy másik listába, törölve azt folyamatosan az előbbiből!

Mindkét változatban írd ki a listát (listákat) folyamatosan, iterációnként, hogy látszódjon, mi történik!

3. Útiterv

Egy kamionsofőr autópályán vezet, 100 km/h-val haladva. A benzinkutak egymástól való távolságát előre ismeri a térképről. Minden másfél órányi vezetés után pihenőt kell tartania. Szeretne egy útitervet készíteni: előre eldönteni azt, hogy melyik benzinkúton kell majd pihennie. A szabály egyszerű: minden olyan benzinkútnál megáll, amelynél ha nem tartana pihenőt, a következő kúthoz már csak úgy érne el, ha túllépné a másfél órás egyfolytában vezetést.

Írj programot, amely soronként beolvassa az egyes benzinkutak közötti távolságot km-ben! Előbb megkapja a távolságok számát, majd magukat a távolságokat (soronként egy darabot). Végül pedig írja ki az útitervet. Például ha bemenetként a 45.3, 30.7, 64, 35, 72 számsort kapja (km-ek), akkor a kimenet az alábbi kell legyen:

45.3 km, 30.7 km, 64 km, szünet.
35 km, 72 km, vége.

4. További feladatok

A feladatgyűjteményben találsz különféle játékokat. Írj programot ahhoz, amelyik tetszik!