3550 - liceu
Cerința
La un liceu, elevii trebuie să se alinieze pentru a se înregistra la diverse activități extracurriculare. Pentru a gestiona această coadă, se folosesc operațiuni de tip coadă, unde elevii pot adăuga sau elimina o înregistrare. Sarcina ta este să implementezi un program care să simuleze aceste operațiuni asupra unei cozi de înregistrare.
Date de intrare
Programul citește de la tastatură:
Un număr întreg n reprezentând numărul de operațiuni. O listă de n operațiuni, fiecare operațiune fiind de forma "ENQUEUE X" (unde X este numele unui elev) sau "DEQUEUE".
Date de ieșire
Pe ecran se va afișa coada rezultată după efectuarea tuturor operațiunilor. Dacă o operațiune "DEQUEUE" este efectuată pe o coadă goală, se va afișa mesajul "Eroare: coada goală".
Restricții și precizări
- 1 ⩽ n ⩽ 100
- 'x' este întotdeauna un nume de elev reprezentat printr-un șir de caractere.
Exemplu 1
- Intrare
5
ENQUEUE Maria
ENQUEUE Andrei
DEQUEUE
ENQUEUE Ioana
ENQUEUE Alexandru
- Iesire
['Andrei', 'Ioana', 'Alexandru']
Exemplu 2
- Intrare
4
ENQUEUE George
DEQUEUE
DEQUEUE
ENQUEUE Ana
- Iesire
Eroare: coada goală ['Ana']
Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
def citeste_date():
try:
n = int(input("Introduceți numărul de operațiuni (n): "))
operatiuni = []
for _ in range(n):
operatiune = input().strip()
operatiuni.append(operatiune)
return n, operatiuni
except ValueError:
return None, None
def valideaza_date(n, operatiuni):
if not (1 <= n <= 100):
return False
for operatiune in operatiuni:
if not (operatiune.startswith("ENQUEUE ") or operatiune == "DEQUEUE"):
return False
if operatiune.startswith("ENQUEUE ") and len(operatiune.split()) != 2:
return False
if operatiune.startswith("ENQUEUE ") and not operatiune.split()[1].isalpha():
return False
return True
def proceseaza_operatiuni(n, operatiuni):
coada = []
for operatiune in operatiuni:
if operatiune.startswith("ENQUEUE "):
_, nume = operatiune.split()
coada.append(nume)
elif operatiune == "DEQUEUE":
if coada:
coada.pop(0)
else:
print("Eroare: coada goală")
return coada
def main():
n, operatiuni = citeste_date()
if n is None or operatiuni are None or not valideaza_date(n, operatiuni):
print("Datele de intrare nu corespund restricțiilor impuse.")
return
print("Datele de intrare corespund restricțiilor impuse.")
rezultat = proceseaza_operatiuni(n, operatiuni)
print(rezultat)
if __name__ == "__main__":
main()