1005 - Numere8

De la Universitas MediaWiki

Sursă: 1005 - Numere8


Cerinţă

Se dă o listă cu numere naturale. Să se determine numerele naturale nenule cu cel mult patru cifre care nu apar în lista dată.

Date de intrare

Programul va citi de la tastatură numere întregi reprezentând elementele șirului, cu cel mult patru cifre, separate prin spații.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se vor afișa în ordine descrescătoare, numerele nenule cu cel mult patru cifre care nu se află în listă, separate prin exact un spațiu. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".

Restricţii şi precizări

  • valorile elementelor șirului vor fi < 1.000.000

Exemple

Exemplul 1

Intrare
Introduceti numere de maxim 4 cire separate prin spatiu:9999 9998 9997
Ieșire
Datele introduse sunt corecte!
Numerele cu cel mult 4 cifre, în ordine descrescătoare, cu excepția celor prezente în listă:
[9996, 9995, 9994, 9993, 9992, 9991, ... , 184, 183, 182, 181, ..., 2, 1, 0]

Exemplul 2

Intrare
Introduceti numere de maxim 4 cire separate prin spatiu:1234 12345 23
Ieșire
Datele introduse sunt incorecte!

Rezolvare

def is_integer(value):
    return value.isdigit()


def verificare_vector(vector):
    for i in vector:
        if is_integer(i):
            if int(i) <= 10000:
                continue
            else:
                print("Datele introduse sunt incorecte!")
                exit()
        else:
            print("Datele introduse sunt incorecte!")
            exit()


def afisare_numere(lst):
    numere = [int(i) for i in range(10000)]
    for elem in lst:
        if elem in numere:
            numere.remove(elem)

    numere.sort(reverse=True)
    lista_numere = []
    print("Numerele cu cel mult 4 cifre, în ordine descrescătoare, cu excepția celor prezente în listă:")
    for numar in numere:
        lista_numere.append(numar)
    print(lista_numere)


if __name__ == '__main__':
    elem = input("Introduceti numere de maxim 4 cire separate prin spatiu:").split()
    verificare_vector(elem)
    print("Datele introduse sunt corecte!")
    lst_int = list(map(int, elem))
    afisare_numere(lst_int)

Explicație rezolvare

Acest program primește o listă de numere întregi de maxim 4 cifre de la utilizator și afișează toate numerele întregi de maxim 4 cifre, în ordine descrescătoare, care nu sunt prezente în lista dată. Explicația programului este următoarea:

  • Funcția is_integer() primește un șir de caractere și returnează True dacă toate caracterele din șir sunt cifre, altfel returnează False.
  • Funcția verificare_vector() primește o listă de numere sub formă de string-uri și verifică dacă toate elementele listei sunt numere întregi cu maxim 4 cifre. Dacă toate elementele sunt valide, funcția se termină normal; în caz contrar, afișează un mesaj de eroare și oprește programul prin apelul funcției exit().
  • Funcția afisare_numere() primește o listă de numere întregi și creează o listă cu toate numerele întregi de maxim 4 cifre utilizând expresia range(10000). Apoi, funcția elimină numerele prezente în lista dată și sortează lista rezultată în ordine descrescătoare. Lista sortată este afișată folosind o buclă for.