Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2014, 15:44   #1
Mirancheri
Новичок
Джуниор
 
Регистрация: 25.09.2014
Сообщений: 1
По умолчанию Дополнить программу по однонаправленному списку(Pascal)

Есть программа, в ней работают ввод, вывод и сложение, нужно сделать вычитание.
задание:
Есть 2 файла в каждом больше 255 символов. Она должна складывать или вычитать эти числа(смотря что пользователь введет) ну и вывести
Все через однонаправленный список
по возможности отпишите в скайп: ngs.fortune

Программа:
Код:
program klkbch;
type
   z=^m;
   m=record
      a:integer;
      b:z;
   end;
var
   sa:boolean;
   z1,z2:char;
   s:string[1];
   s2:string;
   g,i,n,c1,u1,u2,u,j,k:integer;
   p1,p2,p5,p:z;
   ma1,ma2:array [1..100000] of byte;
   ff1,ff2,ff3:text;
function eror(s:string[1]):boolean;
var
   n:integer;
begin
   n:=ord(s[1]);
   eror:=true;
   If (u=0) then
     begin
        If ((n<48)or(n>57))and(n<>45) then
          eror:=false;
        u:=u+1;
     end
   else
      If (n<48)or(n>57) then
         eror:=false;
end;
procedure vvod(p1:z; ff0:text; z3:char; ma3:array [1..100000] of byte);
var
   p4:z;
   s1:string;
   ma4:array [1..100000] of byte;
begin
   While not eof (ff0) do
     begin
        read(ff0,s[1]);
        sa:=eror(s[1]);
        If sa=false then
          exit;
     end;
   close(ff0);
   reset(ff0);
   if sa=true then
     begin
        u:=0;
        While not eof (ff0) do
          begin
             read(ff0,s[1]);
             if (ord(s[1])=45)and(u=0) then
               begin
                  z3:=s[1];
                  u:=u+1;
               end
             else
               begin
                  ma4[u+1]:=strtoint(s[1]);
                  u:=u+1;
               end;
          end;
        j:=0;
        for i:=(u) downto 1 do
          begin
             j:=j+1;
             ma3[j]:=ma4[i];
          end;
        if z3='-' then
          for i:=1 to (u-1) do
            begin
               new(p4);
               p1^.a:=ma3[i];
               p1^.b:=p4;
               p1:=p4;
               p1^.b:=nil;
            end
        else
          for i:=1 to u do
            begin
               new(p4);
               p1^.a:=ma3[i];
               p1^.b:=p4;
               p1:=p4;
               p1^.b:=nil;
            end;
     end;
   write(u,' ');
   if u1=0 then
     u1:=u
   else
     u2:=u;
end;
procedure vivod(p3:z);
var
   p4:z;
   ma4,ma5:array [1..100000] of byte;
begin
   while p3^.b<>nil do
     begin
        ma4[i]:=p3^.a;
        p3:=p3^.b;
        i:=i+1;
     end;
   for j:=(i-1) downto 1 do
     write(ff3,ma4[j]);
end;
procedure slogenie(p1,p2,p5:z);
var
   d,m,u4,u5:integer;
   p6,p7:z;
   ma4:array [1..100000] of byte;
