0618 - Inaltimi: Difference between revisions
Adina Timiș (talk | contribs) 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... |
Adina Timiș (talk | contribs) No edit summary |
||
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 | edit source]
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 | edit source]
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 | edit source]
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 | edit source]
- 1 ≤ n ≤ 1000
- înălțimile copiilor vor fi numere naturale distincte din intervalul [1, 10.000]
Exemplul 1[edit | edit source]
- 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 | edit source]
- Intrare
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0618 - Inaltimi
- 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
- 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>