Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите в чем ошибка...

64K
19 декабря 2010 года
DenHuk
2 / / 19.12.2010
Создать список (списки), реализованный в виде стека, из чисел, вводимых с клавиатуры (признак конца ввода – CTRL+Z). Выполнить над списком указанное ниже задание. Предусмотреть вывод на экран исходного и обработанного списков. Подчитать произведение элементов, меньших заданного числа.
Добавить в конец списка те элементы из второго, которых нет в первом. это задание у меня че то не работает!!! гляньте сортировку плиз...
Код:
Program Lab;
Uses CRT;
Type TEl=^El;
     El=Record
           Val: Real;
           Next: TEl;
        end;
Var SS,SS1,BP: TEl;
a,s:real;
 
Function ReadZ(Var V: Real): Boolean;Var K: Char;S: String;Code: Integer;
Begin ReadZ:=False;S:='';K:=#0;
   Repeat K:=ReadKey;
      Case K of
              '-': If S='' then begin K:='-';S:=S+K;Write(K);end;
          '.',',': If Pos('.',S)=0 then begin K:='.';S:=S+K;Write(K);end;
         '0'..'9': begin S:=S+K;Write(K);K:=#0;end;
               #8: If S<>'' then begin
                      Delete(S,Length(S),1);
                      GoToXY(WhereX-1,WhereY);Write(' ');
                      GoToXY(WhereX-1,WhereY);
                   end;
          #27,#13: If S<>'' then begin
                      Val(S,V,Code); S:='';WriteLn;
                      ReadZ:=True;K:=#26;
                   end else If K=#27 then K:=#26;
      end;
   Until Ord(K)=26;
End;
 
Procedure Push(X: Real);Var P: TEl;
Begin New(P); P^.Val:=X; P^.Next:=SS; SS:=P; End;
 
Procedure Show;
Begin BP:=SS;
   While BP<>Nil do begin
      WriteLn(BP^.Val:10:3);
      BP:=BP^.Next;
   end;
End;
 
Procedure StackSort;Var l,k,T,N: TEl; B: Real; {Сортировка}
Begin T:=SS1;        K:=SS;
    while T<>nil do begin L:=t;
    while K<>nil do begin n:=k;
    while n<>nil do begin
    while n^.val<>l^.val do
    begin
    while L<>nil do l:=l^.next;
    if l=nil then begin writeln(N^.val:10:3);
    n:=n^.next;
    end;
    end;
    end;
    end;
    end;
End;

Var n: Real;
BEGIN ClrScr;
   S:=1;
   write('Vvedite a= ');
   readln(a);
   SS:=Nil;
   WriteLn('Введите числа (конец ввода Ctrl+Z или Esc):');
   While ReadZ(n) do Push(n);
 
   WriteLn('Элементы необработанного стека:');
   Show;
 
   WriteLn('proizvedenie:');
   BP:=SS;
   While BP<>Nil do begin
     If BP^.Val>0 then
     If BP^.Val<a then
      s:=s*BP^.val;
      BP:=BP^.Next;
      end;
      if s<>1 then
      writeln(s:10:3)
      else writeln('net takogo proizvedenia');
    WriteLn;
    SS1:=SS;
    SS:=Nil;
   WriteLn('Введите числа (конец ввода Ctrl+Z или Esc):');
   While ReadZ(n) do Push(n);
 
   WriteLn('Элементы необработанного стека:');
   Show;
 
   WriteLn('Элементы отсортированного стека:');
   show1; StackSort; WriteLn;
 
 
   Repeat Until KeyPressed;
END.

срочно нужно сдать а исправить не могу*(((
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог