0274 - 3 Minime: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/274/3minime] == Cerință == Se dau '''n''' numere naturale. Determinaţi cele mai mici trei numere dintre cele date. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. == Date de ieșire == Programul afișează pe ecran, în ordine descrescătoare, cele mai mici trei numere date. == Restricții și precizări == * '''3 ≤ n ≤ 100''' * cele '''n''' numere citite vor avea cel...
 
No edit summary
 
Line 5: Line 5:
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale.
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale.
== Date de ieșire ==
== Date de ieșire ==
Programul afișează pe ecran, în ordine descrescătoare, cele mai mici trei numere date.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.".Programul afișează pe ecran, în ordine descrescătoare, cele mai mici trei numere date.În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
== Restricții și precizări ==
== Restricții și precizări ==
* '''3 ≤ n ≤ 100'''
* '''3 ≤ n ≤ 100'''
* cele '''n''' numere citite vor avea cel mult '''4''' cifre
* cele '''n''' numere citite vor avea cel mult '''4''' cifre
== Exemplu ==
== Exemple ==
=== Exemplu 1 ===
; Intrare
; Intrare
: 5
: 5
Line 15: Line 16:
; Ieșire
; Ieșire
: 310 162 48
: 310 162 48
=== Exemplu 2 ===
; Intrare
: 2
: 10 4 30 510 16
; Ieșire
: Datele nu sunt comform restricțiilor impuse
=== Exemplu 3 ===
; Intrare
: 1
: 1017 48 310 5710 162
; Ieșire
: Datele nu sunt comform restricțiilor impuse
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def sortare(n, v):
def citeste_n():
    while True:
        try:
            n = int(input("Introduceti numarul de valori: "))
            if n >= 3 and n <= 100:
                print("Datele sunt corecte.")
                return n
            else:
                print("Datele nu sunt conform restricțiilor impuse.")
        except ValueError:
            print("Trebuie introduse doar numere intregi.")
 
 
def nrcifre(nr):
    nrcif = 0
    while nr != 0:
        nrcif += 1
        nr //= 10
    return nrcif
 
 
def citeste_valori(n):
    valori = []
     for i in range(n):
     for i in range(n):
         for j in range(i, n):
         valoare = input("Introduceti o valoare: ")
             if v[i] > v[j]:
        while True:
                 aux = v[i]
             try:
                 v[i] = v[j]
                 cifre = nrcifre(int(valoare))
                 v[j] = aux
                 if cifre <= 4:
                    print("Datele sunt corecte.")
                    valori.append(int(valoare))
                    break
                 else:
                    print("Datele nu sunt conform restricțiilor impuse.")
                    exit()
            except ValueError:
                print("Trebuie introduse doar valori cu mai putin de 9 cifre.")
                exit()
    return valori


n = int(input("Introduceți numărul de valori: "))
v = list(map(int, input("Introduceți n valori: ").split()))
sortare(n, v)
print("Valorile cele mai mici sunt:", v[0], v[1], v[2])


def numere_minime(valori):
    valori.sort()
    return valori[0], valori[1], valori[2]
if __name__ == '__main__':
    n = citeste_n()
    valori = citeste_valori(n)
    mini1, mini2, mini3 = numere_minime(valori)
    print("Cele mai mari numere sunt:",mini3,mini2,mini1)
</syntaxhighlight>
</syntaxhighlight>
== Explicații ==
Acest cod definește patru funcții în Python care au ca scop citirea unui număr de valori și găsirea celor mai mici trei numere dintre acestea.
Funcția citeste_n() citește numărul de valori n și verifică dacă acesta se află în intervalul specificat (de la 3 la 100). Dacă numărul introdus nu respectă aceste restricții, se afișează un mesaj de eroare și se cere reîncercarea introducerii valorii.
Funcția nrcifre(nr) primește un număr nr și returnează numărul de cifre ale sale.
Funcția citeste_valori(n) citește n valori și le verifică dacă au maxim 4 cifre. Dacă valorile nu respectă această condiție, se afișează un mesaj de eroare și se cere reîncercarea introducerii valorii.
Funcția numere_minime(valori) primește o listă valori de numere și returnează cele mai mici trei numere dintre acestea.
În funcția _main_(), se apelează cele patru funcții și se afișează cele mai mici trei numere între valorile introduse.

Latest revision as of 14:15, 30 March 2023

Sursă: [1]

Cerință[edit | edit source]

Se dau n numere naturale. Determinaţi cele mai mici trei numere dintre cele date.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.".Programul afișează pe ecran, în ordine descrescătoare, cele mai mici trei numere date.În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări[edit | edit source]

  • 3 ≤ n ≤ 100
  • cele n numere citite vor avea cel mult 4 cifre

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

Intrare
5
1017 48 310 5710 162
Ieșire
310 162 48

Exemplu 2[edit | edit source]

Intrare
2
10 4 30 510 16
Ieșire
Datele nu sunt comform restricțiilor impuse

Exemplu 3[edit | edit source]

Intrare
1
1017 48 310 5710 162
Ieșire
Datele nu sunt comform restricțiilor impuse

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def citeste_n():

   while True:
       try:
           n = int(input("Introduceti numarul de valori: "))
           if n >= 3 and n <= 100:
               print("Datele sunt corecte.")
               return n
           else:
               print("Datele nu sunt conform restricțiilor impuse.")
       except ValueError:
           print("Trebuie introduse doar numere intregi.")


def nrcifre(nr):

   nrcif = 0
   while nr != 0:
       nrcif += 1
       nr //= 10
   return nrcif


def citeste_valori(n):

   valori = []
   for i in range(n):
       valoare = input("Introduceti o valoare: ")
       while True:
           try:
               cifre = nrcifre(int(valoare))
               if cifre <= 4:
                   print("Datele sunt corecte.")
                   valori.append(int(valoare))
                   break
               else:
                   print("Datele nu sunt conform restricțiilor impuse.")
                   exit()
           except ValueError:
               print("Trebuie introduse doar valori cu mai putin de 9 cifre.")
               exit()
   return valori


def numere_minime(valori):

   valori.sort()
   return valori[0], valori[1], valori[2]


if __name__ == '__main__':

   n = citeste_n()
   valori = citeste_valori(n)
   mini1, mini2, mini3 = numere_minime(valori)
   print("Cele mai mari numere sunt:",mini3,mini2,mini1)

</syntaxhighlight>

Explicații[edit | edit source]

Acest cod definește patru funcții în Python care au ca scop citirea unui număr de valori și găsirea celor mai mici trei numere dintre acestea.
Funcția citeste_n() citește numărul de valori n și verifică dacă acesta se află în intervalul specificat (de la 3 la 100). Dacă numărul introdus nu respectă aceste restricții, se afișează un mesaj de eroare și se cere reîncercarea introducerii valorii.
Funcția nrcifre(nr) primește un număr nr și returnează numărul de cifre ale sale.
Funcția citeste_valori(n) citește n valori și le verifică dacă au maxim 4 cifre. Dacă valorile nu respectă această condiție, se afișează un mesaj de eroare și se cere reîncercarea introducerii valorii.
Funcția numere_minime(valori) primește o listă valori de numere și returnează cele mai mici trei numere dintre acestea.
În funcția _main_(), se apelează cele patru funcții și se afișează cele mai mici trei numere între valorile introduse.