Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

ООП фирмы

22.08.2020, 21:40. Показов 2567. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не пойму, что надо поправить?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Firma():
    def __init__(self, direktor, rabotnik, zakazchik, 
    predstavitel_zakazchika):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
#        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print("Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik + ", \nв сумме " + str(self.denga) + " долларов.")
 
professional_LTD = Firma(
direktor = "Генадий Александрович", 
rabotnik = "Василий", 
zakazchik = "Мария Петровна", 
predstavitel_zakazchika = "Дмитрий")
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
Миниатюры
ООП фирмы  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2020, 21:40
Ответы с готовыми решениями:

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

Помочь директору фирмы развезти сотрудников фирмы по домам на такси
После затянувшегося совещания директор фирмы решил заказать такси, чтобы развезти сотрудников по домам. Он заказал N машин - ровно столько,...

Создайте класс Vendor, который имеет следующие поля — наименование фирмы, адрес фирмы, телефон
2. Создайте класс Vendor, который имеет следующие поля - наименование фирмы, адрес фирмы, телефон. Создайте функцию конструктор, которая...

39
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.08.2020, 09:58  [ТС]
Студворк — интернет-сервис помощи студентам
denga изначально была закомментирована сверху. То есть предполагалось, что в классе она не фигурирует и значения по умолчанию у неё нету. А туда её почему - то пришлось добавить (не мной), потому что код не работал. denga - это сумма по договору к оплате, denga2 - внесенные деньги после выполнения работы.
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Что-то ты сам себя запутал.
А почему Вы убрали код методов заказа и выполнения работы?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2020, 10:29
Так верни

Добавлено через 19 секунд
Чтобы не захламлять неизменённым кодом
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.08.2020, 11:00  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
professional_LTD.polychenie_zakaza_i_opl ata(850)
professional_LTD.polychenie_zakaza_i_opl ata(1100)
Это не то, что нужно (не надо вызывать два раза один метод). Под получением заказа имеется в виду приемка выполненной работы представителем заказчика.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2020, 12:02
Так не вызывай, что ты так буквально воспринимаешь каждую строчку кода
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.08.2020, 13:08  [ТС]
Потому что рабочего примера без конечного автомата здесь нету. А как сделать нормально, пока не изучил.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2020, 13:14
Цитата Сообщение от supmener Посмотреть сообщение
А как сделать нормально
Напиши весь юзкейс по пунктам, максимально подробно!
Максимально - это значит все возможные варианты действий и их последствия.
На этой основе уже будет элементарно спроектировать класс(ы).

Я б тебе посоветовал книгу, но ты все равно читать не будешь.
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
23.08.2020, 13:25  [ТС]
Если не пойму по тем источникам, которые последовательно изучаю, то буду смотреть другие материалы. Так что возможно и книгу буду читать, если посоветуете.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2020, 13:38
Книга не привязана к языку. На сколько помню, там примеры на джаве, но это не имеет значения. Главное понять принципы.
Кликните здесь для просмотра всего текста
1
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.08.2020, 06:16  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Напиши весь юзкейс по пунктам, максимально подробно!
Максимально - это значит все возможные варианты действий и их последствия.
На этой основе уже будет элементарно спроектировать класс(ы).
Сократил код. Может так будет понятнее.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Firma:
 
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print(
            "Договор на " + str(denga) + " долларов.")
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if self.denga2 < self.denga:
            print("Не хватает {}".format(self.denga - self.denga2) + " долларов. Забрать товар нельзя")
        else:
            print("Оплачено " + str(denga2) + " долларов. Товар можно забрать")
            
professional_LTD = Firma()
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
 
professional_LTD.polychenie_zakaza_i_oplata(850)
Code
1
2
3
4
5
6
7
Договор на 1000 долларов.
Traceback (most recent call last):
  File "firma4.py", line 18, in <module>
    professional_LTD.polychenie_zakaza_i_oplata(850)
  File "firma4.py", line 9, in polychenie_zakaza_i_oplata
    if self.denga2 < self.denga:
