Свистульки
ограничение времени 1 секунда
ограничение памяти 64mb
ввод стандартный ввод или input.txt
вывод стандартный вывод или output.txt
вася, лера и вова на уроках изобразительного искусства делают свистульки из глины. известно, что всего они сделали s свистулек.
необходимо выяснить, сколько свистулек сделал каждый ребенок, если известно, что вова и вася сделали одинаковое количество свистулек, а лера сделала в 3 раза больше, чем вася и вова вместе.
формат ввода
в единственной строке входного файла записано одно натуральное число s - общее количество свистулек, сделанных детьми
формат вывода
в единственную строку выходного файла нужно вывести три числа, разделённых пробелами - количество свистулек, которые сделал каждый ребёнок соответственно (вася, лера, вова)
пример 1
ввод вывод
8
1 6 1
пример 2
ввод вывод
40
5 30 5
пример 3
ввод вывод
56
7 42 7
//PascalABC.Net 3.0, сборка 1111
type
Point=record
x,y:double
end;
function TriangleSquare(A,B,C:Point):double;
begin
Result:=0.5*abs(A.x*(B.y-C.y)+B.x*(C.y-A.y)+C.x*(A.y-B.y))
end;
procedure GetPoint(c:char; var A:Point);
begin
Write('Введите координаты точки ',c,': ');
Readln(A.x,A.y)
end;
var
A:array['A'..'F'] of Point;
i:'A'..'F';
s1,s2:double;
begin
for i:='A' to 'F' do GetPoint(i,A[i]);
s1:=TriangleSquare(A['A'],A['B'],A['C']);
s2:=TriangleSquare(A['D'],A['E'],A['F']);
if s1>s2 then Writeln('Площадь первого треугольника больше')
else
if s2>s1 then Writeln('Площадь второго треугольника больше')
else Writeln('Площади треугольников равны')
end.
Тестовое решение:
Введите координаты точки A: -4 3.7
Введите координаты точки B: -6.3 0
Введите координаты точки C: 10.2 5.93
Введите координаты точки D: 7.143 8.1
Введите координаты точки E: -6 -3
Введите координаты точки F: 7.4 -5.7
Площадь второго треугольника больше
Лабораторная работа № 8. Работа с массивами
Теоретические сведения
Массив – это упорядоченный набор данных одного типа, снабженных индексами.
Индексы предназначены для нахождения определенного элемента массива, т.е. положение каждого элемента в массиве определяется его индексом. В этом и заключается упорядоченность. Тип компонент называется базовым типом массива.
В VBA массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент. Переменная с индексом — идентификатор компоненты массива. Формат записи:
<имя массива> (<индекс>), где индекс может быть выражением порядкового типа.
Видим, что индексы принято указывать в круглых скобках после имени массива. По умолчанию нумерация элементов массива начинается с 0. Говорят, что 0 – базовый индекс.
Например, если А – массив из пяти чисел: 2, 3, 7, 9, 6, то А (0) = 2 – первый элемент массива, А (4) = 6 – последний.
Описание массива определяет имя, размер массива, базовый тип и производится в разделе переменных. В VBA имеются следующие описания массивов:
1. <имя массива> (<номер последнего элемента>) [As <тип>]
2. <имя массива> (<начальный индекс> To <конечный индекс>) [As <тип>]
Отметим, что второй позволяет изменить базовый индекс. Другим изменения базового индекса является использование оператора Option Base, который имеет следующий синтаксис:
Option Base <базовый индекс>
<базовый индекс> – единица или ноль.
Этот оператор применяется перед процедурой, аналогично оператору Option Explicit.
Например, для изменения базового индекса с 0 на 1 используется оператор Option Base 1.
Массив A, который был рассмотрен, требует одного индекса для указания любого элемента. Такой массив называется одномерным (или линейным) В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов:
1. Dim A (12) As Byte
2. Dim A (1 To 12) As Byte
3. Dim Bin (5) As Integer
4. Dim Str_mass (4) As String
5. Dim K (7)
6. Dim L (0 To 3)
Заполнение массива в программе производится поэлементно. Чаще всего для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная. Возможно заполнение массива путем простого присвоения значения элементам:
Dim B (1 To 3) As Integer
B (1) = 2
B (2) = 18
B (3) = 6
Удобным определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.
Dim A As Variant
A = Array (10, 20, 35, 70)
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не указывают его размерность. Например,
Dim R () As Single
В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например, n; затем изменить размер динамического массива с оператора ReDim:
ReDim [Preserve] Имя (<номер последнего элемента>) [As <тип>]
ReDim [Preserve] Имя (<начальный индекс> To <конечный индекс>) [As <тип>]
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.