Вопрос задан 07.09.2023 в 07:44. Предмет Информатика. Спрашивает Бесова Дана.

Написать в Паскале процедуру с изменяемым параметром. помогите хотя бы с одним. Уровень A.

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Анкудимов Артём.
Уровень А
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

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот реализация этих процедур на Pascal:

Уровень A: Процедура для сортировки трех чисел в порядке возрастания.

pascal
program 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: Процедура для сокращения дроби.

pascal
program 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), чтобы изменить значения переменных, переданных им в качестве аргументов.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос