Главная страница

Алгоритмы типовых задач. алгоритмитизация и программирование. Решение 3 3 Результаты 6 Список использованной литературы 7


Скачать 100.69 Kb.
НазваниеРешение 3 3 Результаты 6 Список использованной литературы 7
АнкорАлгоритмы типовых задач
Дата09.02.2023
Размер100.69 Kb.
Формат файлаdocx
Имя файлаалгоритмитизация и программирование.docx
ТипРешение
#928556

Содержание



1 Задание 2

2 Решение 3

3 Результаты 6

Список использованной литературы 7


1 Задание


ФИО и ID подготавливаются заранее в текстовом файле с именем source_data.txt в кодировке Unicode (Юникод). Каждое слово, составляющее ФИО с заглавной буквы. Слова между собой должны разделены пробелом. Точка в конце не ставится.
Требуется написать программу на языке Python, которая выполняет следующие задачи:

1. Считать исходные данные из текстового файла source_data.txt

2. Вычислить целое значение, получившееся в результате деления ID на количество символов, составляющих ФИО (количество символов подсчитывается без учета пробелов).

3. Определить направление сортировки в зависимости от числа, полученного в п.2:

- сортировка по возрастанию, если число чётное;

- сортировка по убыванию, если число нечётное.

4. Сформировать набор данных (список) из кодов Юникода каждого символа ФИО (исключая пробелы между словами), переведенных в десятичную форму.

5. Выполнить сортировку набора данных по убыванию или по возрастанию. Сортировку выполнить двумя различными способами, например: сортировка выбором и сортировка методом простого обмена (пузырька). В программном коде должны быть представлены комментарии, обозначающие тот или иной алгоритм сортировки.

6. Вычислить среднее арифметическое значение набора данных. При необходимости, результат округлить до третьего знака после запятой.

7. Вычислить среднее квадратическое значение набора данных. При необходимости, результат округлить до третьего знака после запятой.

2 Решение


Напишем программу на языке Python.

Используем среду разработки PyCharm Edu для решения задачи:

'''
1. Чтение данных из файла source_data.txt
'''
f1=open('source_data.txt','rt',encoding="utf8") #открытие файла для чтения
FIO=f1.readline().replace("\n","") #чтение ФИО
ID=f1.readline() #чтение ID
f1.close() #закрыть файл
'''
2. Вычисление целого значения, получившегося
в результате деления ID на количество символов, составляющих ФИО (без пробелов)
'''
FIO_len=len(FIO.replace(" ","")) #длина ФИО
number=int(int(ID)/FIO_len) #искомое значение
'''
3. Определение направления сортировки в зависимости от полученного значения
'''
if number%2==0: #вычисленное значение четное, если оно делится без остатка на 2
chet="чётное"
cur="по возрастанию"
else: #вычисленное значение нечетное, если оно не делится без остатка на 2
chet="нечётное"
cur="по убыванию"
'''
4. Сформировать набор данных (список) из кодов Юникода
каждого символа ФИО (исключая пробелы между словами), переведенных в десятичную форму
'''
a=list(FIO.replace(" ","")) #преобразование ФИО в массив из букв
i=0 #создадим счетчик
b=[] #создадим пустой массив в который будем добавлять коды букв
while ib.append(ord(a[i])) #добавление кодов букв
i=i+1; #увеличить счетчик на 1
'''
5. Выполнить сортировку набора данных двумя разными способами
Алгоритм сортировки по методу пузырька -
хорошо подходит для сортировки небольших объемов данных
'''
def bubble_sort(values): #создание функции пузырьковой сортировки
#повторяем до тех пор, пока массив не отсортирован
is_sorted=False
while not is_sorted:
#на каждой итерации считаем,
#что массив отсортирован
is_sorted=True
n=1
#перебираем массив
for i in range(len(values)-n):
#сравниваем два элемента:
#текущий и следующий
if values[i]>values[i+1]:
#если текущий больше следующего,
#то меняем их местами
values[i],values[i+1]=\
values[i+1],values[i]
#отмечаем, что массив не отсортирован
is_sorted=False
n+=1
return values #функция возвращает отсортированный массив
'''
Алгоритм сортировки вставками -
хорошо подходит для сортировки небольших объемов данных
'''
def insertionsort(values): #создание функции сортировки вставками
#перебираем все элементы массива начиная со второго
i=1
while ij=i-1
#Проходим по отсортированной
#части в обратную сторону
#до тех пор пока значение
#текущего элемента values[j+1]
#меньше значения предыдущего values[j]
while values[j+1]=0:
values[j+1],values[j]=\
values[j],values[j+1]
j-=1
i+=1
return values #функция возвращает отсортированный массив
'''
6. Вычислить среднее арифметическое значение набора данных
'''
def sra (values): #создание функции вычисления среднего арифметического
i=0
x=0
while ix+=values[i] #находим сумму элементов
i=i+1
return x/FIO_len #делим на количество
'''
7. Вычислить среднее квадратическое значение набора данных.
'''
def srq (values): #создание функции вычисления среднего квадратического
i=0
x=0
while ix+=values[i]**2 #находим сумму квадратов
i=i+1
return (x/FIO_len)**0.5 #делим на количество и извлекаем корень
'''
8. Запись результатов вычислений в строковую переменную
'''
x="1. Исходные данные: "+FIO+"; ID: "+ID+"\n"
x+="2. "+str(number)+"\n"
x+="3. Направление сортировки: "+str(cur)+", так как число "+str(number)+" – "+str(chet)+"\n"
x+="4. Набор данных: "+ str(b)+"\n"
x+="5. Отсортированный "+str(cur)+" набор данных "+str(bubble_sort(b))+"\n"
x+="7. Среднее арифметическое значение: "+str(round(sra(b),3))+"\n"
x+="8. Среднее квадратическое значение: "+str(round(srq(b),3))
'''
9. Записываем значения в файл result.txt
'''
f2=open('result.txt','wt',encoding="utf8") #открытие файла для записи
f2.write(x) #запись результатов вычислений в файл
f2.close() #закрыть файл
Блок-схема работы программы приведена на рисунке 2.



Рисунок 2 – Блок-схема работы программы.

3 Результаты


После выполнения программы в корневой папке программы появляется файл с результатами расчетов result.txt.

Список использованной литературы


  1. Бизли, Дэвид М. Язык программирования Python. Справочник. — К.: ДиаСофт, 2000. — 336 с.

2. Бэрри, Пол Изучаем программирование на Python / Пол Бэрри. - М.: Эксмо, 2016. — 332 c.

3. Васильев, А. Н. Python на примерах. Практический курс по программированию / А.Н. Васильев. - М.: Наука и техника, 2016. — 432 c.

4. Гуриков, С.Р. Основы алгоритмизации и программирования на Python / С.Р. Гуриков. - М.: Форум, 2018. — 991 c.

5. Златопольский Д.М. Основы программирования на языке Python. – М.: ДМК Пресс, 2017. – 284 с.

  1. Лутц М. Изучаем Python4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 1280 с.

  2. Лучано Рамальо Python. К вершинам мастерства. – М.: ДМК Пресс, 2016. – 768 с.

8. МакГрат, М. Программирование на Python для начинающих / М. МакГрат. - М.: Эксмо, 2015. — 192 c.

  1. Свейгарт, Эл. Автоматизация рутиных задач с помощью Python: практическое руководство для начинающих. Пер. с англ. — М.: Вильямc, 2016. – 592 с.

  2. Сузи Р. А. Язык программирования Python: Учебное пособие. — М.: ИНТУИТ, БИНОМ. Лаборатория знаний, 2006. — 328 с.


написать администратору сайта