Фев
20

Очень интересная программа на языке Pascal

Автор Flashback    Рубрики Статьи и обзоры     Теги

Эта задача очень интересна именно тем, что показывает, что наипростейшую задачу можно решить нестандартно.
Задача — поменять значения переменных a и b.
Пусть a=5, а b=7.

Как бы мы решали её просто.

Program name_name;
uses crt;
var a,b,c:LongInt;
begin
readln(a);
readln(b);
c:=b;
b:=a;
a:=c;
write(a,b);
end.

Проверяем работоспособность…
Готово!

Но если мы учимся программировать правильно, то давайте добавим для себя дополнительное условие — перемену значений нужно сделать без дополнительной переменной. Тогда:

program name_eman;
uses crt;
var a,b:LongInt;
begin
readln(a,b);

Занесем в переменную A результат суммирования A и B (A := A + B): A = A1 + B1; B = B1;
Занесем в переменную B разность A и B (B := A — B): A = A1 + B1; B = A1;
Занесем в переменную A разность A и B (A := A — B): A = B1; B = A1;

writeln(a,b);
end.

Стоит подумать, как словесный псевдокод, представить в виде программного.
Я не буду приводить его здесь, так как я вас очень конкретно направил на решение поставленной задачи. Если ваших умений пока не хватает, чтобы его преобразовать, попробуйте разобраться в первом коде.
© RCE.SU

4 комментария к “Очень интересная программа на языке Pascal”

  • Иван 22.03.2012 в 19:40

    Напоминает школьную задачку по информатике :)

  • Ололо 02.07.2014 в 20:02

    Сдавали сессию и одногруппницу попросили написать прогу поменять значения переменных местами, ну она написала x:=y; y:=x;

  • Гоша 18.11.2014 в 19:05

    var a,b:integer;
    begin
    readln(a,b);
    a:=b+a;
    b:=a-b;
    a:=a-b;
    write(a,b);

    end.

    Так?

    • Flashback 19.11.2014 в 20:05

      Да. Еще для решения этой задачи можно использовать XOR и тогда три строки будут выглядеть так:
      A := A xor B;
      B := B xor A;
      A := A xor B;

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>