0618 - Inaltimi: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerința== Se dau înălțimile a n copii, numerotați de la 1 la n, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor. ==Date de intrare== Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații, reprezentând, în ordine, înălțimile copiilor. ==Date de ieșire== Programul va afișa pe ecran n numere naturale distincte cuprinse între 1 și n, separate prin exa...
Tag: visualeditor
 
No edit summary
Tag: visualeditor
 
Line 22: Line 22:
:Datele de intrare nu corespund restricțiilor impuse.
:Datele de intrare nu corespund restricțiilor impuse.
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="">
<syntaxhighlight lang="python" line="1">
#0618 - Inaltimi
#0618 - Inaltimi
# definim o functie pentru citirea inaltimilor, aceasta va returna o lista de numere intregi
def citeste_inaltimi(n):
def citeste_inaltimi(n):
     inaltimi = list(map(int, input().split()))
     inaltimi = list(map(int, input().split()))
     return inaltimi
     return inaltimi
 
# definim o functie pentru ordonarea crescatoare a inaltimilor si afisarea numerelor corespunzatoare
def ordonare_crescatoare_si_afisare(n, inaltimi):
def ordonare_crescatoare_si_afisare(n, inaltimi):
     numere_ordine = list(range(1, n+1))
     numere_ordine = list(range(1, n+1)) # definim o lista de numere de la 1 la n
     for i in range(n):
     for i in range(n):
         for j in range(i+1, n):
         for j in range(i+1, n):
             if inaltimi[j] < inaltimi[i]:
             if inaltimi[j] < inaltimi[i]: # comparam inaltimile iar daca sunt in ordine gresita, le
                                          # interschimbam
                 inaltimi[i], inaltimi[j] = inaltimi[j], inaltimi[i]
                 inaltimi[i], inaltimi[j] = inaltimi[j], inaltimi[i]
                 numere_ordine[i], numere_ordine[j] = numere_ordine[j], numere_ordine[i]
                 numere_ordine[i], numere_ordine[j] = numere_ordine[j], numere_ordine[i]
     print(*numere_ordine)
     print(*numere_ordine) # afisam numerele, ordonate crescator


if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input())
     n = int(input()) # citim numarul de inaltimi
     inaltimi = citeste_inaltimi(n)
     inaltimi = citeste_inaltimi(n) # apelam functia de citire a inaltimilor
     if n < 1 or n > 1000 or (min(inaltimi) < 1 or max(inaltimi) > 10000):
     if n < 1 or n > 1000 or (min(inaltimi) < 1 or max(inaltimi) > 10000): # verificarea
                                                                          # restrictiilor
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
     else:
     else:
         print("Datele de intrare corespund restricțiilor impuse.")
         print("Datele de intrare corespund restricțiilor impuse.")
     ordonare_crescatoare_si_afisare(n, inaltimi)
     ordonare_crescatoare_si_afisare(n, inaltimi) # apelam functia de ordonare si afisare a
                                                # numerelor


 
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 22:34, 28 April 2023

Cerința[edit]

Se dau înălțimile a n copii, numerotați de la 1 la n, exprimate prin numere naturale. Afișați numerele de ordine ale copiilor în ordinea crescătoare a înălțimii lor.

Date de intrare[edit]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații, reprezentând, în ordine, înălțimile copiilor.

Date de ieșire[edit]

Programul va afișa pe ecran n numere naturale distincte cuprinse între 1 și n, separate prin exact un spațiu, reprezentând numerele de ordine ale copiilor în ordinea crescătoare a înălțimii.

Restricții și precizări[edit]

  • 1 ≤ n ≤ 1000
  • înălțimile copiilor vor fi numere naturale distincte din intervalul [1, 10.000]

Exemplul 1[edit]

Intrare
7
8 20 16 14 10 4 12
Ieșire
Datele de intrare corespund restricțiilor impuse.
6 1 5 7 4 3 2

Exemplul 2[edit]

Intrare
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit]

<syntaxhighlight lang="python" line="1">

  1. 0618 - Inaltimi
  2. definim o functie pentru citirea inaltimilor, aceasta va returna o lista de numere intregi

def citeste_inaltimi(n):

   inaltimi = list(map(int, input().split()))
   return inaltimi
  1. definim o functie pentru ordonarea crescatoare a inaltimilor si afisarea numerelor corespunzatoare

def ordonare_crescatoare_si_afisare(n, inaltimi):

   numere_ordine = list(range(1, n+1)) # definim o lista de numere de la 1 la n
   for i in range(n):
       for j in range(i+1, n):
           if inaltimi[j] < inaltimi[i]: # comparam inaltimile iar daca sunt in ordine gresita, le 
                                         # interschimbam
               inaltimi[i], inaltimi[j] = inaltimi[j], inaltimi[i]
               numere_ordine[i], numere_ordine[j] = numere_ordine[j], numere_ordine[i]
   print(*numere_ordine) # afisam numerele, ordonate crescator

if __name__ == '__main__':

   n = int(input()) # citim numarul de inaltimi
   inaltimi = citeste_inaltimi(n)  # apelam functia de citire a inaltimilor
   if n < 1 or n > 1000 or (min(inaltimi) < 1 or max(inaltimi) > 10000): # verificarea 
                                                                         # restrictiilor
       print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare corespund restricțiilor impuse.")
   ordonare_crescatoare_si_afisare(n, inaltimi) # apelam functia de ordonare si afisare a 
                                                # numerelor

</syntaxhighlight>