Python Необходимо написать класс Library, который описывает библиотеку. У библиотеки есть два свойства: название и список книг. У библиотеки есть следующие методы:
Конструктор, принимает название и список книг. По умолчанию список книг пустой. Каждая книга - это объект класса Book
list() - показать все книги в библиотеке в виде таблицы "Название Автор Год". Для вывода книг используйте их метод display().
filter() - найти книги по названию, автору или году. Метод должен вернуть список подходящих книг. По умолчанию все параметры поиска - пустые. Если параметры поиска не заданы, нужно вернуть все книги. Если ни одна книга не найдена, метод должен вернуть пустой список. Метод не должен выводить никаких сообщений или сам выводить книги.
add_book() - добавить книгу в библиотеку. Принимает объект класса Book.
class Book:
def __init__(self, title, author=None, year=None):
self.title = title
self.author = author
self.year = year
book = Book('Title', 'Author', 2020)
book.display()
Книги могут повторяться. Сама книга (Book) должна создаваться снаружи класса, и передаваться в этот метод, как аргумент.
book = Book('Title', 'Author')
library.add_book(book)
delete_book() - удалить книгу из библиотеки. Принимает объект класса Book, ранее найденный с поиска. Например:
books = library.filter(title='Title')
book = books[0] # первая книга из найденных
library.delete_book(book)
Статический метод as_table() - показать переданный список книг в виде таблицы. Принимает список из объектов Book и выводит их аналогично методу list. Например, в этот метод можно передать список книг, возвращённый из метода поиска.
Контрольный пример:
book_1 = Book('Чистый код', 'Дядя Боб', 2017)
book_2 = Book('От 2 до 5', 'Корней Чуковский', 1958)
book_3 = Book('Идеальный программист', 'Дядя Боб', 2018)
book_4 = Book('Рецепты татарской кухни', year=2018)
library = Library('Библиотека')
library.add_book(book_1)
library.add_book(book_2)
library.add_book(book_3)
library.add_book(book_4)
print(library.name) # вывод названия
library.list() # вывод книг
//Pascal
const m = 1000
var
arr: array[1..m] of integer;
n,i, j, k: integer;
begin
readln(n);
write ('Исходный массив: ');
for i := 1 to n do begin
readln(arr[i]);
end;
//сортировка методом пузырька
for i := 1 to n-1 do
for j := 1 to n-i do
if arr[j] > arr[j+1] then begin
k := arr[j];
arr[j] := arr[j+1];
arr[j+1] := k
end;
write ('Отсортированный массив: ');
for i := 1 to n do
write (arr[i]:4);
end.
Алгоритм сортировки на классическом языке программирования С
# define SWAP(A,B) {A=A^B;B=A^B;A=A^B;}
void bubblesort(int A[], int n)
{
int i, j;
for(i = n-1 ; i > 0 ; i--)
{ for(j = 0 ; j < i ; j++)
{
if( A[j] > A[j+1] ) SWAP(A[j],A[j+1]);
}
}
}
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
Writeln(Range(1,100).Select(i->sin(i)*cos(i)).Where(x->x<>0).Average)
end.
Тестовое решение:
-0.00136006072493969
2. А вот так учат писать это же школьные учителя:
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
var
m:array[1..100] of real;
i,k:integer;
s:real;
begin
s:=0;
k:=0;
for i:=1 to 100 do begin
m[i]:=sin(i)*cos(i);
if m[i]<>0 then begin
s:=s+m[i];
k:=k+1
end
end;
Writeln(s/k)
end.
Тестовое решение:
-0.00136006072493969