Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вибір засобу вирішення проблеми




Для винаходу нового методу шифрування можуть підійти декілька програмних продуктів, як, наприклад, Delphi, C, C++, Excel, Pascal та інші.
Спочатку було обрано Excel:
Табличний процесор Excel фірми Microsoft призначений для введення, зберігання, обчислення і виведення великих обсягів даних у вигляді, зручному для аналізу і сприйняття інформації. Усі дані зберігаються й обробляються у вигляді окремих або зв'язаних таблиць. Одна або кілька таблиць складають «робочу книгу», У цьому випадку таблиці називаються робочими аркушами цієї книги, аркуші можна видаляти, доповнювати або переміщати з однієї робочої книги в іншу. Фізично на диску зберігається вся книга у вигляді окремого файла з розширенням «xls».
Можливості Excel дуже високі (обробка тексту, управління базами даних). Програма настільки потужна, що в багатьох випадках перевершує спеціалізовані програми-редактори або програми баз даних. Таке різноманіття функцій може спочатку навіть відлякувати, але в міру набуття досвіду користувач зможе оцінити майже безмежні можливості Excel.
За майже двадцятилітню історію табличних розрахунків із застосуванням персональних комп'ютерів вимоги користувачів до подібних програм істотно змінилися. Спочатку основний акцент у такій програмі, як, наприклад, VisiCalc, робився на обчислювальні функції. Сьогодні положення змінилося. Поряд з інженерними й бухгалтерськими розрахунками організація і графічне зображення даних набуває все більшого значення.
Крім того, різноманіття функцій, пропоноване такою обчислювальною й графічною програмою, не повинне ускладнювати роботу користувача. Програми для Windows створюють для цього ідеальні передумови.

Вікно Excel містить безліч різних елементів. Деякі з них властиві всім

програмам у середовищі Windows, інші є тільки у вікні Excel. Уся робоча

область вікна Excel зайнята чистим робочим аркушем (або таблицею),

розділеним на окремі комірки. Стовпці озаглавлені буквами,

рядками-цифрами.
Як і в багатьох інших програмах у середовищі Windows, ви можете

представити робочий аркуш у вигляді окремого вікна зі своїм власним

заголовком — це вікно називається вікном робочої книги, тому що в такому

вікні можна обробляти кілька робочих аркушів.

На одній робочій сторінці у вашому розпорядженні буде 256 стовпців і 16

384 рядки. Рядки пронумеровані від 1 до 16 384, стовпці названі буквами

і комбінаціями букв. Після 26 букв алфавіту у стовпчиках ідуть

комбінації букв від АА, АВ і далі.

У вікні Excel, як і в інших програмах під Windows, під заголовком вікна

знаходиться рядок меню. Трохи нижче знаходяться панелі інструментів

Стандартна і Форматування. Кнопки на панелі інструментів дозволяють

швидко й легко викликати багато функцій Excel.

Змінити тип, розмір шрифту або написання тексту можна, виділивши

відповідні комірки і відкривши меню Формат/Комірки. Після цього на

екрані з'явиться Діалог, у якому будуть указані різні шрифти. Можна

вибрати будь-який шрифт зі списку запропонованих. При виборі шрифту

можна переглядати його написання У вікні Приклад. Для вибору типушрифту, його розміру і стилю можна використовувати поля й кнопки,розташовані на панелі інструментів. Типи шрифтів Сьогодні для оформлення таблиць і документіввикористовується велии кількість шрифтів. Один із найголовнішихфакторів, який необхідно брати де уваги, — це чіткість тексту,оформлення тим чи іншим шрифтом. Поряд із вибором типу шрифту і його розміру можна вибрати стиль шрифтекурсив, напівжирний або з підкресленням. Використовують ці стилі тількидля виділення важливої інформації у тексті документів і таблиць. В Excel можна виділити в таблиці деякі поля за допомогою кольору йвізерунка фону, щоб привернути до них увагу. Це виділення требавикористовувати обережно, щоб не перевантажити таблицю. Виберіть вкладку Вигляд у Формат/Комірки. Тут для виділених комірок можна вибрати колір забарвлення за допомогою палітри. Якщо необхідно, щоб записи перетворилися на зручний документ, требаздійснити форматування чисел у комірках. Найпростіше форматуютьсякомірки, куди заносяться грошові суми. Для цього потрібно виділитиформатуваня комірки, потім вибрати команду меню Формат/Комірки, а вдіалозі, що з'явився — вкладку Число. Вибирають в групі зліва рядокГрошовий. Праворуч з'явиться кілька можливих варіантів форматів чисел.Формат числа визначається цифровим шаблоном, що може бути кількох типів. У пакеті Excel є програма перевірки орфографії текстів, що знаходятьсяв, І комірках робочого аркуша, діаграмах або текстових полях. Щобзапустити її, треба виділити комірки або текстові поля, у яких необхідноперевірити орфографію. Якщо потрібно перевірити весь текст, включаючирозташовані в ньому об'єкти, виберіть комірку, починаючи з якої Excelповинен шукати помилки. Далі потрібно вибрати команду Сервіс/Орфографія. Потім Excel почне перевіряти орфографію в тексті. Можна почати перевірку за допомогою клавіші F7. Якщо програма знайдепомилку або не знайде певного слова у словнику, на екрані з'явитьсядіалог Перевірка орфографії. Усі математичні функції описуються в програмах за допомогою спеціальнихсимволів, названих операторами. Існують різні типи операторів.Математичні оператори служать для виконання арифметичних дій надчислами. Текстовий оператор з'єднання призначений для того, щоб пристворенні зразка документа не вносити, наприклад, щоразу вручну дати —програма сама звертатиметься до комірки, у якій проставили дату. За умовчанням при введенні, редагуванні формул або при заповненніформулами комірок усі обчислення формул у робочому аркуші відбуваютьсяавтоматично. Однак при складних інтеграційних розрахунках на цевитрачається багато часу, тому можна скасувати автоматичне обчислення.Для цього потрібно вибрати команду меню Сервіс/Параметри, далі у вкладціОбчислення вибрати опцію Вручну й установити перемикач Переобчислюватиперед збереженням. Після цього всі обчислення в робочому аркушіздійснюватимуться тільки після натискання клавіші Обчислити. Функції покликані полегшити роботу при створенні й взаємодії зелектронними таблицями. Найпростішим прикладом виконання розрахунків є операція додавання. Скористаємося цією операцією для демонстраціїпереваг функцій. Не використовуючи систему функцій, потрібно будевводити у формулу адресу кожної комірки окремо, додаючи до них знак плюс, або мінус. У результаті Формула виглядатиме так: =B1+B2+B3+C4+C5+D2 Помітно, що на написання такої формули затрачено багато часу, томуздається, Що простіше цю формулу було б обчислити вручну. Щоб швидко ілегко підрахувати суму в Excel, необхідно усього лише задіяти функціюсуми, натиснувши кнопку з зображенням знака суми, або з Майстра функційможна й вручну вдрукувати ім'я функції після знака рівності. Після іменіфункцій треба відкрити дужку, ввести адреси областей і закрити дужку. Урезультаті формула виглядатиме так: =СУМ (B1:B3;C4:C5;D2). Використання блоків комірок, або областей, як аргументів для функцій єДоцільним, оскільки воно, по-перше, більш наочне, а по-друге, при такомузаписі програмі простіше враховувати зміни на робочому аркуші.Наприклад, треба підрахувати суму чисел у комірках з А1 по А4. Це можназаписати так: =СУМ (А1;А2;АЗ;А4) Або те саме іншим способом: =СУМ (А1:А4) Працювати з електронними таблицями — це велике задоволення, але якби щевдалося перетворити сухі стовпці чисел у наочні діаграми й графіки Такиможливість дає Excel. В Excel є два різні способи збереження в пам'ятідіаграмі складених за вашими числовими даними: це, по-перше, «вбудовані»діаграми по-друге, «діаграмні сторінки». Вбудовані діаграми являютьсобою графіки, на кладені на робочу сторінку, які зберігаються в цьому жфайлі; у діаграмним сторінках створюються нові графічні файли. Створитивбудовану діаграму найпростіше за допомогою Майстра діаграм, що складаєчастину пакета Excel. Панель інструментів діаграм Діаграми можнастворювати не тільки за допомогою Майстра діаграм. Також це можна робити набагато швидше за допомогою панелі інструментів Діаграмам Увімкнути зображення цієї панелі на екрані можна за допомогою меню Вигляд Панелі інструментів. Для оформлення документів Excel пропонує, крім графіків і діаграм,можливість створювати інші графічні об'єкти, наприклад, викреслювати наекрані, а потім роздруковувати прямокутники, еліпси, прямі й кривілінії, дуги й т. ін. Можна також виконати малюнки за допомогою окремихграфічних об'єктів, і ніхто не здогадається, що вони виконані задопомогою Excel, а не спеціально графічного редактора. Для створення малюнків призначені кнопки, розташовані на панеліінструментів Малювання. Увімкнути зображення цієї панелі на екрані можназа допомогою кнопки, що знаходиться на панелі інструментів Стандартна. В усіх програмах, написаних для операційної системи Windows, користувачможе користуватися її буфером обміну (Clipboard). Він являє собоюособливу область пам'яті, що надається операційним середовищем урозпорядження різних програм. Використовуючи буфер, можна, працюючи,наприклад в Excel, перерватися і практично миттєво перейти в іншупрограму, яку Windows тримає для вас напоготові. Причому незалежно відпоточної програми перехід здійснюється за допомогою однієї і тієї жкоманди. Для цього й треба виділити відповідні комірки. Занести дані вбуфер, використовуючи для цього команду меню Правка/Копіювати абокомбінацію клавіш Ctrl +C. Тепер або сам Excel, або інша програма можевийняти дані з буфера за допомогою команди меню Правка/Вставити абооднієї з двох комбінацій клавіш: Shift+Insert або Clrl+V. З буфера обміну дані надходять у Word у вигляді таблиці. Ця програмарозуміє усі формати Excel. Гарнітура й розміри шрифту також зберігаютьсяв незмінному вигляді. Використовуючи меню обробки таблиць текстовогоредактора, можна обробляти в ньому дані. Excel може зберігати робочі аркуші в пам'яті в різних форматах. Щобзадати свій формат, треба вибрати команду меню Файл/Зберегти як, де єполе Тип файла. Там є список форматів, у які Excel може перетворити своїфайли. [10]

