4104 - afisare21: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
Fără descriere a modificării
Linia 41: Linia 41:
             minim = y[i]
             minim = y[i]
     for i in range(n):
     for i in range(n):
         adv = True
         advevarat = True
         if x[i] > minim:
         if x[i] > minim:
             adv = False
             advevarat = False
         if adv:
         if advevarat:
             exista = True
             exista = True
             print(x[i], end=" ")
             print(x[i], end=" ")

Versiunea de la data 31 martie 2023 14:22

Sursa: - afisare21


Cerinţa

Se dă un vector x cu n elemente numere întregi, și un vector y cu m elemente, de asemenea numere întregi. Să se afișeze toate elementele din vectorul x care sunt mai mici decât toate elementele din vectorul y.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale vectorului x. Apoi și citește m și cele m elemente ale lui y.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou va afișa elementele din vectorul x care sunt mai mici decât toate elementele din vectorul y, sau NU EXISTA dacă vectorul x nu conține astfel de elemente. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • 1n, m10.000
  • elementele celor 2 vectori vor fi din intervalul [-1.000.000.000,1.000.000.000]

Exemple

Exemplul 1

Intrare
7
9 -6 5 14 2 1 10
8
8 14 9 14 16 15 4 6
Ieșire
Datele sunt introduse corect.
-6 2 1

Exemplul 2

Intrare
7
1 2 3 4
Ieșire
Datele nu corespund restricțiilor impuse.


Rezolvare

# 4104

def afis_el_din_vect_x_mai_mici_decat_toate_el_din_y(n, x, m, y):
    minim = 1000000001
    exista = False
    for i in range(m):
        if y[i] < minim:
            minim = y[i]
    for i in range(n):
        advevarat = True
        if x[i] > minim:
            advevarat = False
        if advevarat:
            exista = True
            print(x[i], end=" ")
    if not exista:
        print("NU EXISTA")


def citire_conform_restrictiilor():
    n = int(input())
    x = list(map(int, input().split()))
    if n != len(x):
        print("Datele nu corespund restricțiilor impuse.")
        exit()
    m = int(input())
    y = list(map(int, input().split()))
    if m != len(y):
        print("Datele nu corespund restricțiilor impuse.1")
        exit()
    for element in x:
        if element < -1000000000 or element > 1000000000:
            print("Datele nu corespund restricțiilor impuse.3")
            exit()
    for element in y:
        if element < -1000000000 or element > 1000000000:
            print("Datele nu corespund restricțiilor impuse.4")
            exit()
    if n < 1 or n > 10000:
        print("Datele nu corespund restricțiilor impuse.1")
        exit()
    if m < 1 or m > 10000:
        print("Datele nu corespund restricțiilor impuse.1")
        exit()
    print("Datele sunt introduse corect.")
    return n, x, m, y


if __name__ == '__main__':
    n, x, m, y = citire_conform_restrictiilor()
    afis_el_din_vect_x_mai_mici_decat_toate_el_din_y(n, x, m, y)

Explicație rezolvare

  Acest program primește două liste de numere întregi x și y și determină toate elementele din lista x care sunt mai mici decât toate elementele din lista y. Pentru a face asta, programul găsește cel mai mic element din lista y, apoi compară fiecare element din lista x cu acest minim și afișează elementele care sunt mai mici. Dacă nu există astfel de elemente, programul afișează "NU EXISTA". 
Funcția citire_conform_restrictiilor() primește datele de intrare conform unor restricții impuse și verifică dacă acestea sunt respectate. Aceasta primește doi vectori x și y și lungimile lor corespunzătoare n și m. Se verifică dacă lungimile corespund cu valorile n și m date ca intrare. De asemenea, se verifică dacă elementele din ambele liste sunt în intervalul [-1000000000, 1000000000]. Dacă datele de intrare nu respectă restricțiile impuse, programul va afișa un mesaj corespunzător și se va opri.
Funcția afis_el_din_vect_x_mai_mici_decat_toate_el_din_y() primește cele două liste și apelează algoritmul descris mai sus pentru a găsi elementele din lista x mai mici decât toate elementele din lista y. Dacă nu există astfel de elemente, afișează mesajul "NU EXISTA".