Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите со школьной программой на указатели / 4 сообщений из 4, страница 1 из 1
21.07.2003, 15:22
    #32213672
Inebs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите со школьной программой на указатели
Добрый вечер.
Задание такое.
Написать программу, формирующую список, указующие поля которого заполняются таким образом, что каждый элемент списка действительно указывает на след. элемент, помещенный в список позже. Т.о. при выводе на экран его элементы должны появиться в том порядке, в котоом заполнялся список.
и надо использовать процедуру вставки элемента в список в произвольную позицию.

Есть пограмма. но при вводе чисел в порядке 1 2 3 ... она выводит 3 2 1. Изменить что-то не получается... Может подскажите?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
program dinlist1;
Uses CRT;
type spisok=^digit;

     digit=record
	  numb:real;
	  next:spisok;
     end;
var
     head:spisok; { начало списка }
     pos:spisok; { начало списка }
     k,n,i:integer;
     L:set of  0 .. 9 ;
{ добавление в начало списка}
procedure AddSpisok(var head:spisok;numb:real);
var
     curr:spisok;
begin
     new(curr);
     curr^.numb:=numb;
     curr^.next:=head;
     head:= curr;
end;


{ вывод списка }
procedure PrintSpisok(p:spisok);
var
     curr:spisok;
begin
     curr:=head;
     while curr<>NIL do begin
	  writeln(curr^.numb );
	  curr:=curr^.next;
     end;
end;

begin
      L:=[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ];
      write('chislo');
      readln(n);
      for i:= 1  to n do
	begin
	  write('vedite ');
	  read(k);
	  if (k in L)
	  then AddSpisok(head,k);
      end;

     writeln('** Введенный список **');
     PrintSpisok(head);
end.

...
Рейтинг: 0 / 0
21.07.2003, 15:34
    #32213690
Inebs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите со школьной программой на указатели
Может быть это задача на "очереди"?
...
Рейтинг: 0 / 0
21.07.2003, 15:43
    #32213700
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите со школьной программой на указатели
а ты что ее не сам делал ??

ай-яай-яай как нехорошо
...
Рейтинг: 0 / 0
21.07.2003, 15:56
    #32213716
Alexey Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите со школьной программой на указатели
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
program Project1;
uses Crt;
type spisok=^digit;

     digit=record
	  numb:real;
	  next:spisok;
     end;
var
     head:spisok;
     pos:spisok; 
     k,n,i:integer;
     L:set of  0 .. 9 ;

procedure AddSpisok(var head:spisok;numb:real);
var
     curr:spisok;
begin
     new(curr);
     curr^.numb:=numb;
     if head = nil then
       head:= curr
       else
     head^.next:= curr
end;

procedure PrintSpisok(p:spisok);
var
     curr:spisok;
begin
     curr:=p;
     while curr<>NIL do begin
	  writeln(curr^.numb );
	  curr:=curr^.next;
     end;
end;

begin
      L:=[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ];
      write('chislo');
      readln(n);
      for i:= 1  to n do
	begin
	  write('vedite ');
	  read(k);
	  if (k in L) then
            AddSpisok(pos,k);
          if head = nil then
            head:= pos
            else
            pos:= pos^.next
      end;

     writeln('** List **');
     PrintSpisok(head);
     ReadLn
end.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите со школьной программой на указатели / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]