begin
   if u1>u2 then
      u4:=u2
   else
      u4:=u1;
   u5:=0;
   if (p1^.b<>nil) then
   while u5<u4 do
     begin
        u5:=u5+1;
        new(p6);
        d:=(p1^.a+p2^.a)div 10;
        m:=(p1^.a+p2^.a)mod 10;
        p1^.b^.a:=p1^.b^.a+d;
        p1:=p1^.b;
        p2:=p2^.b;
        j:=j+1;
        ma4[j]:=m;
        write(d,' ',m,' ');
     end;
   for i:=1 to j do
     begin
        new(p6);
        p5^.a:=ma4[i];
        p5^.b:=p6;
        p5:=p6;
        p5^.b:=nil;
        
        if (d<>0)and(i=j) then
          begin
            g:=2;
            {new(p6);
             p5^.a:=d;
             p5^.b:=p6;
             p5:=p6;
             p5^.b:=nil;}
          end;
     end;
   if u1>u2 then
      while u5<u1 do
         begin
            u5:=u5+1;
            new(p6);
            if g=2 then
               p5^.a:=(p1^.a) mod 10
            else
               p5^.a:=(p1^.a+g) mod 10;
            p5^.b:=p6;
            p5:=p6;
            p5^.b:=nil;
            g:=(p1^.a+g) div 10;
            p1:=p1^.b;
         end

   else
      while u5<u2 do
         begin
            u5:=u5+1;
            new(p6);
            if g=2 then
               p5^.a:=(p2^.a+1) mod 10
            else
               p5^.a:=(p2^.a+g) mod 10;
            p5^.b:=p6;
            p5:=p6;
            p5^.b:=nil;
            g:=(p2^.a+g) div 10;
            p2:=p2^.b;
         end;
      if g>0 then
         begin
            new(p6);
            p5^.a:=1;
            p5^.b:=p6;
            p5:=p6;
            p5^.b:=nil
         end;
end;
procedure operac(z3,z4:char);
begin
   if z3='-' then
     u1:=u1-1;
   if z4='-' then
     u2:=u2-1;
   if z3='-' then
     u1:=u1-1;
   if z4='-' then

end;
begin
   u:=0;
   u1:=0;
   u2:=0;
   new(p1);
   new(p2);
   new(p5);
   Assign(ff1,'p1.txt');
   Assign(ff2,'p2.txt');
   Assign(ff3,'v.txt');
   Rewrite(ff3);
   Reset(ff1);
   Reset(ff2);
   vvod(p1,ff1,z1,ma1);
   u:=0;
   vvod(p2,ff2,z2,ma2);
   writeln(u1,' ',u2);
   if eror(s[1])=false then
     Write(ff3,'Ошибка в входных данных')
   else
      begin
         j:=0;
         slogenie(p1,p2,p5);
       //  vivod(p1);
         i:=1;
         vivod(p5);
      end;
   close(ff1);
   close(ff2);
   close(ff3)
end.

Последний раз редактировалось Mirancheri; 25.09.2014 в 15:47.
Mirancheri вне форума Ответить с цитированием
Старый 25.09.2014, 16:11   #2
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Ничего не забыл?
indexx вне форума Ответить с цитированием
Старый 25.09.2014, 16:23   #3
mikhail_404
Новичок
Джуниор
 
Аватар для mikhail_404
 
Регистрация: 30.10.2011
Сообщений: 0
По умолчанию

Пишите, контакты в подписи.
e-mail: mikhail_404( at )mail.ru
ICQ : 596 217 48( ноль )
mikhail_404 вне форума Ответить с цитированием
Старый 25.09.2014, 23:45   #4
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Японский бох, неужели у вас код так и написан? Прям обфускация какая-то...

Если что пишите сюда: larbossfreelance@yandex.ru Метка: freelance

Бюджет указать не забудьте.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 26.09.2014, 13:08   #5
Klausms
Пользователь
 
Аватар для Klausms
 
Регистрация: 24.10.2011
Сообщений: 38
По умолчанию

https://vk.com/id196986020 пишите мне в контакт
Klausms вне форума Ответить с цитированием
Старый 26.09.2014, 21:56   #6
anatolizaharenko
Новичок
Джуниор
 
Регистрация: 26.09.2014
Сообщений: 0
По умолчанию

Контакт: http://vk.com/id60473924
Skype: anatolizaharenko
Mail: anatolizaharenko@gmail.com
anatolizaharenko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дополнить программу по однонаправленному списку(Pascal) Mirancheri Помощь студентам 4 25.09.2014 16:31
c++ дополнить программу myrka-2009 Помощь студентам 1 02.11.2012 02:17
дополнить программу условием:"Определить среднее арифметическое значений функций, меньших 1" wowan Паскаль, Turbo Pascal, PascalABC.NET 2 22.06.2011 16:25
дополнить программу smile) Помощь студентам 2 13.09.2010 21:01
Дополнить программу в Turbo Prolog Paco de lucia Помощь студентам 0 08.03.2010 19:59