Программа на языке паскаль для вычисления функции

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

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

Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет.

Получите невероятные возможности

1. Откройте доступ ко всем видеоурокам комплекта.

2. Раздавайте видеоуроки в личные кабинеты ученикам.

Паскаль для новичков 3 — задачи: площадь прямоугольника, объем параллелепипеда и тд.

3. Смотрите статистику просмотра видеоуроков учениками.
Получить доступ

Конспект урока «Запись вспомогательных алгоритмов на языке Паскаль. Функции»

На прошлых уроках мы узнали метод последовательного конструирования алгоритмов, при котором задача последовательно разбивается на подзадачи, пока они не станут понятны исполнителю. А также, что некоторые подзадачи бывает удобно оформить в виде вспомогательных алгоритмов, которые целиком используются в составе других. Вспомогательные алгоритмы в языке Pascal записываются в виде именованных последовательностей команд, которые называются подпрограммами. Подпрограммы делятся на процедуры и функции.

· Что такое функция?

· Чем отличается функция от процедуры

· Как записывается функция?

· При решении каких задач можно применять функции?

И так, ещё одним видом подпрограмм, помимо процедур, являются функции. Функцией называется подпрограмма, возвращающая всего одно значение. Оно сохраняется в ячейке памяти с именем, которое совпадает с названием функции. То есть функция принимает на вход несколько или одну переменную, а по выполнении команд возвращает всего одну переменную, с именем, которое совпадает с названием функции, в отличие от процедуры, которая может возвращать несколько переменных.

Схема работы функции

Запись функции в программе похожа на запись процедуры. Функции записываются между разделом описания переменных и телом основной программы в любом удобном порядке. В начале, записывается служебное слово function, после которого идёт имя функции. Оно, как имя процедуры не должно совпадать с именем программы или переменных.

Оно может содержать несколько цифр, букв латинского алфавита или знаков подчёркивания. И может начинаться с буквы латинского алфавита или знака подчёркивания. Далее в круглых скобках, следует перечисление входных параметров с указанием типов. После скобок следует двоеточие и тип возвращаемого значения, после которого ставится точка с запятой.

Урок 21. Подпрограммы. Функции на языке Паскаль

Затем, если в процессе работы функции нужны промежуточные переменные, как и при записи процедуры, следует раздел описания переменных функции. Названия переменных и параметров функции могут совпадать с именами переменных в основной программе или других функциях, поэтому их стоит выбирать для решения данной подзадачи.

Затем между служебными словами begin и end следует тело функции. Так как значение возвращаемое функцией сохраняется в переменную, название которой совпадает с её названием, тело функции должно содержать хотя бы одну команду присваивания переменной с этим названием какого либо значения. Как и при записи процедуры после служебного слова end следует точка с запятой.

Схематичная запись функции

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

После имени функции в круглы скобках, как и при записи процедуры задаются её входные параметры, в качестве которых могут быть заданы как переменные, так и константы. Так, как функция имеет один выходной параметр с названием, совпадающим с названием функции, в отличии от процедуры, выходные параметры в круглых скобках не перечисляются. Так же как и при записи процедуры, при перечислении параметров стоит соблюдать их порядок следования и совместимость типов.

Схематичный приме вызова функции

Задача: Выпуклый n-угольник задан координатами своих вершин в порядке их обхода по контуру. Написать программу для вычисления его площади.

Составим математическую модель. Мы еще не знаем как найти площадь выпуклого многоугольника, поэтому разобъем его на отдельные треугольники, проведя из его первой вершины отрезки к остальным. Таким образом у нас получится n — 2 треугольника, площади которых мы уже можем найти. Вспомним что площадь треугольника можно найти, воспользовавшись формулой Герона,, где a, b и c – длины сторон треугольника, а p – его полупериметр.

Для того, чтобы воспользоваться формулой Герона для вычисления площади треугольника, нам необходимо знать длины его сторон. Они равны расстояниям между вершинами треугольника. Вспомним что расстояние между двумя точками на координатной плоскости можно найти, по следующей формуле , где x и y – координаты соответствующих точек.

Математическая модель решения задачи

Составим блок-схему алгоритма решения задачи. Обозначим в ней x — массив координат x вершин, у — массив координат y, n — количество вершин многоугольника, i — номер текущей вершины, r — площадь n-угольника, а так же мы используем вспомогательные алгоритмы d — нахождения расстояния между двумя точками на координатной плоскости и s — нахождения площади треугольника по формуле Герона.

Вначале мы должны считать значение n, после чего запишем цикл «для i от 1 до n», в котором будет команда считывания координат i-той вершины n-угольника. Так, как наш алгоритм будет сводится к расчёту суммы площадей треугольника, как и в алгоритме нахождения суммы элементов массива присвоим переменной r значение 0. Далее будет следовать цикл вычисления площади n-угольника.

Мы разобъем его на треугольники, координатами вершин которых будут вершины n-угольника с номерами 1, так, как из этой вершины мы проводили разделительные отрезки, а так же любые две соседние вершины с номерами i и i + 1. Так мы запишем цикл «для i от 2 до n — 1». Он будет содержать всего одну команду, увеличения переменной r на значение площади очередного треугольника, то есть r:=r+s(…). В качестве входных параметров для функции s() будут длины сторон треугольника, которые, мы вычислим с использованием вспомогательного алгоритма d(), его параметрами в первом случае будут координаты первой и i-той вершин, во втором – i-той и i + 1, а в третьем — первой и i + 1. В конце нам останется лишь вывести значение переменной r.

Читайте также:
Какие программы относятся к векторным графическим редакторам

Блок-схема алгоритма решения задачи

Запишем программу по данной блок-схеме. Назовём её area, что в переводе с английского языка означает площадь. По смыслу задачи координаты точек и значение площади могут быть дробными числами. То есть нам понадобится два массива, x и y из 100 элементов типа real.

Обратим внимание что запись массива вещественных чисел отличается от записи массива целых чисел лишь типом элементов. Ещё нам понадобится переменная r так же типа real. И переменные n и i типа integer.

Раздел описания переменных программы

Между служебными словами begin и end запишем тело программы. Выведем поясняющее сообщение о том, что это программа расчета площади многоугольника и запрос на ввод количества вершин. Теперь запишем команду считывания n. Запишем цикл for i:=1 to n do, который будет содержать команду вывода на экран запроса на ввод координат i-той вершины, а так же команду их считывания.

Теперь запишем команду присваивания переменной r значения 0 и цикл вычисления площади многоугольника. Это будет цикл for i:=2 to n-1 do. Он будет содержать всего одну команду увеличения числа r на значение площади треугольника с вершинами, которые будут вершинами многоугольника с номерами 1, i и i + 1. Для этого в составе оператора суммы его параметром будет указано значение функции вычисления площади треугольника s(), которую мы оформим позже, она будет принимать на вход длины сторон треугольника, которые мы найдем с помощью функции расчета расстояния между двумя точками на координатной плоскости. В первом случае её параметрами будут координаты вершин с номерами 1 и i, во втором — i и i + 1 и в третьем 1 и i + 1.

Теперь нам остается лишь вывести поясняющее сообщение с текстом «Площадь заданного треугольника равна», и значение переменной r.

Тело основной программы

Оформим функции для нашей программы. Начнем с функции нахождения расстояния между двумя точками. Запишем служебное слово function, и название функции d. Она будет принимать на вход координаты двух точек x1, y1 и x2, y2 все типа real.

Данная функция будет возвращать значение расстояния между двумя точками, которое может быть дробным, то есть тип возвращаемого значения будет real. Промежуточных переменных в данной функции не потребуется. Между служебными словами begin и end запишем тело функции. Оно будет содержать только одну команду, присваивание переменной d значения расстояния между двумя точками, которое рассчитано по формуле из математической модели. Функция извлечения квадратного корня, на языке Паскаль, записывается командой sqrt, после которой в круглых скобках указывается число или выражение из которого требуется извлечь квадратный корень.

Код функции вычисления расстояния между двумя точками

Теперь напишем функцию нахождения площади треугольника по формуле Герона. Запишем служебное слово function и название функции s. Входными параметрами будут значения длин сторон треугольника: a, b и c типа real. Возвращаемое значение, площадь треугольника, может быть дробной, поэтому оно тоже будет типа real.

В этой функции нам понадобится промежуточная переменная p типа real, которая будет хранить значение полупериметра треугольника. Запишем тело функции, она будет содержать команду вычисления полупериметра. Для этого достаточно найти сумму длин сторон треугольника и разделить её пополам, а также команду присваивания переменной s площади треугольника, рассчитанной по формуле Герона.

Код функции вычисления площади треугольника

Придумаем несколько тестов для программы. В качестве многоугольника зададим прямоугольник с координатами вершин: 0; 0, 0; 4, 8; 4 и 8; 0. Для себя площадь данного прямоугольника можно рассчитать, умножив его длину на ширину. 8 * 3 = 32.

Прямоугольник из первого теста

Придумаем ещё один тест. Для этого достаточно к прямоугольнику из прошлого теста дорисовать равнобедренный треугольник сверху, координаты его боковых вершин будут совпадать с координатами верхних вершин прямоугольника, а верхняя вершина будет находиться в точке с координатами 4; 7. Площадь добавленного треугольника мы можем рассчитать по формуле площади равнобедренного треугольника, умножив его высоту 3, на половину основания 4, его площадь равна 12. Добавим к этому результату площадь прямоугольника и получим, площадь получившегося пятиугольника равной 44.

Пятиугольник из второго теста

Введем данные из первого теста в программу. Программа вывела что площадь заданного многоугольника равна тридцати двум, данный результат соответствует ожидаемому.

Результат работы программы по первому тесту

Введем данные из второго теста в программу. Программа вывела что площадь заданного многоугольника равна сорока четырем, данный результат соответствует ожидаемому. Так, как результаты работы программы в обоих тестах соответствуют ожидаемым – задача решена верно.

Результат работы программы по второму тесту

Важно запомнить:

· Функцией называется подпрограмма, возвращающая всего одно значение, которое записывается в переменную с именем, совпадающим с именем функции.

Программа на языке паскаль для вычисления функции

Внимание Скидка 50% на курсы! Спешите подать
заявку

Профессиональной переподготовки 30 курсов от 6900 руб.

Курсы для всех от 3000 руб. от 1500 руб.

Повышение квалификации 36 курсов от 1500 руб.

Лицензия №037267 от 17.03.2016 г.
выдана департаментом образования г. Москвы

Разработка компьютерной программы на языке Паскаль для проведения простого теплофизического расчета

Техническое задание на курсовой проект

Основа тела программы

Расчет основных параметров

Исследование температурных полей

Исследование средней температуры

Исследование потока тепла на границе

Разбор практических примеров

Техническое задание на курсовой проект

«Разработка компьютерной программы на языке Паскаль для проведения простого теплофизического расчета»

Созданная диалоговая компьютерная программа, должна иметь возможность рассчитывать для момента времени (изложенного в варианте задания):

Читайте также:
Как подписать файл электронной подписью программа

— удельный расход тепла;

— тепловой поток на поверхности рассматриваемого тела.

Компьютерная программа должна иметь возможность:

отображать результаты в табличном виде;

отображать результаты в графическом виде (семейство кривых) на экране компьютера;

сохранять полученные результаты во внешних файлах.

Требования к расчетам, полученным с помощью программы:

выбор параметров расчета должен осуществляться на основе базы данных теплофизических параметров;

результаты расчета представляются в размерном и безразмерном видах

2. Постановка задачи

Задача для проведения теплофизического расчета с помощью программы написанной на языке Pascal

Температурное поле внутри полого цилиндра при смешанных граничных условиях второго и третьего рода при qv =0; b = R / R 1=( R 2- R 1)/ R 1= k -1; k = R 2/ R 1>1 и тепловом потоке на внутренней поверхности трубы — экспоненциально убывающей функции f 1= exp (- PdF 0); f 2= T 0 определяется по формуле:

 d – коэффициент Предводителева

3. Основа тела программы

tmenuarr = array[1..9] of string[20];

mas_ip: array[1..numpar] of string;

mas_znp: array[1..numpar] of string;

mas_rpar: array[1..numpar] of string;

mas_otpole: array[1..numx] of real;

mas_pole: array[1..numfo,1..numx] of real;

mas_xrteplo: array[1..numfo] of real;

mas_ptep: array[1..numfo] of real;

mas_fur:array[1..numfo] of real;

writeln(‘Press any key to continue. ‘);

procedure line80(s: char);

for i:=1 to 80 do write(s);

for i:=1 to num do

if (i<>num) then write(‘ | ‘)

until+ (ich>=1) and (ich

writeln(‘Year: 2006; Course: 2; Groupe: FT-24; Student: Lubichenko Oleg; Project # 1’);

for i:=1 to numpar do

write(‘Output to files’);

write(‘Output to file of config»s’);

for i:=1 to numpar do

Данная блок-схема отображает основные действия, которые может воспроизводить программа.

Данная блок-схема отображает алгоритм действия программы.

5. Расчет основных параметров

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

if o_parcal[2]=’Cylinder’ then m:=1;

if o_parcal[2]=’Ball’ then m:=2;

writeln(‘ am= ‘,am:5:2,’ qv= ‘,qv:5:2,o_razm [9],’ r= ‘,r:5:2,o_razm [8]);

writeln(‘ de= ‘,de:5:2,o_razm [3],’ he= ‘,he:5:2,o_razm [4 ]);

writeln(‘ t0= ‘,t0:5:2,o_razm [7],’ tc= ‘,tc:5:2,o_razm [6],’ lam= ‘,lam:5:2,o_razm [5]);

writeln(‘ Po= ‘,po:12:5);

for i:=1 to numfo do begin

for j:=1 to numx do begin

o_masF [i,j]:=abs(round(o_masF [i,j]*10000)/10000.0);

p1:=o_rptngt[1]; if abs(p1)

for i:=1 to numfo do

if m=0 then begin

for i:=1 to numfo do begin

tm:=o_masF [i,1]+o_masF [i,numx];

for j:=2 to numx-1 do

if (j mod 2)=0 then

if m=1 then begin

for i:=1 to numfo do begin

tm:=o_masF [i,1]*2*o_pwtp[1]+o_masF [i,numx]*2*o_pwtp[numx];

for j:=2 to numx-1 do

if (j mod 2)=0 then

for i:=1 to numfo do

tm:=o_masF [i,1]*3*o_pwtp[1]*o_pwtp[1]+o_masF [i,numx]*3*o_pwtp[numx]*o_pwtp[numx];

for j:=2 to numx-1 do

if (j mod 2)=0 then

6. Исследование температурных полей

1. Введите Вашу фамилию и имя

2. Введите номер варианта задания

3. Введите номер учебной группы

4. Введите текущий год

5. Для вашего варианта как ведет себя температурное поле с ростом числа Фурье?

С ростом числа Фурье температура падает

6. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# R/Fo 0.1 0.2 0.4 0.8 1.0 2.0 5.0 10.0 50.0 100.0

1. 0.00 2.48 2.32 2.03 1.60 1.43 0.84 0.19 0.02 0.00 0.00

2. 0.02 2.46 2.30 2.02 1.59 1.42 0.84 0.18 0.02 0.00 0.00

3. 0.04 2.44 2.28 2.00 1.57 1.40 0.83 0.18 0.02 0.00 0.00

7. В зависимости от геометрии тела температурное поле при фиксированных остальных параметрах ведет себя следующим образом.

С ростом к температура падает

8. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# R/Fo 0.1 0.2 0.4 0.8 1.0 2.0 5.0 10.0 50.0 100.0

1. 0.00 2.48 2.32 2.03 1.60 1.43 0.84 0.19 0.02 0.00 0.00

2. 0.02 2.46 2.30 2.02 1.59 1.42 0.84 0.18 0.02 0.00 0.00

# R/Fo 0.1 0.2 0.4 0.8 1.0 2.0 5.0 10.0 50.0 100.0

1 0.00 2,43 2,11 1,51 0,52 0,12 1,22 1,91 0.02 0.00 0.00

2 0.02 2,42 2,09 1,49 0,51 0,11 1,22 1,91 0.02 0.00 0.00

9. Как ведет себя температурное поле как функция числа Померанцева?

В задаче нет числа Померанцева

10. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

11. Для вашего варианта как ведет себя температурное поле с ростом числа Био?

С ростом числа Био температура уменьшается

12. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

1. 0.00 2,43 2,11 1,51 0,52 0,12 1,22 1,91

2. 0.02 2,42 2,09 1,49 0,51 0,11 1,22 1,91

# R/Fo 0.1 0.2 0.4 0.8 1.0 2.0 5.0

1. 0.00 2,12 1,80 1,24 0,32 0,04 1,17 1,44

2. 0.02 2,10 1,79 1,22 0,31 0,05 1,18 1,44

13. Для вашего варианта как ведет себя температурное поле с ростом числа Предводителева?

С ростом числа Предводителева температура уменьшается

14. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

1. 0.00 2,43 2,11 1,51 0,52 0,12 1,22 1,91

2. 0.02 2,42 2,09 1,49 0,51 0,11 1,22 1,91

# R/Fo 0.1 0.2 0.4 0.8 1.0 2.0 5.0

1. 0.00 2.36 1.97 1.29 0.27 0.11 1,17 1,26

2. 0.02 2,34 1,28 1,28 0,26 0,12 1,18 1,26

15. Для вашего варианта укажите интервал значений параметра Фурье, при которых наблюдается зависимость температурного поля от координат.

16. Для вашего варианта как ведет себя температурное поле с ростом числа Кирпичева?

Числа Кирпичева нет

17. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

7. Исследование средней температуры

1. Введите Вашу фамилию и имя

2. Введите номер варианта задания

3. Введите номер учебной группы

4. Введите текущий год

5. Для вашего варианта как ведет себя средняя температура с ростом числа Фурье?

Читайте также:
Какой программой закрыть порты

С ростом числа Фурье ср. т. уменьшается

6. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

Tables: Heat spend

7. В зависимости от геометрии тела средняя температура при фиксированных остальных параметрах ведет себя следующим образом.

С ростом диаметра ср. т. уменьшается

8. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

Tables: Heat spend

Tables: Heat spend

9. Как ведет себя средняя температура как функция числа Померанцева?

Нет числа Померанцева

10. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

11. Для вашего варианта как ведет себя средняя температура с ростом числа Био?

С ростом числа Био ср. т. уменьшается

12. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

Tables: Heat spend

Tables: Heat spend

13. Для вашего варианта как ведет себя средняя температура с ростом числа Предводителева?

С ростом числа Предводителева ср. т. уменьшается

14. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

Tables: Heat spend

Tables: Heat spend

15. Для вашего варианта укажите интервал значений параметра Фурье, при которых наблюдается зависимость средней температуры как функции времени.

16. Для вашего варианта как ведет себя средняя температура с ростом числа Кирпичева?

Нет числа Кирпичева

17. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

8. Исследование потока тепла на границе

1. Введите Вашу фамилию и имя

2. Введите номер варианта задания

3. Введите номер учебной группы

4. Введите текущий год

5. Для вашего варианта как ведет себя поток на поверхности с ростом числа Фурье?

По условию задачи поток равен 0

6. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# Fo P ,10^6 P / P [ Fo [1]]

7. В зависимости от геометрии тела поток на поверхности при фиксированных остальных параметрах ведет себя следующим образом.

По условию задачи поток равен 0

8. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# Fo P ,10^6 P / P [ Fo [1]]

9. Как ведет себя поток на поверхности как функция числа Померанцева?

По условию задачи поток равен 0

10. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

11. Для вашего варианта как ведет себя поток на поверхности с ростом числа Био?

По условию задачи поток равен 0

12. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# Fo P ,10^6 P / P [ Fo [1]]

13. Для вашего варианта как ведет себя поток на поверхности с ростом числа Предводителева?

По условию задачи поток равен 0

14. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

# Fo P ,10^6 P / P [ Fo [1]]

15. Для вашего варианта укажите интервал значений параметра Фурье, при которых наблюдается зависимость потока на поверхности как функции времени.

По условию задачи поток равен 0

16. Для вашего варианта как ведет себя поток на поверхности с ростом числа Кирпичева?

По условию задачи поток равен 0

17. В доказательство ответа на предыдущий вопрос я могу привести следующие табличные зависимости.

9. Разбор практических примеров

1. Введите Вашу фамилию и имя

2. Введите номер варианта задания

3. Введите номер учебной группы

4. Введите текущий год

5. Считая, что физическая система описывается уравнениями вашего варианта, оцените время протекания процесса в секундах (минутах, часах, сутках). При этом избыточная температура равна 1000 Цельсия, толщина тела 50 см. Рассмотрите варианты того, что тело состоит из меди, железа, кирпича.

для меди более 30 часов, для железа около 15 суток, для кирпича около 297,5 суток

6. Если ваш вариант задания описывает тела разной геометрии, решите предыдущую задачу для тел разной геометрии.

В ходе разработки компьютерной программы, для решения задачи теплофизического расчета, были приобретены важные знания и навыки. А также получен дополнительный опыт работы с программной средой Pascal . Результатами работы стала программа, имеющая возможность рассчитывать температурное поле, удельный расход тепла, тепловой поток на поверхности рассматриваемого тела, а также содержащая в себе следующие функции: отображение результатов в табличном виде, отображение результатов в графическом виде (семейство кривых) на экране компьютера, сохранение полученных результатов во внешние файлы.

Титаренко М. Г. Работа с программной средой Pascal // Прагма 2008, ил.

Томпсон Р. Основы дифференциального программирования. – М.: Полюс, 2005, — 302с.

Тарковский Д.Л. Вычислительные машины. – М.: Пиренс, 2002, -461с.

Источник: doc4web.ru

Урок 14
§9 (3, 4). Рекурсивные алгоритмы

liniya

Пример 6. Запишем на языке Pascal программу нахождения периметра треугольника, заданного координатами его вершин. Вспомогательный алгоритм оформим с помощью процедуры.

Выполните программу на компьютере.

Подумайте, каким образом можно модифицировать программу, чтобы вычислять с её помощью периметр n-угольника. Каким образом при решении этой задачи можно использовать массивы?

Функция — подпрограмма, имеющая единственный результат, записываемый в ячейку памяти, имя которой совпадает с именем функции.

Описание функции имеет вид:

В заголовке функции после её имени приводится описание входных данных — указывается перечень формальных параметров и их типов. Там же указывается тип самой функции, т. е. тип результата. В блоке функции обязательно должен присутствовать оператор

Для вызова функции достаточно указать её имя со списком фактических параметров в любом выражении, в условиях (после слов if, while, until) или в операторе write главной программы.

Пример 7. Запишем на языке Pascal программу нахождения периметра треугольника, заданного координатами его вершин. Вспомогательный алгоритм оформим с помощью функции.

Выполните программу на компьютере.

На основе этой программы напишите функцию, вычисляющую площадь треугольника по целочисленным координатам его вершин. Используйте эту функцию для вычисления площади n-угольника.

Cкачать материалы урока

Источник: xn—-7sbbfb7a7aej.xn--p1ai

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru