0038 – Shift

De la Universitas MediaWiki

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.