0038 – Shift
Sursa: Shift
Cerinţă[edit | edit source]
Se dă un șir cu n
elemente întregi. Programul va permuta cu o poziție spre stânga elementele vectorului.
Date de intrare[edit | edit source]
Programul va citi de la tastatură o valoare n
, urmată de n
numere întregi reprezentând elementele șirului.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa noul vector, obținut în urma permutării cu o poziție spre stânga a elementelor vectorului. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".
Restricţii şi precizări[edit | edit source]
- 1 <= n <= 100
- valorile elementelor șirului vor fi < 1.000.000
Exemple[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- Introduceti numarul de elemente: 6
- Introduceti 6 numere separate prin spatiu: 1 2 3 4 5 6
- Ieșire
- Datele introduse sunt corecte!
- Vectorul obtinut dupa permutare este: [2, 3, 4, 5, 6, 1]
Exemplul 2[edit | edit source]
- Intrare
- Introduceti numarul de elemente: 1234
- Ieșire
- Datele introduse sunt incorecte!
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def is_integer(value):
return value.isdigit()
def verificare_nr_elemente(n):
if is_integer(n): if 1 <= int(n) <= 1500: return n else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def verificare_pozitie_de_sters(p, n):
if is_integer(p): if 1 <= int(p) <= int(n): return p else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def verificare_vector(n, vector):
if len(vector) != int(n): print("Datele introduse sunt incorecte!") exit() else: for i in vector: if is_integer(i): if -1000000 <= int(i) <= 1000000: continue else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def eliminare_elem_p(vector, p):
print("Datele introduse sunt corecte!") vector.pop(int(p) - 1) print("Noul vector este:", vector)
if __name__ == '__main__':
n = input("Introduceti numarul de elemente: ") verificare_nr_elemente(n) p = input("Introduceti pozitia de sters: ") verificare_pozitie_de_sters(p, n) elem = input(f"Introduceti {n} elem separate prin spatiu:").split() verificare_vector(n, elem) eliminare_elem_p(elem, p)
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program primește un șir de n
numere întregi, verifică validitatea datelor introduse și apoi permută elementele vectorului o poziție spre stânga. Iată o explicație pas cu pas a programului:
- Verifică dacă
n
, numărul de elemente, este întreg și între 0 și 100. - Verifică dacă șirul de numere introdus are lungimea
n
și dacă toate elementele sunt numere întregi între 1 și 10000. - Definește funcția
permuta_stanga
care permută elementele vectorului o poziție spre stânga. Funcția stochează primul element al vectorului în variabilaprimul_element
, apoi mută toate celelalte elemente cu o poziție spre stânga. La final, adaugăprimul_element
la sfârșitul vectorului. - Apelă funcția
permuta_stanga
cu vectorul introdus de utilizator și afișează vectorul permutat.
Programul urmează acești pași pentru a se asigura că datele introduse sunt corecte și pentru a oferi vectorul permutat după aplicarea permutării spre stânga.