AttributeError: 'Firma' object has no attribute 'denga2'
Добавлено через 7 минут
Ещё так пробовал.
Python
1
2
3
        if denga2 < self.denga:
            z = self.denga - self.denga2
            print("Не хватает" + str(z) + " долларов. Забрать товар нельзя")
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.08.2020, 08:27
Цитата Сообщение от supmener Посмотреть сообщение
Сократил код. Может так будет понятнее.
Это именно тебе по прежнему непонятно. И юзкейс нужен в первую очередь для тебя.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Firma:
 
    def __init__(self):
        self.denga = 0
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        self.denga = denga
        print(
            "Договор на " + str(denga) + " долларов.")
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print("Не хватает {}".format(self.denga - denga2) + " долларов. Забрать товар нельзя")
        else:
            print("Оплачено " + str(denga2) + " долларов. Товар можно забрать")
 
 
professional_LTD = Firma()
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
 
professional_LTD.polychenie_zakaza_i_oplata(850)
Пойми, что когда ты создаешь экземпляр своего класса, то что в классе написано self - указывает на именно этот конкретный экземпляр!
Цитата Сообщение от supmener Посмотреть сообщение
if self.denga2 < self.denga:
Где у твоего professional_LTD такие атрибуты? Правильно, нигде.
Аргумент, который прилетает в метод извне - к экземпляру класса никакого отношения не имеет.
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.08.2020, 09:13
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Firma(object):
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika,denga):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        print(
            "Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik + ", \nв сумме " + str(
                self.denga) + " долларов.")
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    denga=1000
)
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.08.2020, 09:51
Dax, переменная denga в методе не используется
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.08.2020, 09:56
Рыжий Лис, спасибо, увидел).
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
24.08.2020, 11:08  [ТС]
Работающий код до внедрения на фирме конечного автомата такой.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Firma:
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
 
    def zakaz_i_vistavlenie_cheta(self, denga):
        self.denga = denga
        print(
            "Директор, " + self.direktor + ", \n" "получает договор на работу от заказчика, \nкоторую зовут " + self.zakazchik +
            ", \nв сумме " + str(denga) + " долларов.") 
 
    def viponnenie_raboti(self):
        rabota = 'Работник ' + self.rabotnik + ' выполняет заказ.'
        return rabota
 
    def polychenie_zakaza_i_oplata(self, denga2):
        if denga2 < self.denga:
            print("Не хватает {}".format(self.denga - denga2) + " долларов. Забрать товар нельзя")
        else:
            print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(
            denga2) + " долларов и забирает товар.")
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий"
)
 
professional_LTD.zakaz_i_vistavlenie_cheta(1000)
print(professional_LTD.viponnenie_raboti())
professional_LTD.polychenie_zakaza_i_oplata(850)
Добавлено через 27 минут
Также будет работать с таким фрагментом.
Python
1
2
3
4
5
6
7
   def polychenie_zakaza_i_oplata(self, denga2):
        self.denga2 = denga2
        if self.denga2 < self.denga:
            print("Не хватает {}".format(self.denga - self.denga2) + " долларов. Забрать товар нельзя")
        else:
            print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает " + str(
            self.denga2) + " долларов и забирает товар.")
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.08.2020, 18:03
Цитата Сообщение от supmener Посмотреть сообщение
def polychenie_zakaza_i_oplata(self, denga2):
Зачем использовать имя denga2? Если убрать двойку - ничего в первом примере не изменится.

Но поскольку по смыслу denga2 и self.denga это все-таки разные переменные, нужно просто дать им адекватные имена:
invoice - счет для оплаты
payment (или charge) - оплата счета
2
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
27.08.2020, 21:31
supmener, Не хочу вникать в эту задачу, но так для информации скажу. Хотя не исключено, что все здесь в курсе , но может пригодиться для понимания кого-то из новичков со стороны, кто будет читать этот топик.
Подобные этой задачи в ООП называются "композицией" (в отличие от задач с наследованием). У Лутца подобная задача рассматривается в Лутц М. Изучаем Python (том 2, 5-е издание, 2019) стр. 174-176 "Объектно-ориентированное программирование и композиция: отношения "имеет". Где в качестве примера рассматривается пицерия, в которой принимают заказы от клиентов и обслуживают их".
Извините, что влез.

Добавлено через 8 минут
Но там не только Фирма является классом, а классами оформляются все участвующие субъекты.

Добавлено через 8 минут
supmener, У меня сохранился код от этого примера в 4-ом издании книги.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from employees import PizzaRobot, Server
 
class Customer:
    def __init__(self, name):
        self.name = name
    def order(self, server):
        print(self.name, "orders from", server)
    def pay(self, server):
        print(self.name, "pays for item to", server)
 
class Oven:
    def bake(self):
        print("oven bakes")
 
class PizzaShop:
    def __init__(self):
        self.server = Server('Pat')
        self.chef   = PizzaRobot('Bob')
        self.oven   = Oven()
 
    def order(self, name):
        customer = Customer(name)
        customer.order(self.server)
        self.chef.work()
        self.oven.bake()
        customer.pay(self.server)
 
if __name__ == "__main__":
    scene = PizzaShop()
    scene.order('Homer')
    print('...')
    scene.order('Shaggy')
Добавлено через 3 минуты
А вот код модуля, который импортируется.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Employee:
    def __init__(self, name, salary=0):
        self.name = name
        self.salary = salary
    def giveRaise(self, percent):
        self.salary = self.salary + (self.salary * percent)
    def work(self):
        print(self.name, "does stuff")
    def __repr__(self):
        return "<Employee: name=%s, salary=%s>" % (self.name, self.salary)
 
class Chef(Employee):
    def __init__(self, name):
        Employee.__init__(self, name, 50000)
    def work(self):
        print(self.name, "makes food")
 
class Server(Employee):
    def __init__(self, name):
        Employee.__init__(self, name, 40000)
    def work(self):
        print(self.name, "interfaces with customer")
 
class PizzaRobot(Chef):
    def __init__(self, name):
        Chef.__init__(self, name)
    def work(self):
        print(self.name, "makes pizza")
 
if __name__ == "__main__":
    bob = PizzaRobot('bob')
    print(bob)
    bob.work()
    bob.giveRaise(0.20)
    print(bob); print()
 
    for klass in Employee, Chef, Server, PizzaRobot:
        obj = klass(klass.__name__)
        obj.work()
Добавлено через 17 минут
Народ помогите советом. Только сейчас обнаружил. У меня после установки 3.8.5 перестали в Microsoft Visual Studio Community 2017 перестал запускаться отладчик программ написанных до установки 3.8.5. Ругается , Отладка не поддерживается для Python 2.5 и более ранней версии. Хотя из консоли программы запускаются и нормально работают. Получается все дело в IDE Microsoft Visual Studio, хотя там показывает, что студия работает с питоном 3.8.5.
Кто нибудь может подсказать, в чем дело?

Добавлено через 1 минуту
Может попробовать переустановить Microsoft Visual Studio ?
1
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.08.2020, 22:02
Цитата Сообщение от Viktorrus Посмотреть сообщение
Кто нибудь может подсказать, в чем дело?
На стековефлоу на похожие вопросы один ответ: Visual Studio 2017 просто не поддерживает python 3.8. (И, возможно, даже 3.7)
Только MS VS 2019.
Пишут, что microsoft пока не до этого.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.08.2020, 01:11

Не по теме:

Приехали. Оказывается Microsoft Visual Studio Community 2017 не поддерживает Python 3.8. Попробую перейти на Microsoft Visual Studio Community 2019. Если не поможет, тогда поставлю PyCarm. :)



Добавлено через 3 часа 8 минут

Не по теме:

Установил Microsoft Visual Studio Community 2019. Работает, но пишет, что пока официально не поддерживает версию питона 3.8. Поэтому некоторые новые функции могут работать не правильно. В общем попробую, а там видно будет. :)

0
16 / 14 / 4
Регистрация: 05.06.2019
Сообщений: 79
28.08.2020, 13:59
Чего сложного то?
Если я правильно понял (а это сложно, автор формулирует мысли крайне запутано), то нужно передать в Firma эту таинственную переменную denga. И если она не соответствует стоимости работы (делаю выводы из результата работы кода), то выполнить:
Python
1
print("Не хватает {}".format(self.denga - denga) + " долларов. Забрать товар нельзя")
Просто добавить переменную стоимости работы и не будет никаких проблем.

Добавлено через 11 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Firma:
    def __init__(self, direktor, rabotnik, zakazchik,
                 predstavitel_zakazchika, denga, price):
        self.direktor = direktor
        self.rabotnik = rabotnik
        self.zakazchik = zakazchik
        self.predstavitel_zakazchika = predstavitel_zakazchika
        self.denga = denga
        self.price = price
 
    def zakaz_i_vistavlenie_cheta(self):
        print(
            "Директор, " + self.direktor + ", \n" "получает оплату от заказчика, \nкоторую зовут " + self.zakazchik +
            ", \nв сумме ", self.denga, " долларов.")
        print('')
 
    def viponnenie_raboti(self):
        rabota = 'Работник ' + self.rabotnik + ' выполняет работу.'
        return rabota
 
 
    def polychenie_zakaza_i_oplata(self):
        if self.denga < self.price:
            print("Не хватает {}".format(self.price - self.denga) + " долларов. Забрать товар нельзя")
            print('')
            print('Представитель заказчика, ' + self.predstavitel_zakazchika + ", \nоплачивает ",
                  self.price - self.denga, " долларов и забирает товар.")
        elif self.denga == self.price:
            print('')
            print('Представитель заказчика', self.predstavitel_zakazchika, '\nзабирает свой товар')
 
 
professional_LTD = Firma(
    direktor="Генадий Александрович",
    rabotnik="Василий",
    zakazchik="Мария Петровна",
    predstavitel_zakazchika="Дмитрий",
    price=int(input('Цена работ: ')),
    denga=int(input('Получено средств: ')),
 
)
 
professional_LTD.zakaz_i_vistavlenie_cheta()
 
print(professional_LTD.viponnenie_raboti())
 
professional_LTD.polychenie_zakaza_i_oplata()
Добавил print('') для читаемости вывода.
Логика понятна и проста. Что еще сделать нужно?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.08.2020, 14:14
Цитата Сообщение от user1472382 Посмотреть сообщение
Что еще сделать нужно?
Блокировку от повторного вызова метода.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2020, 14:14

6 клиентов случайным образом обращаются в 4 фирмы. Найти вероятность того , что хотя бы в одну фирмы не кто не
6 клиентов случайным образом обращаются в 4 фирмы. Найти вероятность того , что хотя бы в одну фирмы не кто не обратится.

“Работники и фирмы". Есть N фирм и M работников. Работники хотят устроиться на работу в одну из фирм, а фирмы хотят наня
I “Работники и фирмы&quot;. Есть N фирм и M работников. Работники хотят устроиться на работу в одну из фирм, а фирмы хотят нанять работников....

Где лучше учить ООП PHP ? И зачем нужен ООП
Здравствуйте ! До того как начел учить ООП я кайфовал от программирования, после того как начел учить ООП нет мотивации ну и т.д общем...

ООП. Переделать фрагмент программы под ООП
Есть небольшой фрагмент из программы, который необходимо перестроить под ООП(создать класс), для удобного испольщования. Можно ли изменить...

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru