На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Спасите, сессия....
    Проблема такая, есть 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.
    ------------------------------------------------------------
    Нужно чего-нибудь в ней изменить,но чтобы ето конечно не как
    не повлияло на правильность результата.
    Спасибо.
      >Нужно чего-нибудь в ней изменить,
      >но чтобы ето конечно не как не повлияло
      Каков вопрос - таков и ответ \%)
      Поменяй имена всех переменных -
      результат не изменится.
        Валер, это как в перле, уж если он где-нить заткнулся, то меняй-не меняй, а результат не изменится :)))
          Убери/измени/добавь комментарии, измени названия переменных, замени...
          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 найдёшь :) . Она меняет вид исходника. Все слова остаются такими же, только выравнивание, регистр и т.д. меняются...
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0226 ]   [ 15 queries used ]   [ Generated: 28.04.24, 02:29 GMT ]