Добавил:
Negorov1337@gmail.com inst:vech.no_17 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба яп 1 2020

.docx
Скачиваний:
12
Добавлен:
11.10.2020
Размер:
175.83 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

(ДГТУ)

Факультет: Информатика и вычислительная техника

Кафедра: Кибербезопасность информационных систем

ПРАКТИЧЕСКАЯ РАБОТА № 1

на тему: «Простые структуры данных»

Выполнил: обучающийся гр. ВКБ33

Егоров Никита Валентинович

Проверил:

Доцент, Савельев Василий Александрович

Ростов-на-Дону

2020

Практическая работа № 1. Простые структуры данных

Цель работы:

Изучить простые структуры данных: массив, список, двунаправленный список, стек, очередь, дек, динамический массив.

Ход работы:

Задание 1. (Гоблины и шаманы)

#include <iostream>

#include <vector>

using namespace std;

typedef unsigned ui;

int main() {

ios::sync_with_stdio(false);

cin.tie(0);

freopen("input.txt", "r", stdin);

freopen("output.txt", "w", stdout);

vector<ui> v;

vector<ui>::iterator it;

ui N, pos;

char op;

cin >> N;

while (N--) {

cin >> op;

if (op == '-')

{

pos = v[0];

v.erase(v.begin());

cout << pos << '\n';

}

else

{

cin >> pos;

if (op == '+')

v.push_back(pos);

else

{

it = v.begin() + (ui)(v.size() + 1) / 2;

v.insert(it, pos);

}

}

}

return 0;

}

Результат:

Задание 2. (Баржа)

from collections import deque

request = input().split()

docks = int(request[0])

cells = int(request[1])

max_len = int(request[2])

max_tanks = 0

current_tanks = 0

error = 0

cell = []

for i in range(cells):

cell.append(deque())

for i in range(docks):

action = input().split()

if (action[0] == "+"):

cell[int(action[1]) - 1].append(action[2])

current_tanks += 1

if (current_tanks > max_len):

error = 1

break

if(current_tanks > max_tanks):

max_tanks = current_tanks

else:

if(len(cell[int(action[1]) - 1]) > 0):

if (cell[int(action[1]) - 1].pop() != action[2]):

error = 1

break

else:

current_tanks -= 1

else:

error = 1

break

if (current_tanks > 0 or error):

print("Error")

else:

print(max_tanks)

Результат:

Задание 3. (Реклама)

N, K = map(int, input().split())

times = list(map(int, input().split()))

flag = True

max_ind = times.index(max(times))

max_1 = times[max_ind]

max_indecs = []

for i in range(max_ind, N):

if(times[i] == max_1):

max_indecs.append(i)

for i in max_indecs:

if (flag):

for j in max_indecs:

if (i == j):

continue

elif (abs(j - i) > K - 1):

print(max_1 * 2)

flag = False

break

------------------------------------------------------------------------

if (flag):

max_2 = 0

max_ind_2 = 0

for ind in max_indecs:

for i in range(len(times)):

if (i == ind):

continue

elif ((times[i] > max_2) and (abs(ind - i) > K - 1)):

max_2 = times[i]

max_ind_2 = i

if(max_2 != 0):

print(max_1 + max_2)

flag = False

--------------------------------------------------------------------------

if (flag):

max_sum = 0

for i in range(N - K):

edge = i + K

if(edge != N):

j = max(times[edge : N])

s = times[i] + j

if (s > max_sum):

max_sum = s

print(max_sum)

Результат:

Задание 4. (Заполнение диагоналями)

x, y = map(int, input().split())

matrix = [[0]*y for i in range(x)]

i = 0

j = 0

for number in range(x*y):

matrix[i][j] = number

if j == 0 or i == x - 1:

if j == 0:

if i + j + 1 < y:

j = i + j + 1

i = 0

else:

i = i - y + 2

j = y - 1

else:

if i == x - 1:

if y - j - x - 1 >= 0:

j = i + j + 1

i = 0

else:

i = j + x - y + 1

j = y - 1

else:

i += 1

j -= 1

for i in range(x):

for j in range(y):

print('%3d' % matrix[i][j], end = '')

print('\t')

Результат:

Задание 5. (Правильная скобочная последовательность)

sequence = list(input())

stack = []

for i in range(len(sequence)):

if sequence[i] == '(' or sequence[i] == '{' or sequence[i] == '[':

stack.append(sequence[i])

continue

if (sequence[i] == ')' or sequence[i] == '}' or sequence[i] == ']') and stack:

if (stack[-1] + sequence[i] == '()') or (stack[-1] + sequence[i] == '{}') or (stack[-1]+sequence[i] == '[]'):

stack.pop()

else:

print('no')

exit()

else:

print('no')

exit()

if stack == []:

print('yes')

else:

print('no')

Результат:

Задание 6. (Сортировка вагонов)

l = int(input())

s = list(map(int, input().split()))

tup = [0]

tr2 = [0]

for i in range(l):

while tup[-1] == tr2[-1] + 1:

tr2.append(tup[-1])

tup.pop()

if s[i] == tr2[-1] + 1:

tr2.append(s[i])

else:

tup.append(s[i])

while tup[-1] == tr2[-1] + 1:

tr2.append(tup[-1])

tup.pop()

if tr2[-1] == l:

print('YES')

else:

print('NO')

Результат:

Задание 7. (Парикмахерская)

number = int(input())

workers_time = [0, 0, 0]

for i in range(number):

request = input().split()

minutes = int(request[0])*60 + int(request[1])

m = workers_time.index(min(workers_time))

if (workers_time[m] <= minutes):

workers_time[m] = minutes + 30

else:

workers_time[m] += 30

print(str(workers_time[m] // 60) + " " + str(workers_time[m] % 60))

Результат:

Задание 8. (Шифровка)

string = input()

string_list = list(string)

n = len(string) // 2

for i in range(n):

string_list[2 * i : 2 * i + 2] = string[i + n], string[i]

print(''.join(string_list))

Результат:

Задание 9. (Списки по классам)

file = open('input.txt','r', encoding = 'KOI8-r')

class_9 = []

class_10 = []

class_11 = []

for line in file:

line = line.replace("\n", "").split(" ")

if (line[0] == "9"):

class_9.append("9 " + line[1])

elif (line[0] == "10"):

class_10.append("10 " + line[1])

else:

class_11.append("11 " + line[1])

file.close()

f = open('output.txt', 'w', encoding = 'KOI8-r')

for i in class_9:

f.write(i + '\n')

for i in class_10:

f.write(i + '\n')

for i in class_11:

f.write(i + '\n')

f.close()

Результат:

Задание 10. (Игра в пьяницу)

first = input().split()

second = input().split()

n = 0

while first and second:

n += 1

a, b = first.pop(0), second.pop(0)

if a > b and (b, a) != ('0', '9') or (a, b) == ('0', '9'):

first += [a, b]

else:

second += [a, b]

if n == 1000000:

print('botva')

break

else:

print('first' if first else 'second', n)

Результат:

Соседние файлы в предмете Языки программирования