Имя: Пароль:
IT
 
можно ли упростить код паскаля?
0 program345
 
29.08.14
15:19
доброго дня!

написал программу для нахождения Наибольшего общего делителя

с условием использования конверсии:

var
  a,b:integer;
  
procedure nod(a,b:integer);
  var
    min,max,x1,x2,ood:integer;
  begin
    if a=b then begin
      writeln('НОД = ',a);
      exit;
      end;
    if a>b then begin
      max:=a;
      min:=b;
      end
        else begin
          max:=b;
          min:=a;
            end;
            
           ood:=max mod min;
           if ood=0 then
            begin
              writeln('НОД = ',min);
              exit;
            end;
            
            x2:=ood;
            ood:=min mod x2;
            if ood=0 then
              begin
                writeln('НОД = ',x2);
                exit;
              end;
            
            x1:=x2;
            x2:=ood;
            nod(x1,x2);
  
          end;
   begin
    writeln('введите 2 числа для опреления НОД: ');
    readln(a,b);
    nod(a,b);
   end.


без использовании конверсии:

var
  a,b:integer;
  
procedure nod(a,b:integer);
  var
    min,max,x1,x2,ood:integer;
  begin
    if a=b then begin
      writeln('НОД = ',a);
      exit;
      end;
    if a>b then begin
      max:=a;
      min:=b;
      end
        else begin
          max:=b;
          min:=a;
            end;
            
           ood:=max mod min;
           if ood=0 then
            begin
              writeln('НОД = ',min);
              exit;
            end;
            
            x2:=ood;
            ood:=min mod x2;
            if ood=0 then
              begin
                writeln('НОД = ',x2);
                exit;
              end;
            
             while ood<>0 do
              begin
                x1:=x2;
                x2:=ood;
                ood:=x1 mod x2;
              end;
              writeln('НОД = ',x2);
  
          end;
   begin
    writeln('введите 2 числа для опреления НОД: ');
    readln(a,b);
    nod(a,b);
   end.
1 Ёпрст
 
29.08.14
15:20
можно

function ftopku()
  return
end
2 Ненавижу 1С
 
гуру
29.08.14
15:25
че такое конверсия?
3 Chum
 
29.08.14
15:32
(0) алгоритм Евклида

begin
     writeln('Введите A и B');
     readln(a, b);
     while a<>b do
          begin
               if a>b
               then a:=a-b
               else b:=b-a
     end;
     write('Н0Д=',a)
end.

Типа метод вычитания
4 Timon1405
 
29.08.14
15:32
5 HeroShima
 
29.08.14
15:33
А где код паскаля?
6 Chum
 
29.08.14
15:35
begin
while (a<>0) and (a<>0) do
if a>a then a:=a mod b
else b:=b mod a;
Write(a+b);
end.

метод деления
7 Chum
 
29.08.14
15:37
точнее так:
while (a<>0) and (b<>0) do
if a>b then a:=a mod b
else b:=b mod a;
Write(a+b);
end.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.