Excel було протестовано на алгоритмі Цезаря, ось що вийшло:

Як видно з малюнків, шифр abcdef було зашифровано ключем «2» і після розшифрування ми отримали cdefgh. Шкода, але Excel виявився дуже складним і незручним у використанні для кодування більш складних шифрів, тому на цьому робота з Excel завершилася.
Новий шифр був написаний на мові програмування С++:
С++ - це мова програмування високого рівня. С++ дозволяє писати програми під Windows. Програмування під Windows зараз дуже поширене в світі.
Мова Сі має свій синтаксис написання:
1) Підключається директива препроцесора. Рядки, що починаються з#, обробляються препроцессором перед компіляцією програми. Даний рядок дає вказівку препроцессору включити в нашу програму вміст файлу заголовків потоку вводу/виводу <iostream>, а також<conio.h> включає функцію _getch(), яка робить затримку екрану і за натискання будь-якої клавіші закриває консольне вікно.
2) int main() є частиною будь-якої програми на C++. Круглі дужки показують, що main - це програмний блок, який називається функцією (а по сучасному називається методом).
3) Рядок std::cout << "..."; виводить текст в консоль. Цей синтаксис потрібно просто запам'ятати. А в лапках можна писати що завгодно.
4) Коментарі в програмі дуже необхідні. Коментарі у програмі С++ пишуться після подвійного слеша. Приклад:
//коментар
4) С++ є велика різниця між великою літерою і маленькою. Якщо у Паскалі цієї різниці немає, то в С++ це різні слова, наприклад:
std::cout << "Привіт!"; //помилки не буде
std::Cout << "Привіт!"; //буде помилка
Программа
#include<iostream> //директива препроцесора
#include<conio.h> //директива препроцессора
int main() //точка входу

 

{
std::cout << "Welcome in the C++!"; //вивід у консоль
_getch(); //затримка екрану до натискання клавіші
return 0; //показує, що програма успішно завершено
}
Результат роботи програми:

Cin - це об'єкт вхідного потоку простору імен std:
std::cin >> x;
У цьому коді програми використовується оператор cin, операція взяття з потоку ">> щоб отримати від користувача введене їм значення. Об'єкт std::cin забирає інформацію, що вводиться користувачем з стандартного потоку вводу, який зазвичай є клавіатура. Функція Cin достатньо интелектуальна, щоб зрозуміти, яка інформація введена з клавіатури. Адже ми можемо ввести ціле число, а також можемо ввести дробове, сивмольное або текст.

Cout - це об'єкт вихідного потоку простору імен std::. Це неоголошений ідентифікатор. Його не потрібно оголошувати. Його потрібно тільки підключати до програми за допомогою слова include: #include <iostream>

std::cout <<"Вихідний потік";
У цьому коді програми використовується оператор cout, операція <<, щоб вивести на екран користувачеві певну інформацію. В даному випадку на екран відображається вихідний потік. Сout досить розумний, щоб визначити, що потрібно вивести на екран, тобто це буде мінлива дрібного числа або цілого або сивмольного.

Напишемо програму, яка оголошує два числа.
#include <iostream>
#include <conio.h>
void main () {

int x,y; //оголошуємо змінну

std::cout<<"X = "; //На екран виводиться "X = "
std::cin>>x; //вводимо з клавіатури число, наприклад: 5
std::cout<<"Y = "; //На екран виводиться "Y = "
std::cin>>y; //вводимо з клавіатури число, наприклад: 8

std::cout<<"x+y = "<<(x+y)<<std::endl;
//На екран монітора виводиться повідомлення "x + y = 13"

_getch(); //Екран не закривається, поки не натиснута будь-яка клавіша
}

Отже, ми бачимо, що в std::cout<<"x+y = "<<(x+y)<<std::endl; виводиться "x + y =". Після цього обчислюється результат суми і відразу ж виводиться результат.
Для дрібних чисел:
#include <iostream>
#include <conio.h>
void main () {
float x,y; //оголошуємо змінну дробового типу
float sum; //Змінна дробового типу для обчислення суми
std::cout<<"X = "; //На екран виводиться "X = "
std::cin>>x; //вводимо з клавіатури число, наприклад: 2.25
std::cout<<"Y = "; //На екран виводиться "Y = "
std::cin>>y; //вводимо з клавіатури число, наприклад: 4.89
sum = x + y; //Обчислення суми
std::cout<<"x+y = "<<sum<<std::endl;
//На екран монітора виводиться повідомлення "x + y = 7.14"
_getch(); //Екран не закривається, поки не натиснута будь-яка клавіша
}

Результат роботи програми:

Структури в мові С++ - це складові типи даних,створених з використанням інших типів. Розглянемо наступне визначення структури:
struct Time {
int hour; // годинник
int minute; // хвилини
int second; // секунди
};
Особливість структур в тому, що ми можемо створювати свої власні типи даних і оголошувати змінні цих типів даних.
У даному прикладі ми створили свою структуру Time, що складається з полів години, хвилини, секунди.
Приклад: Напишемо програму, яка вводить дані в змінну структури і виводить результат, який ми ввели з клавіатури:

#include<iostream>
#include<conio.h>
using std::cout;
using std::endl;
using std::cin;

struct Time {
int hour; // годинник
int minute; // хвилини
int second; // секунди
};
void main()
{
Time time;
cout<<"Vvedite time:\n";
cin>>time.hour>>time.minute>>time.second;
cout<<"Struct:\n";
cout<<time.hour<<":"<<time.minute<<":"<<time.second<<endl;
_getch();

}
Резульат роботи програми:

Цикли у мові С++ дозволяють програмісту визначити дії, які будуть повторюватися поки умова залишається дійсною.
Цикл for
Оператор циклу for має наступний синтаксис:
for (int i=0; i<20; i++) {дію}
Причому значення, змінні та умови можуть бути різними. Ми могли б написати так:
for (int i=-5; i!= 20; i++) {дію}

 

Цикл while
Оператор циклу while має наступний синтаксис:
while(i){дії}
Поки умова вірна, цикл буде працювати. Цей вид циклу найбільше піддається входу в безкінечний цикл. Ми могли б цей вид циклу записати так як і for:
int i = 0;
while(i<20){
дії
i++ }
Цикл do while
Оператор циклу do while має наступний синтаксис:
do{
дія
}while(i)
Цей цикл відрізняється від попередніх тим, що виконується хоча б один раз.
Приклад: Напишемо програму, яка використовує всі три види операторів циклу.
#include<iostream>
#include<conio.h>
using std::cout;
using std::endl;
using std::cin;
const int n = 5;
void main()
{
int mas[n];
cout<<"Vvedite masiv: \n";
for (int i = 0; i<n; i++)
{
cin>>mas[i];
}
i = 0;
cout<<"mi vveli takoy masiv: \n";
while(i<5){
cout<<mas[i]<<"\t";
i++;
}
i=0;
do{
mas[i] = mas[i]+5;
i++;
}while(i<5);
cout<<"\nMasiv posle dobavleniya + 5:\n";
for (i = 0; i<n; i++)
{
cout<<mas[i]<<"\t";
}
_getch();
}
Функція - це модуль в с++. Опції в мові С++ дозволяють створювати модульні програми, тобто програми складаються з модулів. Для написання програм, краще використовувати готові стандартні функції бібліотеки С++. Якщо ж ви хочете в програмі використовувати свою функцію, то необхідно оголосити прототип функції, після цього, в кінці програми написати реалізацію функції.
Функція може приймати значення або не приймати взагалі. Якщо функція не приймає параметри, то пишеться ім'я функції і порожні дужки, якщо функція приймає параметри, то в дужках через кому пишуться параметри.
Приклад: Написати функцію get(), set(). Set - функція встановлення значення в массив. Get - функція отримання значень, або друк.
#include<iostream>
#include<conio.h>
using std::cout;
using std::endl;
using std::cin;
const int n = 5;
void set(int []); //прототип функції встановлення значення
void get(int []); //прототип функції печатки значення
void main()
{
int mas[n];
set(mas); //виклик функції встановлення значення в програмі
get(mas); //виклик функції друку в програмі
_getch();
}
void set(int s[n]) //реалізація функції встановлення
{
cout<<"SET massiva:\n";
cout<<"Vvedite "<<n<<"elementov massiva: ";
for (int i = 0; i<n; i++)
cin>>s[i];
}
void get(int s[n]) //реалізація функції друку
{
cout<<"GET massiv:\n";
for (int i = 0; i<n; i++)
cout<<s[i]<<"\t";
cout<<endl;
} [11]
Переваги мови C++:
Швидкість роботи програм на С++ практично не поступається програмам на С, хоча програмісти отримали в свої руки нові можливості і нові засоби.
Масштабованість. На мові C++ розробляють програми для найрізноманітніших платформ і систем.
Можливість роботи на низькому рівні з пам'яттю, адресами, портами. (Що, при необережному використанні, може легко перетворитися на недолік.)
Можливість створення узагальнених алгоритмів для різних типів даних, їхня спеціалізація, і обчислення на етапі компіляції, з використанням шаблонів.
Підтримуються різні стилі та технології програмування, включаючи традиційне директивне програмування, ООП, узагальнене програмування, метапрограмування (шаблони, макроси).
Недоліки мови C++:
Наявність безлічі можливостей, приводить до того, що в С++ програми може легко закрастися важковловима помилка. Замість контролю з боку компілятора розробники вимушені дотримуватися вельми нетривіальних правил кодування. По суті, ці правила обмежують С++ рамками якоїсь безпечнішої підмови. Більшість проблем типобезпеки С++ успадкована від С, але важливу роль в цьому питанні грає і відмова автора мови від ідеї використовувати автоматичне управління пам'яттю (наприклад, збірку сміття). Так візитною карткою С++ стали вразливості типу «переповнювання буфера».
Погана підтримка модульності. Підключення інтерфейсу зовнішнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно уповільнює компіляцію, при підключенні великої кількості модулів. Для усунення цього недоліку, багато компіляторів реалізують механізм прекомпіляції заголовних файлів.
Недостача інформації про типи даних під час компіляції.
Мова C++ є складною для вивчення і для компіляції.
Деякі перетворення типів неінтуїтивні. Зокрема, операція над беззнаковим і знаковим числами видає беззнаковий результат.
Препроцесор С++ (успадкований від C) дуже примітивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) здійснювати деякі завдання метапрограмування, а з іншою, в наслідку своєї примітивності, він часто приводить до помилок і вимагає багато дій з обходу потенційних проблем. Деякі мови програмування (наприклад, Scheme і Nemerle) мають набагато могутніші і безпечніші системи метапрограмування (також звані макросами, але макроси С/С++ вони мало нагадують).
З кінця 1990-х в співтоваристві С++ набуло поширення так зване метапрограмування на базі шаблонів. По суті, воно використовує особливості шаблонів C++ в цілях реалізації на їхній базі інтерпретатора примітивної функціональної мови програмування, що виконується під час компіляції. Сама по собі ця можливість вельми приваблива, але, внаслідкок вище згаданого, такий код вельми важко сприймати і зневаджувати. Мови Lisp/Scheme, Nemerle і деякі інші мають могутніші і водночас простіші для сприйняття підсистеми метапрограмування. Крім того, в мові D реалізована порівнянна за потужністю, але значно простіша в застосуванні підсистема шаблонного метапрограмування.
Майбутній розвиток:
С++ продовжує розвиватися, щоб відповідати сучасним вимогам. Одна з груп, що займаються мовою С++ в її сучасному вигляді і що направляють комітету зі стандартизації С++ поради з її поліпшення, — це Boost. Наприклад, один з напрямів діяльності цієї групи — вдосконалення можливостей мови шляхом додавання в неї особливостей метапрограмування.
Стандарт С++ не описує способи іменування об'єктів, деякі деталі обробки винятків і інші можливості, пов'язані з деталями реалізації, що робить несумісним об'єктний код, створений різними компіляторами. Проте для цього третіми особами створено безліч стандартів для конкретної архітектури і операційних систем.
Проте (за станом на час написання цієї статті) серед компіляторів С++ все ще продовжується битва за повну реалізацію стандарту С++, особливо в області шаблонів — частини мови, зовсім недавно повністю розробленій комітетом стандартизації.
Одним із каменів спотикання у цьому питанні є ключове слово export, що використовується також і для розділення оголошення і визначення шаблонів.
Першим компілятором, що підтримав export в шаблонах, став Comeau C++ на початку 2003 року (п'ять років після виходу стандарту). У 2004 році бета-версія компілятора Borland C++ Builder X також почала його підтримку.
Обидва цих компілятора засновані на зовнішньому інтерфейсі EDG. Інші компілятори, такі як Microsoft Visual C++ або GCC, взагалі цього не підтримують. Ерб Саттер (Herb Sutter), секретар комітету із стандартизації С++, рекомендував прибрати export з майбутніх версій стандарту унаслідок серйозних складнощів в повноцінній реалізації, проте згодом остаточним рішенням було вирішено його залишити. [12]




Поделиться с друзьями:


Дата добавления: 2015-07-13; Просмотров: 688; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.