Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.132.194] |
|
Сообщ.
#1
,
|
|
|
Проблема такая, есть program на pascal.
Которая вычисляет,сложение и вычитание двух целых чисел, каждое из которых представлено массивом байтов. Вот собственно и она: -------------------------------------------------------- program lab5; uses crt; const n=6; type mas=array[1..n] of byte; var a,b,s:mas; i:byte; f1,f2{,f3,f4}:text; f3,f4: file of byte; {нахождение суммы чисел} procedure summa(a,b:mas; var s:mas); {нахождение суммы чисел с разными знаками} procedure sum1(a,b:mas; var s:mas); begin for i:=n downto 2 do begin if a[i]<b[i] then begin s[i]:=256+s[i]+a[i]-b[i]; s[i-1]:=s[i-1]-1; end else s[i]:=s[i]+a[i]-b[i]; end; if a[1]<b[1] then s[1]:=0{определение знака результата} else s[1]:=255; end;{sum1} var i:byte; m,k:boolean; begin for i:=1 to n do s[i]:=0; {нахождение суммы чисел с одинаковыми знаками} if a[1]=b[1] then begin for i:=n downto 1 do begin s[i]:=s[i]+a[i]+b[i]; {определение знака результата} if a[i]+b[i]>255 then s[i-1]:=s[i-1]+1; end; s[1]:=s[1]+a[1]; {проверка результата} if s[1]>a[1] then writeln('Переполнение'); s[1]:=a[1]; end; {нахождение суммы чисел с разными знаками} if a[1]<>b[1] then begin {нахождение большего по модулю числа} m:=false; i:=1; k:=false; while (i<=n)and(not m)and(not k) do begin inc(i); m:=a[i]>b[i]; k:=a[i]<b[i]; end; if m then sum1(a,b,s){сумма,если |a|>|b|} else sum1(b,a,s);{сумма,если |a|<|b|} end; end;{summa} {нахождение разности чисел} procedure razn(a,b:mas; var s:mas); begin if b[1]=0 then b[1]:=255 else b[1]:=0; summa(a,b,s); end;{rasn} begin clrscr; assign(f1,'c:\bp\labrab\in1.txt'); assign(f2,'c:\bp\labrab\in2.txt'); assign(f3,'c:\bp\labrab\out1.txt'); assign(f4,'c:\bp\labrab\out2.txt'); reset(f1); for i:=1 to n do readln(f1,a[i]); reset(f2); for i:=1 to n do readln(f2,b[i]); for i:=1 to n do write(a[i],' '); writeln; for i:=1 to n do write(b[i],' '); summa(a,b,s);{нахождение суммы чисел} rewrite(f3); for i:=1 to n do write(f3,s[i]); close(f3); write('Сумма: '); for i:=1 to n do write(s[i],' '); writeln; razn(a,b,s);{нахождение разности чисел} rewrite(f4); for i:=1 to n do write(f4,s[i]); close(f4); write('Разность: '); for i:=1 to n do write(s[i],' '); readln; end. ------------------------------------------------------------ Нужно чего-нибудь в ней изменить,но чтобы ето конечно не как не повлияло на правильность результата. Спасибо. |
Сообщ.
#2
,
|
|
|
>Нужно чего-нибудь в ней изменить,
>но чтобы ето конечно не как не повлияло Каков вопрос - таков и ответ \%) Поменяй имена всех переменных - результат не изменится. |
Сообщ.
#3
,
|
|
|
Валер, это как в перле, уж если он где-нить заткнулся, то меняй-не меняй, а результат не изменится ))
|
Сообщ.
#4
,
|
|
|
Убери/измени/добавь комментарии, измени названия переменных, замени...
const n=6; type mas=array[1..n] of byte; ...на... type mas=array[1..6] of byte; ...и все 'n' на '6' или 'high(mas)' Только, чтобы не запутаться заменяй имена каким-нибудь редактором, где есть флажок "[X] Поиск отдельных слов" Поменяй имена файлов, которые использует программа... Есть ещё такая вещь - BP7SB называется (может, на filesearch.ru найдёшь . Она меняет вид исходника. Все слова остаются такими же, только выравнивание, регистр и т.д. меняются... |