Напишите "функцию голосования" function Election - Pascal ABC
Формулировка задачи:
Доброго времени суток . Напишите "функцию голосования" function Election (x, y, z:boolean): boolean (Pascal), возвращающую то значение (true или false), которое среди значений ее аргументов x, y, z встречается чаще.
Входные данные
Вводится 3 числа - x, y и z (x, y и z равны 0 или 1, 0 соответствует значению false, 1 соответствует значению true).
Выходные данные
Необходимо вывести значение функции от x, y и z.
Примеры
входные данные
0 0 1
выходные данные
0
я только начал функции и процедуры , прошу подробно расписать заранее спасибо
Решение задачи: «Напишите "функцию голосования" function Election»
textual
Листинг программы
program zr;
function bool(a:byte):boolean;{Функция преобразования целочисленного значения в логическое}
begin
if a = 1 then bool := true{Если введенное значение равно единицы, то возвращаем true}
else bool := false;{Если введенное значение равно нулю, то возвращаем false}
end;
function Election(x,y,z:boolean):boolean;{Собственно сама функция "Голосования"}
var k:byte;{Счетчик значений true}
begin
k := 0;
if (x) then k := k + 1;
if (y) then k := k + 1;
if (z) then k := k + 1;
if (k >= 2) then Election := true{Если значение true(1) больше или равно 2, то возвращаем true(1)}
else Election := false;{В противном случае возвращаем значение false(0)}
end;
var a:byte;
x,y,z:boolean;
begin
repeat
Write('Введите x: ');
Readln(a);
until (a = 0) or (a = 1);
x := bool(a);
repeat
Write('Введите y: ');
Readln(a);
until (a = 0) or (a = 1);
y := bool(a);
repeat
Write('Введите z: ');
Readln(a);
until (a = 0) or (a = 1);
z := bool(a);
if (Election(x,y,z)) then Writeln('1')
else Writeln('0');
Readln;
end.
Объяснение кода листинга программы
- Функция
bool(a:byte)принимает целочисленное значениеaи возвращает логическое значениеtrueилиfalseв зависимости от того, равно ли введенное значение единице или нулю. - Функция
Election(x,y,z:boolean)принимает три логических значенияx,yиzи возвращает логическое значениеtrueилиfalse. - Переменная
kинициализируется значением 0. - Если значение
xравноtrue, то значениеkувеличивается на 1. - Если значение
yравноtrue, то значениеkувеличивается на 1. - Если значение
zравноtrue, то значениеkувеличивается на 1. - Если значение
kбольше или равно 2, то функция возвращаетtrue. - В противном случае функция возвращает
false. - Переменные
a,x,yиzинициализируются значениями, введенными пользователем. - Цикл повторяется до тех пор, пока введенное значение не будет равно 0 или 1.
- Значение
xпреобразуется в логическое значение. - Цикл повторяется до тех пор, пока введенное значение не будет равно 0 или 1.
- Значение
yпреобразуется в логическое значение. - Цикл повторяется до тех пор, пока введенное значение не будет равно 0 или 1.
- Значение
zпреобразуется в логическое значение. - Вызывается функция
Election(x,y,z). - Если результат функции
Election(x,y,z)равенtrue, то выводится число 1. - Иначе выводится число 0.
- Программа завершается вызовом функции
Readln(). - Цикл повторяется до тех пор, пока введенное значение не будет равно 0 или 1.