Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > оишбка типов


Автор: cassno 16.1.2012, 18:18
Ребята, короче такая проблема, паскаль выдаёт ошибку - неверное присвоение типа данных... Ни чего сделать не могу, а завтро ( то есть уже сегодня сдавать) помогите пожалуйсто...

задание:

Построить односвязный список из входной последовательности чисел и вывести ее в порядке неубывания.

Код

Program spisok;
uses crt;
type
  pe=^elem;
  elem=record
  num:integer;
  q:pe;
end;
var
   a : array[1..10000] of elem;
   y:elem;
   first,f,p,tmp:pe;
   s,i,j,x,l,r:integer;
   n,m:integer;
   
procedure Insertsort (var head:pe;
x:integer);
var p1,p:pe;
begin
if x<head^.num then
new (p1);
p^.num:=x;
f^.num:=p;
p:=p1
else InsertSort (head^.next,x);
end.

begin
  clrscr;
  writeln('vvedite kol vo elementov');
  readln(s);
  clrscr;
  writeln('vvedite elementi');
  i:=1;
  write('a',i,'= ');
  new(first);
  readln(first^.num);
  first^.q:=nil;
  f:=first;
  for i:=2 to s do
  begin
    new(p);
    write('a',i,'= ');
    readln(p^.num);
    p^.q:=nil;
    f^.q:=p;
    f:=f^.q;
  end;
  f:=first;
  while f<>nil do

  begin
    write(f^.num:3);
    f:=f^.q;
  end;
  f:=first;
  while f^.q<>nil do
     f:=f^.q;
     tmp:=first;
  while tmp^.q <> f do
    tmp:=tmp^.q;
    tmp^.q:=nil;
    Dispose(f);
    f:=first;
  readln;
end.

[/code]

Автор: Фантом 16.1.2012, 18:43
1) В процедуре Insertsort создается структура с указателем p1, а содержимое записывается в несуществующую структуру с указателем p. Это будет компилироваться, но работать не сможет.
2) Там же в строчке
Код

f^.num:=p;

в поле типа integer записывается указатель. Смысл этого действия неясен, и это уже и не компилируется.
3) В той же процедуре отсутствуют операторные скобки begin...end после then, из-за его else относится непонятно к чему.
4) В else используется поле next структуры, которое в соответствующем типе отсутствует. Смысл?
5) Процедура заканчивается точкой, что неверно.

В целом все это очень похоже на механчески составленные друг с другом два куска разных программ, с соответствующим результатом.

Автор: cassno 16.1.2012, 18:48
Цитата(Фантом @ 16.1.2012,  18:43)
1) В процедуре Insertsort создается структура с указателем p1, а содержимое записывается в несуществующую структуру с указателем p. Это будет компилироваться, но работать не сможет.
2) Там же в строчке
Код

f^.num:=p;

в поле типа integer записывается указатель. Смысл этого действия неясен, и это уже и не компилируется.
3) В той же процедуре отсутствуют операторные скобки begin...end после then, из-за его else относится непонятно к чему.
4) В else используется поле next структуры, которое в соответствующем типе отсутствует. Смысл?
5) Процедура заканчивается точкой, что неверно.

В целом все это очень похоже на механчески составленные друг с другом два куска разных программ, с соответствующим результатом.

можешь помочь написать???

Автор: Фантом 16.1.2012, 19:57
Цитата(cassno @  16.1.2012,  19:48 Найти цитируемый пост)
можешь помочь написать??? 

Зачем? Некоторый набор подсказок дан, этого достаточно.

Автор: cassno 16.1.2012, 20:26
потому что я воообще в принципи написать не могу, а завтра последний срок... будь человеком, напиши пожалуйста....(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)