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

практика. Советберген Ерулан АЖ29-1 практика. Программирование линейных алгоритмов Арифметические выражения


Скачать 124.49 Kb.
НазваниеПрограммирование линейных алгоритмов Арифметические выражения
Анкорпрактика
Дата04.05.2021
Размер124.49 Kb.
Формат файлаdocx
Имя файлаСоветберген Ерулан АЖ29-1 практика.docx
ТипДокументы
#201604



Л.Н. Гумилёв атындағы Еуразия ұлттық университеті | [Адрес организации]

15 Нұсқа

АЖ – 29 /1

Советберген Ерулан

1

  1. Программирование линейных алгоритмов

    1. Арифметические выражения


  1. Средний уровень

Задание: записать арифметическое выражение на алгоритмическом языке и указать порядок выполнения операций.



import math

y = int(input("y:"))
j = int(input("j:"))


F = 2 * math.sin(0.354 * y + 1) / math.log(y + 2 * j)
print("F:", F)



  1. Высокий уровень

Задание: записать арифметическое выражение на алгоритмическом языке и указать порядок выполнения операций.



m = int(input("m:"))
y = int(input("y:"))
N = (pow(m, 2) + 2.8 * m + 0.355) / (math.cos(2 * y) + 3.6)
print("N:", N)


  1. Программирование разветвляющихся алгоритмов

    1. Условные операторы


  1. Средний уровень

import math

esp = 0.001
x = int(input("Введите координаты точки В. x :"))
y = int(input("Введите координаты точки В. y :"))
f = 6 * pow(x, 7) - 4.5 * pow(x, 5) + 4 * pow(x, 2)
if math.fabs(f - y) < esp:
print("Лежит")
else:
print("Не лежит")



Задача: Ввести с клавиатуры координаты точки B (x, y). Определить лежит ли данная точка на кривой f(x)=6x7-4.5x5+4x2. Погрешность составляет eps=10-3 (т.е. |f(x)-y|

  1. Высокий уровень

Задача: Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Определить координаты четвертой вершины.

x1, y1 = map(int, input("Бірінші төбенің координаталарын еңгізіңіз:").split())
x2, y2 = map(int, input("Екінші төбенің координаталарын еңгізіңіз:").split())
x3, y3 = map(int, input("Үшінші төбенің координаталарын еңгізіңіз:").split())
if x1 == x2:
x4 = x3
if x1 == x3:
x4 = x2
if x2 == x3:
x4 = x1
if y1 == y2:
y4 = y3
if y1 == y3:
y4 = y2
if y2 == y3:
y4 = y1
print("Төртінші төбенің координаталары :", x4, y4)


    1. . Оператор выбора вариантов


  1. Средний уровень

Задание: написать блок схему и программу вычисления функции y(x) для всех различных вариантов входных параметров. Ввести с клавиатуры x, вывести значение функции для всех вариантов.

1. a=3.5; b=-0.73; c=2.5
2. a=15.4; b=-5.6; c=3.5
3. a=5.1; b=4; c=2.7



import math

i = int(input("""1. a=3.5; b=-0.73; c=2.5
2. a=15.4; b=-5.6; c=3.5
3. a=5.1; b=4; c=2.7
"""
))
x = int(input("x:"))


def f1(a, x, b, c):
y = math.sqrt(math.fabs(a * x - pow(math.cos(pow(b, 3) * x), 2) + 5.1 * pow(c, 2)))
return y


def f2(x, b):
y = math.exp(0.04 * x) + math.log(math.fabs(pow(b, 5) * math.cos(x)))
return y


def f3(b, x, a):
y = pow(math.cos(pow(b, 3) * pow(x, 2)), 2) + math.log(math.fabs(b * x - pow(a, 2)))
return y


if i == 1:
a = 3.5
b = -0.73
c = 2.5
if math.fabs(1 - pow(x, 2)) == a + c:
y = f1(a, x, b, c)
if math.fabs(1 - pow(x, 2)) > a + c:
y = f2(a, x)
if math.fabs(1 - pow(x, 2)) < a + c:
y = f3(b, x, a)
if i == 2:
a = 15.4
b = -5.6
c = 3.5
if math.fabs(1 - pow(x, 2)) == a + c:
y = f1(a, x, b, c)
if math.fabs(1 - pow(x, 2)) > a + c:
y = f2(a, x)
if math.fabs(1 - pow(x, 2)) < a + c:
y = f3(b, x, a)
if i == 3:
a = 5.1
b = 4
c = 2.7
if math.fabs(1 - pow(x, 2)) == a + c:
y = f1(a, x, b, c)
if math.fabs(1 - pow(x, 2)) > a + c:
y = f2(a, x)
if math.fabs(1 - pow(x, 2)) < a + c:
y = f3(b, x, a)
print("y = ", y)



  1. Высокий уровень

Задание: написать блок-схему и программу с использованием оператора выбора варианта согласно заданию.

Почтовый автомат предлагает поздравительные открытки на три темы (1Новогодние, 2 - С Днем Рождения, 3 - С Днем Защитника Отечества) в трех вариантах (a, b, c) по цене 2 гривны. Ввести с клавиатуры номер темы , вариант, и купюру оплаты (5,10, 20 гривен). Выдать нужную открытку (сообщение, например: «Новогодние, вариант с», а также сдачу (купюрами 1,2,5,10) с виде сообщения, например, «2гр+1гр». Предусмотреть обработку неправильного номера или варианта.

d = {
1: "Новогодние",
2: "C Днем Рождения",
3: "C Днем Защитника Отчества"
}
d2 = {
1: ", вариант a.",
2: ", вариант b.",
3: ", вариант c."
}
d3 = {
1: "Сдача :2гр +1гр",
2: "Сдача :5гр +2гр +1гр",
3: "Сдача :10гр +5гр +2гр +1гр"
}
a = int(input("""Выберите тему:
1.Новогодние
2.C Днем Рождения
3.С Днем Защитника Отчества
"""
))
b = int(input("""Выберите вариант:
1. a
2. b
3. c
"""
))
c = int(input("""Выберите купюру оплаты:
1. 5гр
2. 10гр
3. 20гр
"""
))
print(d[a], d2[b], d3[c])


  1. Программирование циклических алгоритмов

    1. Оператор цикла с параметром


7. Средний уровень

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



import math

k = int(input("k:"))

n = 1

d = 0

s = 0

while n != (k + 1):

s = (pow(-1, 2 * n) * (pow((pow(n, 2) - 9), 2))) / math.factorial(3 * n)

d += s

n += 1

print("Y:", d)

Значение k ввести с клавиатуры
    1. Операторы цикла с предусловием и постусловием


8.Средний уровень

Задание: составить блок-схему алгоритма и программу согласно заданию.

Билет называют «счастливым», если в его номере сумма первых трех цифр равна сумме последних трех. Подсчитать число тех «счастливых» билетов, у которых сумма трех цифр равна 13. Номер билета может быть от 000000 до 999999 .


s = 0
for i in range(10):
for j in range(10):
for k in range(10):
for l in range(10):
for m in range(10):
for n in range(10):
if (i + j + k) == (l + m + n):
if i + j + k == 13:
s = s + 1
print(s)


9 . Высокий уровень

Задание: составить блок-схему алгоритма и программу согласно условию задачи.

Вычислить сумму чисел от 1 до N, возведенных в степень M. Возведение в степень оформить как многократное умножение .


n = int(input("n:"))
m = int(input("m:"))
s = 0
for i in range(1,n+1):
s += i **m
print("Sum:",s)

    1. Вычисление бесконечных сумм


10.???? уровень

Задание: составить блок-схему алгоритма и программу вычисления суммы n членов ряда согласно условию задачи.



n = int(input("n:"))
x = int(input("x:"))
S = 0
for i in range(1, n + 1):
s = pow(-1, i + 1) * pow(x, (2 * i) + 1) / (((2 * i) + 1) * ((2 * i) - 1))
S += s
print(S)


    1. Табулирование функций


11.Средний уровень

Задание: написать блок-схему и программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции

.

from math import e, cos, tan, sqrt
import matplotlib.pyplot as plt
import numpy as np
import math

fig, ax = plt.subplots()
x = np.linspace(-(math.pi / 2), math.pi * 2, 100)
print(x.any())
if x.any () > 4.5:
y = x - 2
elif 1 <= x.any () <= 4.5:
y = 1 + pow(x, 2)
elif x.any () < 1:
y = math.cos(2 * x)
ax.plot(x, y)
plt.show()


  1. Массивы

    1. Одномерные массивы


13.Средний уровень

Задание: составить схему алгоритма и программу решения задачи

import random
import math

mass = [round(random.uniform(0, 10), 2) for i in range(6)]
print(*mass)
a = []
s = float(input("s:"))
for i in mass:
if s > i:
d = math.fabs(s) - math.fabs(i)
else:
d = math.fabs(i) - math.fabs(s)
a.append(d)

indx = a.index(max(a))
print("Индекс:", indx, "Значение:", mass[indx])

Дан массив вещественных чисел. Определить элемент массива (значение и индекс), который наиболее удален от заданного вещественного числа S.

14. Высокий уровень

Задание: составить схему алгоритма и программу решения задачи

import random

mass = [random.randint(0, 10) for i in range(5)]
mass_bin = []
for i in mass:
mass_bin.append(bin(i))
print(mass_bin)
new_mass = []
mass_bin.sort()
print("Өсу реті бойынша :", mass_bin)
for i in mass_bin:
new_mass.append(int(i, base=2))
s = sum(new_mass) / len(new_mass)
print("Орташа арифметикалық :", bin(int(s)))

Задан массив чисел в двоичной системе счисления. Упорядочить элементы массива по возрастанию. Определить среднее значение чисел.
    1. Двухмерные массивы


15. Средний уровень.

Задание: написать блок-схему и программу согласно заданию.

Дан целочисленный массив В[1..5, 1..5]. Вычислить сумму элементов этого массива, расположенных выше левой диагонали.

import random

mass = []
for i in range(3):
mass.append([random.randint(1, 9) for j in range(3)])
print(*mass, sep="\n")
s = 0
for i in range(len(mass)):
for j in range(len(mass) - 1 - i):
s += mass[i][j]
print("Сумма:", s)



16. Высокий уровень.

Задание: написать блок-схему и программу согласно заданию.

Дано число n. Создайте массив int A[n][n], и заполните его по следующему правилу: числа на диагонали, идущей из правого верхнего в левый нижний угол равны 1; числа, стоящие выше этой диагонали, равны 0; числа, стоящие ниже этой диагонали, равны 2.

0 0 0 1

0 0 1 2

0 1 2 2

1 2 2 2

n = int(input("n:"))
a = [[0] * n for i in range(n)]
for i in range(n):
a[i][n - i - 1] = 1
for i in range(n):
for j in range(n - i, n):
a[i][j] = 2
print(*a,sep="\n")


  1. Функции и библиотеки

    1. Функции


17. Средний уровень

Задание: написать блок-схему и программу согласно заданию.

В заданном массиве целых чисел найти максимальное и минимальное число, использую функции определения максимального и минимального числа

import random

mass = [random.randint(0, 10) for i in range(3)]
print(*mass)


def mn(m):
mn = 999999
for i in m:
if mn > i:
mn = i
return mn


def mx(m):
mx = 0
for i in m:
if i > mx:
mx = i
return mx


print("min:", mn(mass))
print("max:", mx(mass))



18.Высокий уровень

Задание: написать блок-схему и программу согласно заданию. Следует заметить, что практически все задания этой подгруппы можно легко решить и без использования рекурсии. Данное обстоятельство связано с тем, что в заданиях рассматриваются действительно простейшие примеры рекурсии, легко сводимые к итерационным алгоритмам. Более того, в некоторых случаях использование рекурсии приводит к неэффективным алгоритмам (см, например, задания 4 и 5). Однако, именно на подобных примерах проще всего получить первоначальные навыки разработки рекурсивных алгоритмов.

Составить программу для нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке. Например, для числа 1234 получаем результат 4321 .

n = input("n:")
print(n[::-1])


    1. Библиотеки



  1. Динамические структуры данных

    1. Динамические массивы


20. Средний уровень

Задание: написать блок-схему и программу согласно заданию. Все массивы в заданиях объявить как динамические.

Ввести в StringGrid массив из 13 вещественных чисел. Создать два новых массива – из положительных и отрицательных элементов исходного массива. Поменять местами максимальные элементы новых массивов.

mass = [round(random.uniform(-10, 10), 1) for i in range(13)]
new_mass1 = []
new_mass2 = []
for i in mass:
if i < 0:
new_mass1.append(i)
else:
new_mass2.append(i)
print(mass, "\n1:", new_mass1, "\n2:", new_mass2, )
mx1 = max(new_mass1)
mx2 = max(new_mass2)
new_mass1[new_mass1.index(mx1)] = mx2
new_mass2[new_mass2.index(mx2)] = mx1
print("\n1:", new_mass1, "\n2:", new_mass2)


    1. Динамические структуры: стеки и очереди


22. Средний уровень

Задание: написать программу в соответствии с индивидуальным заданием.

Создать очередь строковых значений, для реализации используя односвязные списки. Реализовать операции добавления (enqueue) и удаления (dequeue) элемента из очереди. Добавьте в очередь строки «one», «two», «three», «four» и распечатайте содержимое очереди. Удалите 1 элемент из очереди, затем добавьте в очередь строку «five» и распечатайте очередь еще раз. * Найдите суммарную длину строк, принадлежащих очереди.

q = ["one", "two", "three", "four"]
for j in range(2):
S = 0
for i in q:
S += len(i)
print(q, "\nSum:", S)
q.pop(0)
q.append("five")


    1. Динамические структуры: списки


24. Средний уровень

Задание: написать программу в соответствии с индивидуальным заданием.

Создать линейный однонаправленный список из целых чисел. Вставить в список последний четный элемент после каждого нечетного элемента.

from random import randint

mass = []
for i in range(10):
n = randint(1, 100)
mass.append(n)
if n % 2 == 0:
pos = n
if n % 2 == 1:
if "pos" in locals():
mass.append(pos)
print(mass)


  1. Особые типы данных

    1. Символьный тип данных


26. Средний уровень

Задание: написать программу согласно заданию

Дан массив символов, содержащий буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.


mass = ["a", "1", "2", "3", "b", "c", 'd', "5"]
s = 0
new_s = []
for i in mass:
if i.isdigit():
s += 1
else:
new_s.append(s)
s = 0
print(max(new_s))


27. Высокий уровень

Задание: написать программу согласно заданию.

В заданном массиве символов слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение .

mass = ["тевирП ", '! рим']
for i in mass:
mass[mass.index(i)] = i[::-1]
print(*mass)


    1. Строковый тип данных


28. Средний уровень

Задание: написать программу согласно заданию.

В заданной строке удалить последний символ « » (пробел), который найдется в строке.


S = "Привет , мир !"
print(S)
S = S[:S.rfind(" ")] + S[S.rfind(" ")+1:]
print(S)


29. Высокий уровень

Задание: написать программу согласно заданию.

В заданной строке заменить каждый символ «!» числом, равным индексу этого символа в строке.


Str = "Привет ! , мир !"
print(Str)
newStr = ""
for i in Str:
if i == "!":
a = Str.index(i)
Str = Str[:a] + str(a) + Str[a + 1:]
print(Str)

    1. Структуры


30. Средний уровень

Задание: написать программу согласно заданию с использованием структуры.

№ поезда

Направление

Время прибытия Вывести данные о поездах, пребывающих в пути более суток

Время отбытия

Расстояние


import datetime
from collections import namedtuple

Train = namedtuple("Train", ["Num", "direction", "arrival_time", "departure_time", "distance", ])
n = int(input("Ведите количество поездов"))
for i in range(n):
a = input("Время прибытия \n(ГГГГ.ММ.ДД)\n").split(".")
d = input("Время отбытия :\n(ГГГГ.ММ.ДД)\n").split(".")
b = []
for k in range(len(d)):
a[k] = int(a[k])
d[k] = int(d[k])
a = datetime.datetime(*tuple(a))
d = datetime.datetime(*tuple(d))

if (a - d).days > 1:
Train1 = Train(input("№ поезда :"), input("Направление:"), a, d,
int(input("Расстояние :")))
b.append(Train1)
for i in b:
print(f"""


поезда - - - - - - - {i.Num}
Направление - - - - - {i.direction}
Время прибытия - - - - {i.arrival_time}
Время отбытия - - - - {i.departure_time}
Расстояние - - - - - {i.distance}
""")


31. Высокий уровень

Задание: написать программу согласно заданию с использованием структуры.

Описать структуру с именем GROUP, содержащую поля: Name – фамилия и инициалы, DAT – дата рождения (год, месяц, число), SES – успеваемость (массив из трех элементов). Написать программу, выполняющую:

- ввод с клавиатуры данных в массив GR5,состоящий из 10 структур типа GROUP;

- вывод на экран записей, упорядоченных по возрастанию поля SES;

-вывод списка студентов, возраст которых на 01.12.2010 года не превышает 20 лет; если таких студентов нет – выдать сообщение.


from random import randint
import datetime
from collections import namedtuple

n = int(input("Ведите количество студентовЖ"))
a = []

GROUP = namedtuple("GROUP", ["Name", "DAT", "SES"])
for i in range(n):
Name = input("Фамилия и инициалы:")
data = input("Дата рождения \n(ГГГГ.ММ.ДД)\n").split(".")
for k in range(len(data)):
data[k] = int(data[k])
DAT = datetime.datetime(*data)
SES = [randint(1, 10) for j in range(3)]
now = datetime.datetime(2010, 12, 1)
if (now - DAT).days < 20 * 365:
GROUP1 = GROUP(Name, DAT, SES)
a.append(GROUP1)
new_a = []
for i in a:
new_a.append(sum(i.SES))
new_a.sort()
d = []
for i in new_a:
for j in a:
if i == sum(j.SES):
d.append(j)
print(d)

for i in d:
print(f"""

Фамилия и инициалы - - - {i.Name}
Дата рождения - - - - - {i.DAT}
Успеваемость - - - - - - {i.SES}
""")

  1. Файлы

    1. Текстовые файлы


32. Средний уровень

Задание: создать текстовый файл в текстовом редакторе. Организовать просмотр содержимого файла и выполнения действий в соответствии с условием индивидуального задания. Обеспечить сохранение всех полученных результатов в новый файл.

Дан файл f, компоненты которого являются действительными числами. Найти последнюю компоненту файла.

import random

f = open("for32", "w")
n = 0
while n < 5:
n += 1
f.write(str(random.randint(0, 100)) + " ")

f.close()
f = open("for32")
m = f.read()
print(m)
mass = m.split()
print(mass[-1])



33. Высокий уровень

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

Файл состоит из k компонент структуры, где каждая компонента содержит две матрицы: первая размерности m × n, вторая размерности m × l. Получить k сумму соответствующих матриц и записать их во второй файл. Вывести на экран содержимое первого и второго файлов.

from random import randint

k = int(input("k:"))
m = int(input("m:"))
n = int(input("n:"))
l = int(input("l:"))
for g in range(k):
mass1 = [[randint(1, 9) for i in range(n)] for j in range(m)]
mass2 = [[randint(1, 9) for i in range(l)] for j in range(m)]

f = open("for33", "w")
for i in mass1:
for j in i:
f.write(str(j) + " ")
f.write("\n")
for i in mass2:
for j in i:
f.write(str(j) + " ")
f.write("\n")
f.close()
f = open("for33")
f2 = open("for33_2", "w")
a = []
for line in f:
q = sum(map(int, line.split()))
if q != 0:
a.append(q)
for i in range(len(a)):
f2.write(str(i + 1) + " line,Sum = " + str(a[i]) + "\n")
f.close()
f2.close()
f, f2 = open("for33"), open("for33_2")
print(f.read())
print(f2.read())


    1. Бинарные файлы


34. Средений уровень

Задание: представленные задания оформить в виде бинарного файла.

Создать бинарный файл с информацией о работниках телестудии:

- фамилия;

- должность;

- образование; - дата приема на работу;

- пол.

Вывести сведения о работниках телестудии, которые работают на должности инженеров, но не имеющие высшего образования.


import pickle
import datetime

File = open("34file.bin", "wb")
n = int(input("Ведите количество сотрудников :"))
mass = []
for i in range(n):
tvstudio = {
"name": input("Фамилия:"),
"post": input("Должность:"),
"education": input("Образование:"),
"Data": datetime.datetime(*tuple(list(map(int, input("Дата приема на работу:").split(".")))))
}
mass.append(tvstudio)
pickle.dump(mass, File)

File.close()
input_file = open("34file.bin", "rb")
mass = pickle.load(input_file)
for i in mass:
if i["post"] == "инженер" and i["education"] != "высший":
print(f"""
Фамилия ---- {i["name"]}
Должность ---- {i["post"]}
Образование ---- {i["education"]}
Дата приема на работу: ----{i["Data"]}"""
)

input_file.close()


35.Средний уровень

Задание: представленные задания оформить в виде бинарного файла

Ввести в Memo или в StringGrid некоторое количество целых чисел в диапазоне 33 - 255 и записать их в бинарный файл. Переписать бинарный файл так, чтобы каждое значение, записанное в файле, было преобразовано в данные типа char, те в символьный тип данных. Распечатать содержимое файла до и после изменения данных в файле.

import pickle

from random import randint
File = open("file.bin", "wb")
mass = []
for i in range(10):
mass.append(randint(33,255))

print(*mass)
new_mass = []
for i in mass:
new_mass.append(chr(i))
pickle.dump(new_mass, File)
File.close()
File = open("file.bin", "rb")
m = pickle.load(File)
print(*m)
File.close()



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