Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 09.09.2014
Сообщений: 25

Найти полную квартплату с учетом возможного наличия излишков жилплощади

14.09.2014, 23:26. Показов 5261. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Величина квартплаты определяется количеством квадратных метров площади, умноженную на цену 1 кв. м. Кроме того, если в квартире имеется излишек площади относительно санитарной нормы он оплачивается в двойном размере. Считайте что сан. норма = 18 на 1 чел. Стоимость 1 кв.м. произвольная.
Некоторым категориям жильцов положено льготы при оплате. Инвалиды платят на 25% а участники ВОВ на 50% меньше. Льготы только на одного человека.
Для жильцов 1 этажа плата снижается на 20% а жильцам 2 этажа на 10% из-за отсутствия лифта.

1. Найти полную кварплату. Учтите возможное наличие излишков жил. площ. НО если проживает 1 чел. то за излишек он не платит.
2. Кварплату с учетом всех льгот. Так же фактическую плату это льготы +этажность.
3. Количество льготников и суммарную факт. плату инвалидов и ВОВ.
4. Квартиру с MAX фактической платой.

Ввод данных я понял как сделать

main.cpp
C++ (Qt)
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
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <locale>
#include "struct.h"
 
#define S 80// площадь квартиры
#define stoimost 30// стоимость 1 кв.м. жилья
#define norma 18// саниматрная норма
void main(void)
{int i, n, j, a;
float sum;
kvartira b;
setlocale (LC_ALL, "Russian");
FILE *file;
file= fopen ("text.txt", "w+");
printf("Введите количество этажей\n");
scanf("%d", &n);
a=n*2;
for(j=0;j<a;j++)
{b.nomer_kv[j]=j+1;
printf("Введите колличество жильцов\n");
scanf("%d ", &b.koll[j]);
for(i=0;i<b.koll[j];i++)
{
fprintf(file,"%d ", b.nomer_kv[j]);
fprintf(file,"%d ", b.koll[j]);
imput_fio(file, b, i);
imput_lgoti(file, b, i);
}
getch();
}
struct.h
C++ (Qt)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <locale>
 
typedef struct
{
int nomer_kv[99];
int koll[999];
char famiya[99][99];
char name[99][99];
char otchestvo[99][99];
int wow[99];
int invalid[99];
int bezlgot[99];
float izlishek[99];
}kvartira;
 
 void imput_fio(FILE *file, kvartira &A, int i)
 {  printf("Введите фамилию имя и отчество\n");
    fflush(stdin);
    gets(A.famiya[i]);
    fflush(stdin);
    gets(A.name[i]);
    fflush(stdin);
    gets(A.otchestvo[i]);
    fprintf(file, "%s %s %s ", A.famiya[i], A.name[i], A.otchestvo[i]);
    fflush(file);
 }
 void imput_lgoti(FILE *file, kvartira &A, int i)
 {  fscanf (file,"%s %s %s ",&A.famiya[i],  &A.name[i], &A.otchestvo[i]);
    printf("Является ли %s %s %s участиником ВОВ 1- да, 0-нет\n", A.famiya[i], A.name[i], A.otchestvo[i]);
    fflush(stdin);
    scanf("%d", &A.wow[i]);
     if (A.wow[i]==1)
     {
        A.invalid[i]=1;
        A.bezlgot[i]=0;
     }
     else
    {  
        printf("Является ли %s %s %s инвалидом 1- да, 0-нет\n", A.famiya[i], A.name[i], A.otchestvo[i]);
        fflush(stdin);
        scanf("%d", &A.invalid[i]);
        if (A.invalid[i]==1)
        { 
        A.wow[i]=0;
        A.bezlgot[i]=0;
        }
        else
        { A.wow[i]=0;
        A.bezlgot[i]=1;
        A.invalid[i]=0;
    }
 
 }   
     fprintf(file,"%d %d %d\n", A.wow[i], A.invalid[i], A.bezlgot[i]);
     fflush(file);
}
А как рассчитывать я не понимаю( Может кто подсказать, дальше может сам разберусь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2014, 23:26
Ответы с готовыми решениями:

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

Изменить текст с учетом наличия знака '+'
Дан текст. Если в тексте нет знака +, то оставить текст без изменений, иначе каждую из цифр, что предшествует первому вхождению знака +,...

Настройка маршрутизатора с учетом наличия в сети контроллера домена
Добрый день! У меня появился вопрос касательно установки роутера с DHCP, с учетом наличия в сети DC. Имеется сервер-контроллер домена,...

42
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.09.2014, 10:10
Студворк — интернет-сервис помощи студентам
gru74ik, позволю себе высказать замечания по коду:
main.cpp
1. строки 50-53. Имеет смысл убрать continue, т.к. в конце цикла от него проку ноль.
2. строка 30. Название tmp практически ни о чем не говорит, лучше добавить локальную переменную там, где она нужна и дать ей подходящее имя.
3. строки 67-68. Вспомогательная переменная не нужна, можно сразу использовать элемент массива.
Apt.h
4. print и read не нужны, если есть перегруженные операторы <<, >>. Ну а если хочется их оставить, то надо убрать дублирование кода и сделать вызов одного через другого.
5. константы (15-21) должны быть static, т.е. общие для всех экземпляров класса.
6. методы, не изменяющие состояние объекта должны быть const.
7. явный деструктор не нужен.
Apt.cpp
8. инициализацию полей в конструкторе лучше делать не в блоке, а до него (см. инициализатор конструктора)
9. оператор присваивания не нужен, т.к. он тривиален. (а если уж добавил, то помни о "правиле трёх")
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
22.09.2014, 18:10
В общем, вот - финальная версия (2.8):

main.cpp
Кликните здесь для просмотра всего текста
C++
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/// apartment(residential_taxes)_ver_2_8
//  main.cpp
/*
Соглашения, терминология, условия:
01. Величина квартирного налога определяется количеством кв. метров площади,
    умноженную на тариф за 1 кв. метр.
02. Если в квартире имеется излишек площади относительно санитарной нормы он
    оплачивается по двойному тарифу.
03. Считайте что санитарная норма = 18 кв.метра на 1 человека.
04. Стоимость 1 кв.м. произвольная.
05. Если в квартире проживает 1 человек, то за площадь сверх санитарной нормы
    (если таковая имеется) он не платит.
06. Некоторым категориям жильцов положено льготы при оплате.
    Инвалиды имеют льготу в 25%, а ветераны ВОВ - 50%. Льготы считаются только
    на одного человека и не суммируются. То есть если жилец одновременно и
    инвалид и ветеран, при подсчётах принимается во внимание только большая
    льгота (за ветеранство, в нашем случае).
07. Для жильцов первых двух этажей имеется дополнительная скидка за
    то, что они не пользуются лифтом - для них квартирный налог снижен:
    для жителей 1 этажа на 20%, а для жителей 2 этажа на 10%.
08. Обратите внимание: дополнительная скидка (скидка за этажность) суммируется
    с основными льготами (льготы для инвалидов и ветеранов).
09. Не забудьте учесть возможное наличие излишков жилплощади.
10. Сумма квартирного налога с учётом всех льгот, скидок и вычетов
    называется фактическим тарифом.
11. Сумма квартирного налога без учёта  льгот, скидок, но с учётом вычетов
    называется общим тарифом.
12. Общей суммой квартирного налога называется сумма налога для всех жильцов
    дома.
 
Задача:
1. Найдите общую сумму квартирного налога по общему тарифу.
2. Найдите общую сумму квартирного налога по фактическому тарифу.
3. Найдите общую сумму всех льгот и скидок.
4. Найдите общее количество льготников (ветеранов, инвалидов и жителей 1 и 2 этажей).
5. Найдите общее количество ветеранов и инвалидов.
6. Найдите сумму квартирного налога по общему тарифу для всех инвалидов
   и ветеранов дома.
7. Найдите сумму квартирного налога по фактическому тарифу для всех
   инвалидов и ветеранов дома.
8. Найдите квартиру с максимальной суммой квартирного налога по
   фактическому тарифу.
*/
#include <iostream>
#include <cstdlib>      // для exit(EXIT_FAILURE)
#include <string>
#include <vector>
#include <fstream>      // для чтения из файла
#include <ostream>      // для вывода в файл
#include "Apt.h"
 
int main()
{
    using std::cout;
    using std::cin;
    using std::endl;
    using std::string;
    using std::vector;
    using std::ifstream;
 
    vector <Apt> apartment;  // создаём массив квартир (это у нас будет один дом)
    cout << "Hello! You are welcomed by a console program processing\n"
            "personal data of residents of an apartment building.\n"
            "This program reads data from a text file in an array\n"
            "which then operates.\n";
 
    cout << "\nDo you want to read data from a text file into an array? (yes/no): ";
    char userAnswer;
    cin >> userAnswer;   // записываем ответ пользователя
    while (cin.get() != '\n'); // освобождаемся от мусора в потоке
    if (userAnswer == 'y' || userAnswer == 'Y')
    {
        cout << "\nEnter filename: ";
        string filename;        // house.txt
        getline(cin, filename);
        ifstream fin;           // создание объекта fin типа ifstream
 
        fin.open(filename);     // ассоциирование создание объекта fin
                                // c файлом filename
        if (!fin.is_open())
            exit(EXIT_FAILURE);
 
        // используем созданный нами объект fin по аналогии с объектом cin
 
        for (Apt temp; ;)
        {
            fin >> temp;
            apartment.push_back(temp);
            if (fin.get() == EOF) break;
        }
 
        fin.close ();   // закрытие соединения ввода с файлом
    }
    else
    {
        cout << "\nYour answer is accepted. The program will be closed.";
        return 0;
    }
 
    // 1. Найдите общую сумму квартирного налога по общему тарифу:
    int result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        result += (apartment[i].norm_tax() + apartment[i].overnorm_tax());
    cout << "\nThe total amount of apartment tax on the standard rate: "
         << result << endl;
 
 
    // 2. Найдите общую сумму квартирного налога по фактическому тарифу:
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        result += apartment[i].fact_tax();
    cout << "\nThe total amount of apartment tax on the actual rate: "
         << result << endl;
 
    // 3. Найдите общую сумму всех льгот и скидок:
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        result += apartment[i].sum_rebate();
    cout << "\nTotal sum of all benefits and rebates: " << result << endl;
 
    // 4. Найдите общее количество льготников (ветеранов, инвалидов и
    //    жителей 1 и 2 этажей):
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        if (apartment[i].sum_rebate() > 0)
            ++result;
    cout << "\nThe total number of beneficiaries: " << result << endl;
 
    // 5. Найдите общее количество ветеранов и инвалидов:
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        if (apartment[i].sum_rebate() > apartment[i].stage_rebate())
            ++result;
    cout << "\nThe total number of veterans and invalids: " << result << endl;
 
    // 6. Найдите сумму квартирного налога по общему тарифу для всех инвалидов
    //    и ветеранов дома:
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        if (apartment[i].sum_rebate() > apartment[i].stage_rebate())
            result += apartment[i].norm_tax();
    cout << "\nThe total amount of apartment tax on the standart rate\n"
            "for veterans and invalids: " << result << endl;
 
    // 7. Найдите сумму квартирного налога по фактическому тарифу для всех
    //    инвалидов и ветеранов дома:
    result = 0;
    for (size_t i=0; i < apartment.size(); ++i)
        if (apartment[i].sum_rebate() > apartment[i].stage_rebate())
            result += apartment[i].fact_tax();
    cout << "\nThe total amount of apartment tax on the actual rate\n"
            "for veterans and invalids: " << result << endl;
 
    // 8. Найдите квартиру с максимальной суммой квартирного налога по
    //    фактическому тарифу:
    result = 0;
    int aptNum = 0;
    for (size_t i=0; i < apartment.size(); ++i)
    {
        if (result < apartment[i].fact_tax())
        {
            result = apartment[i].fact_tax();
            aptNum = i+1;
        }
    }
    cout << "\nThe apartment with max tax on the actual rate is #" << aptNum << endl;
 
    return 0;
}
Вложения
Тип файла: zip aptartment(residential_taxes).zip (340.2 Кб, 10 просмотров)
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
22.09.2014, 18:10
Apt.h
Кликните здесь для просмотра всего текста
C++
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
/// apartment(residential_taxes)_ver_2_8
//  Apt.h
#ifndef APT_H
#define APT_H
 
class Apt
{
    friend std::istream &  read(std::istream & is, Apt & item);
    friend std::ostream & print(std::ostream & os, const Apt & item);
 
    friend std::istream & operator>>(std::istream & is, Apt & item);
    friend std::ostream & operator<<(std::ostream & os, const Apt & item);
 
    private:
        static const int SQ_M_TAX   = 100 ;   // налог за кв. метр
        static const int NORM_AREA  = 18  ;   // норма площади на человека (в кв. метрах)
        static const int INV_REBATE = 4   ;   // делитель (льгота инвалидам)
        static const int VET_REBATE = 2   ;   // делитель (льгота ветеранам)
        static const int ST1_REBATE = 5   ;   // делитель (льгота живущим на первом этаже)
        static const int ST2_REBATE = 10  ;   // делитель (льгота живущим на втором этаже)
 
        int aptNum_     ;       // номер квартиры
        int numPers_    ;       // количество проживающих в квартире людей
        int aptArea_    ;       // площадь квартиры (в кв. метрах)
        int stage_      ;       // этаж
        bool isVet_     ;       // является ли жилец ветераном
        bool isInv_     ;       // является ли жилец инвалидом
 
    public:
        int stage_rebate() ;    // cумма скидки за этажность
        int inv_rebate()   ;    // cумма льгот инвалидам
        int vet_rebate()   ;    // cумма льгот ветеранам
        int sum_rebate()   ;    // сумма всех льгот и скидок
        int overnorm_tax() ;    // двойной тариф за лишние метры
        int norm_tax()     ;    // обычный тариф
        int stage_tax()    ;    // пониженный тариф за этажность
        int fact_tax()      ;   // квартирный налог (сумма к оплате)
};
 
#endif // APT_H


Apt.cpp
Кликните здесь для просмотра всего текста
C++
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/// apartment(residential_taxes)_ver_2_8
//  Apt.cpp
#include <fstream>      // дл¤ чтения из файла
#include <ostream>      // для вывода в файл
#include "Apt.h"
 
// Перегрузка оператора >>
std::istream & operator>>(std::istream & is, Apt & item)
{
    is >> item.aptNum_
       >> item.numPers_
       >> item.aptArea_
       >> item.stage_
       >> item.isVet_
       >> item.isInv_;
 
    return is;
}
 
// Перегрузка оператора <<
std::ostream & operator<<(std::ostream & os, const Apt & item)
{
    os << item.aptNum_  << '\n'
       << item.numPers_ << '\n'
       << item.aptArea_ << '\n'
       << item.stage_   << '\n'
       << item.isVet_   << '\n'
       << item.isInv_   << '\n';
 
    return os;
}
 
// Сумма скидки за этажность:
int Apt::stage_rebate()
{
    if (stage_ == 1) // если жилец живёт на 1 этаже
        return norm_tax() / ST1_REBATE; // 20% скидка
    else if (stage_ == 2) // если  живёт на 2 этаже
        return norm_tax() / ST2_REBATE; // 10% скидка
    else // если живёт выше
        return 0; // нет скидки за этажность
}
 
// Сумма льгот инвалидов:
int Apt::inv_rebate()
{
    return norm_tax() / INV_REBATE;
}
 
// Сумма льгот ветеранов:
int Apt::vet_rebate()
{
    return norm_tax() / VET_REBATE;
}
 
// Сумма всех льгот и скидок для жильцов этой квартиры:
int Apt::sum_rebate()
{
    if (isVet_ == true) // если жилец ветеран (или и ветеран и инвалид одновременно)
        return vet_rebate() + stage_rebate();
 
    else if (isInv_ == true) // если не ветеран, но инвалид
        return inv_rebate() + stage_rebate();
 
    else // если не ветеран и не инвалид
        return stage_rebate();
}
 
// Считаем вычеты за площадь сверх санитарной нормы:
int Apt::overnorm_tax()
{   // если жилец в квартире один
    if (numPers_ == 1)
        return 0; // не нужно платить за лишние кв. метры
 
    // если жильцов в квартире больше одного
    else // площадь сверх санитарной нормы умножаем на удвоенный тариф
        return (aptArea_ - (NORM_AREA * numPers_)) * (SQ_M_TAX * 2);
}
 
// Считаем тариф за 1 кв. метр:
int Apt::norm_tax()
{
    return NORM_AREA * SQ_M_TAX;
}
 
// Пониженный тариф за этажность:
int Apt::stage_tax()
{
    return norm_tax() - stage_rebate();
}
 
// Считаем итоговый квартирный налог:
int Apt::fact_tax()
{
    if (isVet_ == true) // если жилец ветеран (или и ветеран и инвалид одновременно)
        return norm_tax() + overnorm_tax() - stage_rebate() - vet_rebate();
 
    else if (isInv_ == true) // если не ветеран, но инвалид
        return norm_tax() + overnorm_tax() - stage_rebate() - inv_rebate();
 
    else // если не ветеран и не инвалид
        return norm_tax() + overnorm_tax() - stage_rebate();
}


P.S. Прошу прощения за топорный инглиш - в прошлых вариантах у меня в консоли вполне нормально работал вариант с кириллицей, но тут что-то перекосилось, стали упорно выводиться кракозябры и лень было разбираться, хотелось скорее сделать финальную версию, поэтому убрал русский текст и вставил перевод из гугл-переводчика.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2014, 18:10

Как в теге <i> сделать надпись с учетом наличия иконки?
Добрый день , вот панель из ссылок, как вставить под каждым надпись? &lt;div class=&quot;col-md-12 col-sm-12&quot;...

Найти возможного халявщика
Здравствуйте! У меня есть интернет и для удобства (у меня несколько машинок) раздаю его по Wi-Fi через роутер D-Link DIR-320. И у меня...

В массиве А(35) найти минимум, определить его местоположение ( с учётом возможного повторения)
В массиве А(35) найти минимум, определить его местоположение ( с учётом возможного повторения). С++ Помогите пожалуйста!

Известны вероятность р1 возможного значения х1, математическое ожидание M[x]=13,6 и дисперсия D[x]=42,68. Найти закон распределения случайной величины
Задача: Дискретная случайная величина Х может принимать только два значения х1 и х2, причем х1&lt;x2. Известны вероятность р1...

Access запросы: подсчет жилплощади
Приветствую, я перерыл весь интернет никак не могу найти как сделать запрос который будет считать - Цена за единицу площади*площадь...


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

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru