Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

zadachi

.pdf
Скачиваний:
11
Добавлен:
31.05.2015
Размер:
694.99 Кб
Скачать

1.РАБОЧАЯ ПРОГРАММА КУРСА “МЕТОДЫ ПРОГРАММИРОВАНИЯ ”

1-й семестр (36 ч. – лекции / 36 ч. – лабораторные занятия)

Введение (1ч / 0 ч). Цель, содержание, значение, методические особенности предмета, связь с другими дисциплинами, обзор литературы.

1. Алгоритмы и основы языка С++ (9 ч / 10 ч).

Алгоритмы и способы их описания. Блок-схемы алгоритмов. Ввод (cin), вывод (cout). Директива #include. Идентификаторы, переменные и константы, типы данных. Выражения, арифметические и логические операции, операции сравнения и присваивания, инкремент ( ++ ), декремент( - -). Разветвляющиеся алгоритмы. Операторы if, switch. Тернарная операция. Циклические алгоритмы. Операторы цикла for, while, dowhile. Операторы break, continue. Операция запятая. Сложные циклы. Метод последовательного уточнения алгоритма. Тип char. Использование символов псевдографики, рисование в текстовом режиме. Введение в одномерные массивы и строки (без указателей): объявление, инициализация, ввод, вывод (в т.ч. цветной с помощью cprintf), анализ, преобразование, построение, поиск, сортировка.

2. Современные интегрированные среды систем программирования

(2 ч / 2ч).

Возможности интегрированных сред. Подготовка и редактирование текстов программ, работа с блоками (перемещение, копирование и др.), поиск и замена. Работа с файлами и окнами. Компиляция. Возможности отладчика. Установка некоторых параметров.

3. Функции (8 ч / 6 ч).

Понятие функции, правила их оформления. Функции с одним результатом, return. Передача параметров по значению. Фактические и формальные параметры. Функции типа void. Ссылочный тип, возврат результатов из функции с его помощью. Одномерные массивы и строки как параметры функции. Правила использования стандартных функций. Функции для работы в текстовом режиме. Область действия имен, локальные и глобальные переменные. Встраиваемые (inline) и внешние функции. Перегрузка функций. Параметры по умолчанию.

4. Основные понятия объектно-ориентированного программирования

(4 ч / 4 ч).

Понятие типов struct и class. Инкапсуляция. Поля и методы класса, встроенные и внешние методы. Атрибуты доступа private и public. Конструкторы и их параметры, перегрузка конструктора. Создание объектов.

5. Простые типы данных (8 ч / 8 ч).

Концепция типов в языках программирования, типы и их модификаторы в С++. Операция sizeof. Определение имен новых типов (typedef).

Целый тип. 2-я и 16-я системы счисления. Переводы целых чисел из одной системы счисления в другую. Представление целых чисел в памяти ЭВМ. Битовые операции и их использование, упаковка и распаковка информации. Задачи целочислен-

3

ной арифметики. Логический тип. Сравнение битовых операций с логическими. Сравнение логических величин. Связь между логическими операциями и оператором if. Символьный тип, его совместимость с целым типом. Кодовые таблицы. Ввод, вывод символов. Посимвольная обработка строк Вещественный тип. Перевод дробной части из одной системы счисления в другую. Представление чисел с плавающей точкой в памяти ЭВМ. Преобразование типов в выражениях и при присваивании.

Разработка классов для работы с простыми типами данных.

6. Матрицы (без указателей) (4 ч /6 ч). Объявление, способы инициализации матриц. Типы задач и их особенности: ввод, вывод, анализ построчный и всей матрицы, преобразование, построение, обработка диагоналей и треугольников матрицы, сортировка, поиск элементов и строк, специальные матрицы.

Разработка классов для работы с одномерными массивами, строками и матри-

цами.

2-й семестр (34 ч – лекции / 34 ч – лабораторные занятия)

7. Структурированные типы данных (4 ч / 4 ч).

Структуры: способы объявления, массивы структур и массивы в структурах, сортировка структур, передача полей структуры и всей структуры в функции, вложенные структуры, сравнение с классами. Объединения, сравнение со структурой. Битовые поля. Перечисления.

8. Указатели (8 ч / 12 ч).

Понятие указателя, объявление, инициализация, операции * и &. Присваивание, сравнение указателей, арифметические операции с указателями. Возврат результатов из функции с помощью указателей. Указатели на структуры. Связь указателей и строк: объявление строк, инициализация, строковые функции, их классификация и использование, типы задач для работы со строками, способы передачи строк в функции. Связь указателей и одномерных и двухмерных статических массивов, способы организации циклов при использовании указателей в массивах. Способы передачи массивов в функции.

9. Ввод, вывод, работа с файлами (8 ч / 6 ч).

Ввод, вывод в С и в С++, понятие баз данных. Понятие потока и файла, их типы, способы и порядок работы с файлами. Обзор и классификация функций ввода, вывода. Форматированный консольный ввод, вывод. Функции scanf и printf, fscanf и fprintf. Объявление, создание, чтение и обработка текстовых файлов (fputs, fgets, putc, getc).Функции fread и fwrite и их использование. Последовательный и прямой доступ ( fseek и другие функции).

10. Указатели и динамическая память (10 ч / 12 ч).

Массив указателей и его использование. Распределение динамической памяти (new, delete). Динамические одномерные массивы и матрицы. Указатели на указатели. Указатели на функции, массив указателей на функции.

Однонаправленный список: определение, объявление, обозначения, два способа создания списка, просмотр списка, сравнение с просмотром массива. Вставка одного элемента списка, удаление одного элемента, объединение просмотра и вставки и (или) удаления нескольких элементов списка, фиктивный элемент списка. Виды спи-

4

сков, особенности стека, очереди, дерева. Преимущества и недостатки списков, сравнение с массивом.

11. Современные технологии и методы программирования (4 ч / 0 ч).

История развития методов и технологий программирования. Программирование под DOS и Windows, программирование в Internet и в системах компьютерной математики. Объектно-ориентированное и визуальное программирование: история, идеи и принципы, возможности. Обзор современных систем программирования.

Методы и этапы разработки алгоритмов и программ: модульное и структурное программирование; проектирование сверху-вниз, снизу-вверх. Стиль программирования. Компиляция программ, директивы компиляции. Тестирование и отладка программ: принципы, методы, этапы, подготовка тестовых данных, их виды. Оптимизация программ, их качество и надежность. Особенности разработки больших программных комплексов.

Литература

1. Керниган Б. и др. Язык программирования Си. М.: Финансы и статистика,

1992.

2.Основы алгоритмизации и программирования. Язык Си: Пособие для студентов БГУИР / Демидович Е. Н. Мн., 2001. 440 с.

3.Подбельский В. В., Фомин С. С. Программирование на языке Си. М.: Финансы и статистика, 1999. 600 с.

4.Подбельский В. В. Язык С++: Учеб. пособие. М.: Финансы и статистика, 2000. 560с.

5.Шилдт Г. Программирование на BORLAND C++ для профессионалов. Мн.:

ООО«Попури», 1999. 800 с.

6.Шилдт Г. Самоучитель С++. 3-е изд. СПб.: БХВ, 2002. 688с.

7.Дейтел Х. М., Дейтел П. Дж. Как программировать на С++. М.: Бином, 1998.

1020 с.

8.Крэйг Арнуш. Освой самостоятельно Borland C++5. М.: Бином, 1997. 719 с.

Сборники задач по программированию:

9.Абрамов С. А. и др. Задачи по программированию. М.: Наука, 1988. 224с.

10.Аленский Н.А. и др. Задачи и методические рекомендации по программиро-

ванию. Мн.: БГУ, 1990. 67 с.

11.Заданнi i метадычныя рэкамендацыi па вылiчальнай практыцы па курсу “Метады праграмiравання i iнфарматыка”: Вучэбна-метадычны дапаможнiк для студ. мех.- мат. фак. /Аут.-склад. Расолька Г. А., Шыбут А. С., Кузняцова Л. Л.. Мн.: БДУ, 2001. 48 с.

12.Касьянов В. Н., Сабельфельд В. К. Сборник заданий по практикуму на ЭВМ.

М.: Наука., 1986. 272 с.

13.Кравчук А. И., Кравчук А.С. Сборник лабораторных работ и примеров решения задач по алгоритмизации и программированию на языке СИ: Учеб.-метод. пособие для студентов высших технических учебных заведений. Мн.: УП ”Технопринт”. 2002. 116 с.

5

2. РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ. ВВОД, ВЫВОД

1. Ввести число. Вывести 0 или 1 в зависимости от того, положительное число или неположительное. Выполнить это двумя способами.

#include <iostream.h>

 

 

#include <conio.h>

 

 

int main()

 

 

{ float x;

 

int result;

cout<<"The number ";

 

cin>>x;

cout<<"The first variant " ;

cout<<(x>0)<<endl;

cout<<"The second variant " ;

if (x>0) result=1;

 

 

else result=0;

 

 

cout<<result<<endl;

getch();

return 0;

}

 

 

2. Найти наибольшее из трех введенных чисел.

main()

 

{ int x,y,z,res1, res2;

 

cout<<"The first number ";

cin>>x;

cout<<"The second number ";

cin>>y;

cout<<"The third number ";

cin>>z;

cout<<"Max of numbers ("<<x<<" , "<<y<<" , "<<z<<" ) ";

if (x>y)

res1=x;

 

 

else

res1=y;

 

if (z>res1) res1=z;

cout<<”\nVariant 1

“<<res1<<endl;

res2=x>y?x:y;

 

res2=z>res2?z:res2;

cout<<" Variant 2 "<<res2;

 

getch();

 

 

return 0;

}

 

 

 

3. Вывести “Yes” или “No” в зависимости от того, точка с координатами x, y принадлежит области, ограниченной линиями y=-x, x=0 и y=-1, или нет (записать оператор if и операторы вывода).

if (y<= – x && x>= 0 && y>–1) cout<<"Yes"; else cout<<"No";

4. Дано x. Вычислить y = x*x, если x > 0, иначе y = 100.

Variant 1:

if (x>0) y=x*x; else y=100;

cout<<"y= "<<y;

Variant 2:

y = x>0?x*x:100;

cout<<"y= "<<y;

Variant 3:

cout<<"y= "<<(x>0?x*x:100);

 

5. Даны х, y. Вывести “+++” или “– ” в зависимости от того, x>y или нет.

6

Variant 1: if (x>y) cout<<”+++”; else cout<<“– ; Variant 2: x>y? cout<<" +++ " : cout<<“– ”;

6. Ввести целое число, представляющее оценку по старой пятибалльной системе. Вывести “не явился”, “неудовл.”, “удовл.”, “хорошо”, “отлично” в зависимости от оценки.

main()

{ int mark; clrscr(); cout<<"\n The mark:"; cin>>mark; switch (mark)

{case 0:

 

case 1: cout<<"Не явился " ;

break;

 

case 2: cout<<"Не удовл. ";

 

break;

 

case 3: cout<<"Удовл.";

 

break;

 

case 4: cout<<"Хорошо";

 

break;

 

case 5: cout<<"Отлично";

 

break;

 

default: cout<<" ERROR\n";

 

 

 

}

 

 

}

getch();

 

return 0;

 

 

 

7.

Нарисовать область плоскости, в которой и только в которой сле-

дующее логическое выражение истинно:

 

а) x>y && x<2 && y>-1;

 

б) x>y || x<2 && y>-1;

 

в) x>y && x<2 || y>-1;

 

г) x>y || x<2 || y>-1;

 

д) x>y && (x<2 || y>-1).

 

 

8.

Ввести три числа x, y, z. Вычислить

 

а) r = max(min(x, y), z);

б) r = max(x, 0) + min(y, z);

 

в) r = min(x, y, 0) + max(y, z);

 

 

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

9.Расположите четыре числа a, b, c, d в порядке возрастания их значений.

10.Даны длины трех отрезков A, B, C. Определить возможность построения треугольника и его вид (разносторонний, равнобедренный, равносторонний).

11.Найти действительные корни квадратного уравнения, если заданы его коэффициенты. Предусмотреть следующие варианты: два различных корня; один корень; нет действительных корней.

12.Даны два вещественных числа x, y. Вывести “Yes” или “No” в зависимости от того, точка плоскости с координатами (x, y) принадлежит кольцу, ограниченному окружностями, радиусы которых r и R (r<R) c общим центром в точке с координатами (a, b).

13.Даны два вещественных числа x, y. Если точка плоскости с координатами (x, y) принадлежит треугольнику с вершинами в точках (–2, 0),

7

(0, 2), (2, 0), то обе координаты увеличить в 10 раз, в противном случае x = x – 10, y = y – 10.

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

15.Вычислить значение функции

a2 b π, если K b π 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π

π

 

 

2

 

 

 

y

(b π)

 

 

 

c

 

 

,если K c

 

0,

 

2

2

 

 

0

 

 

 

 

 

 

 

 

 

востальныхслучаях.

 

 

 

 

 

 

 

 

 

 

 

 

 

16.Дана оценка по новой, 10-балльной системе. Вывести “не явился”, “неудовл.”, “удовл.”, “хорошо”, “отлично” в зависимости от оценки

иполучить оценку в старой 5-балльной системе.

3.ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ

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

main()

 

 

 

{ float x, y, res;

char c;

bool er;

 

clrscr();

cout<<"For EXIT --- the first number=1000 \n";

while (1)

 

 

 

{ er=false;

cout<<"\nThe first number: ";

cin>>x;

if (x == 1000) break;

cout<<"Operation: "; cin>>c; // или c=getchar(); или c=getch(); или c=getche();

cout<<" The second number:";

cin>>y;

switch (c)

 

 

{ case '+':

res=x+y;

break;

case '*':

 

 

case '.':

res=x*y;

break;

case '–':

 

 

case '_': res=x-y;

break;

case '/':

if (y!=0) res=x/y;

 

 

else er=true;

break;

default: er=true;

 

}

//

end of switch

if(er) cout<<" ERROR\n";

 

else {

cout<<x<<c<<y<<"="<<res<<endl;

}// end of if

}

// end of while

return 0;

 

8

}

2. Ввести координаты точек плоскости до тех пор, пока не введем точку с координатами (1000, 1000). Массивы не использовать. Найти количество точек, принадлежащих области из 1-й или 3-й четверти, ограниченной окружностями радиуса 3 и 1 c центром в начале координат.

int main()

 

{ int k=0;

float x,y;

clrscr();

cout<<"x=1000, y=1000 --- exit\n";

cin>>x>>y;

// ввод координат первой точки

while ( ! (x == 1000 && y==1000) )

 

{ if (( x*x+y*y <= 9

&& x*x+y*y >= 1)

&&

( x>0 && y>0

|| x<0 && y<0))

k++;

cin>>x>>y;

// ввод координат точек в цикле

}

 

 

 

cout<<k;

 

getch();

 

return 0;

 

 

 

}

 

 

 

3. Вывести квадраты чисел от 11 до 99 по 10 чисел в строке.

cout<<'\n';

// Вариант 1

for ( int i=11; i<=99; i++)

cout<<i*i<< (i% 10 == 0? '\n' : ' ');

cout<<endl;

// Вариант 2

for ( int i=11;

i<=99; i++)

printf("%6d%c", i*i, i%10 ==0? '\n':' ');

cout<<endl;

// Вариант 2

for (int i=11;

i<=99; i++)

{ printf("%6d",i*i);

//if (i%10 = = 0) cout<< '\n'; else cout<<' '); или if (!(i%10)) cout<< '\n'; else cout<<' ';

}

4. Последовательно ввести значения x, пока не введем 1000. Для каждого из них вычислить r = sin(x), если 0 < x < ; r = x3,если – <= x < 0; r = x2,если x < –2* или x > 2* ; r = 0 в остальных случаях.

#define Pi 3.1459

 

 

 

 

int main()

 

 

 

 

 

{ float x=0,r;

cout<<"1000 -- exit"<<endl;

 

cout<<" x

 

y\n";

 

 

 

while (x!=1000)

 

 

 

 

{

gotoxy(2, wherey());

cin>>x;

 

 

 

if (x<Pi && x>0)

 

r=sin(x);

 

 

 

else

if (x<0 && x>=–Pi )

r=x*x*x;

 

 

else

if (x<–2*Pi || x>2*Pi)

r=x*x;

 

 

 

else r=0;

 

 

 

gotoxy(20, wherey()-1);

cout<<r<<endl;

}

return 0;

}

 

 

 

 

 

 

 

 

9

 

 

5. Для заданного n в одном цикле вычислить n! и 2n.

main()

 

{ clrscr();

 

long int p=1, fact=1;

int n, b=2;

cout<<"n<17 n= ";

cin>>n;

for (int i=1; i<=n; i++)

 

{ p=p*b;

fact=fact*i;

}

cout<<b<< " ^ "<<n<<" = "<<p<< endl; cout<<n<<"! = "<<fact<<endl;

getch();

return 0;

}

 

6. Найти наибольшую цифру целого десятичного числа.

main()

 

 

{ long int a;

int

e_exit; int maxdig=0;

clrscr();

cout<<"\na="; cin>>a; a=abs(a);

while (a)

 

 

{

int d;

d = a%10;

 

if (d>maxdig)

 

maxdig = d;

a = a/10;

}

 

 

cout<<"The max digit:- "<<maxdig;

getch();

return 0;

}

 

 

7. Вычислить бесконечную сумму ряда с заданной точностью:

y 1

x

x2

x3

x4

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2 4

2 4 6

2 4 6 8

Считать, что требуемая точность достигнута, если очередное слагаемое по модулю будет меньше, чем заданная точность .

int main()

 

{ clrscr();

double x ,y, g, i, e;

cout<<"x=";

cin>>x;

cout<<"Epsilon=";

cin>>e;

g=y=1.0 / 2.0 * x;

 

for(i=4; fabs(g)>e; i+=2)

{ g=g*(-1)*x/i;

y=y+g;

}

 

y++;

cout<<y;

getch();

return 0;

}

 

8. a) Определить результат работы следующей программы.

б) Что изменится, если после оператора do удалить фигурные скобки?

10

в) Проанализировать результат, если изменить порядок операторов r *= b и cout<<r<<" ".

 

main()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{ clrscr();

long int r=1,

a=200,

b=2;

 

 

 

 

 

 

 

 

 

 

 

do

{ r*=b;

 

cout<<r<<" ";

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

} while (r<a);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getch();

return 0;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.

Цикл for(I=10; I>0; I– –) cout << I*I<<”

записать

с помощью сле-

дующих операторов:

a) while;

б) do…while.

 

 

 

 

 

 

 

 

10.

Для заданного n вычислить y (1

1

 

1

 

1

 

1

)n .

 

22

23

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

2n

11.

Вычислить приближенно значение бесконечной суммы

S 1 (

n

)2

(

n

)4

(

n

 

)6

с точностью , используя сле-

 

 

 

 

 

 

2 3 4

 

3 4 5

 

4 5 6

 

 

 

 

 

 

 

 

 

 

 

 

 

дующие операторы: a) for;

б) while;

в) do … while.

 

 

 

 

 

 

12.

Вывести таблицу значений функции y =

 

a x2

b x c

 

 

при из-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

менении x от u до v с шагом h = (v u)/(n – 1), если u, v, n заданы.

13.Для натурального числа найти первую цифру и сумму его цифр.

14.Определить, является ли целое число симметричным, т. е. таким числом, которое одинаково читается слева направо и справа налево (палиндром, перевертыш). Например, числа 123321, 202, 9889, 5555, 8.

15.Определить, является ли целое число простым.

16.Перевести целое число из десятичной системы счисления в двоичную, используя алгоритм деления на 2.

17.Перевести целое число из десятичной системы счисления в шестнадцатеричную, используя алгоритм деления на 16.

18.Найти приближенно, с точностью до 0,001, минимум функции

y a x2 b x c на отрезке [u, v ].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

x3

 

 

 

19. Вычислить значение интеграла I

 

 

 

 

 

dx по формуле прямо-

 

x

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

1

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

угольников I h f (xi ), где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b a

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

, xi x0 i h;

x0

a, xn

b,

f (x)

 

 

подынтегральная

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

функция. Массив x не формировать.

 

 

 

 

 

 

 

 

 

 

 

 

 

20. Вычислить y=n

 

с заданной погрешностью , используя сле-

x

дующую формулу: y

 

x, y

 

y

 

1

(

 

x

y

 

),

k 1,2,3, . Вы-

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

k

 

k 1

 

n ykn 11

 

 

 

k

1

 

 

числения прекращаем, если

 

yk yk 1

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

4. ОДНОМЕРНЫЕ МАССИВЫ (ВЕКТОРЫ)

1. Ввести одномерный массив (дальше в тексте “массив”) с экрана. Найти его наибольший и наименьший элементы и переставить их, т. е. на место каждого наибольшего поместить наименьший элемент, на место каждого наименьшего поместить наибольший элемент.

int main()

 

 

 

 

 

 

{

clrscr();

 

const n=5;

int a[10],

i,

max1,

min1,

Nmin,

Nmax;

 

 

 

 

for (i=0;

i<n;

i++)

 

 

 

 

{

cout<<"a["<<i<<"] ";

cin>>a[i];

 

 

 

}

 

 

 

 

 

 

 

min1=a[0];

 

max1=a[0];

 

 

 

Nmin=0;

 

 

Nmax=0;

 

 

 

for (i=0;

i<n;

i++)

 

 

 

 

 

if (min1>a[i])

 

 

 

 

 

{

min1=a[i];

Nmin=i;

 

 

 

 

}

 

 

 

 

 

 

 

else

if (max1<a[i])

 

 

 

 

 

 

{

max1=a[i];

Nmax=i;

 

 

 

 

 

}

 

 

 

 

 

cout<<"Max "<<max1<<" number "<<Nmax<<endl;

 

 

cout<<"Min "<<min1<<" number "<<Nmin<<endl;

 

 

for (i=0; i<n; i++)

 

 

 

 

 

if (max1==a[i])

a[i]=min1;

 

 

 

 

else if (min1==a[i]) a[i]=max1;

 

 

 

 

for (i=0;i<n;i++)

 

 

 

 

 

cout<<"a["<<i<<"]= "<<a[i]<<endl;

 

 

 

getch();

 

 

return 0;

 

 

 

}

 

 

 

 

 

 

 

2. Ввести массив с экрана. Найти сумму всех чисел до первого нуля и его номер. Если нуля нет, вывести сумму всех чисел массива.

int main()

 

{ const n=5;

int a[n], i;

for(i=0; i<n; i++)

cin>>a[i];

int n2=–1 ,s=0;

i=0;

while (i<n )

 

{ if (a[i]==0)

 

{ n2=i+1;

break;

}

 

s+=a[i++];

 

}

if (n2 == –1) cout<<"No 0, sum of all elements = "<<s; else { cout<<"Yes, "<< "number of the first 0 = "<<n2;

12

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]