
Вопрос задан 07.09.2023 в 07:44.
Предмет Информатика.
Спрашивает Бесова Дана.
Написать в Паскале процедуру с изменяемым параметром. помогите хотя бы с одним. Уровень A.
Напишите процедуру, которая переставляет три переданные ей числа в порядке возрастания. Пример: Введите три натуральных числа: 10 15 5 5 10 15 Уровень B. Напишите процедуру, которая сокращает дробь вида M/N. Числитель и знаменатель дроби передаются как изменяемые параметры. Пример: Введите числитель и знаменатель дроби: 25 15 После сокращения: 5/3

Ответы на вопрос

Отвечает Анкудимов Артём.
Уровень А
type
num=integer; { можно поменять на real, longint, даже char... }
procedure Swap(var a,b:num);
{ меняет местами значения a и b }
var
t:num;
begin
t:=a; a:=b; b:=t
end;
procedure Moving(var a,b,c:num);
begin
if a>b then begin
Swap(a,b);
if b>c then begin
Swap(b,c);
if a>b then Swap(a,b)
end
end
else begin
if b>c then Swap(b,c);
if a>b then Swap(a,b)
end
end;
var
a,b,c:num;
begin
Write('Введите три числа: '); Read(a,b,c);
Moving(a,b,c);
Writeln(a,' ',b,' ',c)
end.
Уровень В
function Gcd(a,b: longint): longint;
{ Нахождение НОД }
var
i: longint;
begin
while b <> 0 do
begin
a := a mod b;
i := b; b := a; a := i
end;
gcd := a
end;
procedure ShortFraction(var m,n:longint);
var
k:longint;
begin
k:=Gcd(m,n);
m:=m div k; n:=n div k
end;
var
a,b:longint;
begin
Write('Введите числитель и знаменатель дроби: '); Readln(a,b);
ShortFraction(a,b);
Writeln('Дробь после сокращения равна ',a,'/',b)
end.
Тестовое решение:
Введите числитель и знаменатель дроби: 25 15
Дробь после сокращения равна 5/3
type
num=integer; { можно поменять на real, longint, даже char... }
procedure Swap(var a,b:num);
{ меняет местами значения a и b }
var
t:num;
begin
t:=a; a:=b; b:=t
end;
procedure Moving(var a,b,c:num);
begin
if a>b then begin
Swap(a,b);
if b>c then begin
Swap(b,c);
if a>b then Swap(a,b)
end
end
else begin
if b>c then Swap(b,c);
if a>b then Swap(a,b)
end
end;
var
a,b,c:num;
begin
Write('Введите три числа: '); Read(a,b,c);
Moving(a,b,c);
Writeln(a,' ',b,' ',c)
end.
Уровень В
function Gcd(a,b: longint): longint;
{ Нахождение НОД }
var
i: longint;
begin
while b <> 0 do
begin
a := a mod b;
i := b; b := a; a := i
end;
gcd := a
end;
procedure ShortFraction(var m,n:longint);
var
k:longint;
begin
k:=Gcd(m,n);
m:=m div k; n:=n div k
end;
var
a,b:longint;
begin
Write('Введите числитель и знаменатель дроби: '); Readln(a,b);
ShortFraction(a,b);
Writeln('Дробь после сокращения равна ',a,'/',b)
end.
Тестовое решение:
Введите числитель и знаменатель дроби: 25 15
Дробь после сокращения равна 5/3



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Конечно, вот реализация этих процедур на Pascal:
Уровень A: Процедура для сортировки трех чисел в порядке возрастания.
pascalprogram LevelA; procedure SortNumbers(var num1, num2, num3: Integer); var temp: Integer; begin if num1 > num2 then begin temp := num1; num1 := num2; num2 := temp; end; if num2 > num3 then begin temp := num2; num2 := num3; num3 := temp; end; if num1 > num2 then begin temp := num1; num1 := num2; num2 := temp; end; end; var num1, num2, num3: Integer; begin Write('Введите три натуральных числа: '); Readln(num1, num2, num3); SortNumbers(num1, num2, num3); Write('Отсортированные числа: ', num1, ' ', num2, ' ', num3); end.
Уровень B: Процедура для сокращения дроби.
pascalprogram LevelB; procedure ReduceFraction(var numerator, denominator: Integer); var gcd, temp: Integer; begin gcd := numerator; temp := denominator; while temp <> 0 do begin temp := numerator mod denominator; numerator := denominator; denominator := temp; end; gcd := abs(gcd); numerator := numerator div gcd; denominator := denominator div gcd; end; var numerator, denominator: Integer; begin Write('Введите числитель и знаменатель дроби: '); Readln(numerator, denominator); ReduceFraction(numerator, denominator); Write('После сокращения: ', numerator, '/', denominator); end.
Обратите внимание, что обе процедуры используют изменяемые параметры (var
), чтобы изменить значения переменных, переданных им в качестве аргументов.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili