0038 – Shift

From Bitnami MediaWiki
Revision as of 15:53, 15 April 2023 by Miriam (talk | contribs) (tot)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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:

  1. Verifică dacă n, numărul de elemente, este întreg și între 0 și 100.
  2. Verifică dacă șirul de numere introdus are lungimea n și dacă toate elementele sunt numere întregi între 1 și 10000.
  3. Definește funcția permuta_stanga care permută elementele vectorului o poziție spre stânga. Funcția stochează primul element al vectorului în variabila primul_element, apoi mută toate celelalte elemente cu o poziție spre stânga. La final, adaugă primul_element la sfârșitul vectorului.
  4. 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.