0038 – Shift

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Sursa: Shift


Cerinţă

Se dă un șir cu n elemente întregi. Programul va permuta cu o poziție spre stânga elementele vectorului.

Date de intrare

Programul va citi de la tastatură o valoare n, urmată de n numere întregi reprezentând elementele șirului.

Date de ieșire

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

  • 1 <= n <= 100
  • valorile elementelor șirului vor fi < 1.000.000

Exemple

Exemplul 1

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

Intrare
Introduceti numarul de elemente: 1234
Ieșire
Datele introduse sunt incorecte!

Rezolvare

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)

Explicație rezolvare

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.