Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы Султонов Фирдавс.docx
Скачиваний:
6
Добавлен:
08.11.2023
Размер:
2.08 Mб
Скачать
  1. Выполнение проекта и получение результатов:

На рисунке 6 показаны результаты работы программы;

Рисунок 6 - Результат работы программы

Лабораторная работа №13 «Работа со вложенными последовательностями»

  1. Задание на разработку проекта

Дана динамическая вложенная последовательность. Элементы списка

могут принимать целые значения от 0 до 1000 включительно. Опишите

алгоритм, который выполняет нахождение среднего арифметического

всех четных элементов. Разработайте функцию, который формирует новый список, из тех элементов исходной последовательности, значения которых больше найденного числа. Полученные результаты записать в текстовый файл с помощью функции. Так же вывести элементы вложенной последовательности.

Для выполнения задания следовало разработать:

  • Функцию vlozh_spiski(*arg) для формирования вложенной последовательности, которая в качестве аргумента принимает размерность последовательности.

  • В функции vlozh_spiski(*arg) организовать вывод вложенной последовательности.

  • Функцию prnt(*arg) для вывода элементов вложенной последовательности.

  • Функцию median(*arg) для нахождения среднего арифметического чисел вложенной последовательности.

  • В функции median(*arg) организовать вывод среднего арифметического чисел.

  • Функцию drugoy_spisok(*arg) для формирования нового списка из тех элементов вложенной последовательности значения, которых больше среднего арифметического чисел.

  • В функции drugoy_spisok(*arg) организовать вывод нового сформированного списка.

  • Функцию txt(*arg) для записи полученных результатов в текстовый файл.

В основной части программы организовать ввод размерности последовательности и вызов соответствующих подпрограмм.

Формализация задания:

Для того, чтобы вывести элементы вложенной последовательности надо пройтись по элементам вложенных списков, через вложенные циклы. После во вложенном цикле написать этот код «print(" %3d"% a[i][j], end = ' ')», который будет выводить элементы последовательности. Далее во внешнем цикле написать вот этот код «print()», который будет делать отступы после окончания каждой итерации вложенного цикла. Тем самым элементы вложенной последовательности будут выведены в матричном виде.

  1. Разработка алгоритма

На рис. 1 показана блок-схема функции vlozh_spiski(*arg), которая формирует вложенную последовательность.

Рис. 35 - Блок-схема функции vlozh_spiski(), которая формирует вложенную последовательность

На рис. 2 показана блок-схема функции prnt(*arg), которая выводит элементы вложенной последовательности в матричном виде.

Рис. 36 - Блок-схема функции prnt(), которая выводит элементы вложенной последовательности

На рис. 3 показана блок-схема функции median(*arg), которая находит среднее арифметическое элементов вложенной последовательности.

Рис. 37 - Блок-схема функции median(), которая выводит среднее арифметическое элементов вложенной последовательности

На рис. 3 показана блок-схема функции drugoy_spisok(*arg), которая создает новый список из тех элементов вложенной последовательности, значения которых больше среднего арифметического этих элементов.

Рис. 38 - Блок-схема функции drugoy_spisok(), которая создает новый список, согласно заданному условию

На рис.5 показана блок-схема функции txt(*arg), которая записывает полученные результаты в текстовый файл.

Рис. 39 - Блок-схема функции txt(), которая записывает полученные результаты в текстовый файл

Рис. 40 - Блок-схема основной части программы

На рис. 6 показана блок-схема основной части программы.

Ниже представлен код программы

Код программы:

import random

n = int(input('Введите количество строк: '))

m = int(input('Введите количество столбцов: '))

#Функция реализующая создание вложенной последовательности

def vlozh_spiski(*arg):

a = []

for i in range(n):

a.append([])

for j in range(m):

a[i] = random.sample(range(1000), m)

return a

#Функция реализующая вывод элементов вложенной последовательности

def prnt(*arg):

for i in range(n):

for j in range(m):

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

print()

#Функция которая находит среднее арифметическое чисел вложенной последовательности

def median(*avr):

sum = 0

chet = 0

for i in range(n):

for j in range(m):

if a[i][j] % 2 == 0:

chet += 1

sum += a[i][j]

avr = sum // chet

return avr

#Функция реализующая создание нового списка из элементов вложенной

#последовательности, которые больше среднего арифметического этих чисел

def drugoy_spisok(*arg):

new = []

for i in range(n):

for j in range(m):

if a[i][j] > median:

new.append(a[i][j])

return new

#Функция реализующая запись полученных результатов в текстовый файл

def txt(*arg):

txt = open('C:/Users/User/Desktop/rezults.txt', 'w+', encoding = 'utf-8')

txt.write('Исходная вложенная последовательность')

txt.write('\n')

for i in range(n):

txt.write(str(a[i]))

txt.write('\n')

txt.write('\n Среднее арифметическое чисел равна:')

txt.write('\n')

txt.write(str(median))

txt.write('\n')

txt.write('Другой сформированный список: ')

txt.write('\n')

txt.write(str(new))

txt.write('\n')

txt.close()

a = vlozh_spiski(n, m)

print('Элементы вложенной последовательности: ')

prnt(a, m, n)

median = median(a, n, m)

print('Среднее арифметическое чисел равна: ', median)

new = drugoy_spisok(n, m, a)

print('Другой сформированный список: ', new)

txt(median, a, n)