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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 19:11   #1
Капелька
 
Регистрация: 24.05.2009
Сообщений: 3
По умолчанию Паскаль.Списки.Указатели.

прошу о помощи, на автомат надо написать программу, организовывающую однонаправленный список всех простых чисел меньших n, удалить из списка элементы, значения которых лежат в диапазоне от m1 до m2, результаты обработки списка вывести на экран.


program q;
uses crt;
type
e=^spisok;
spisok=record
inf:integer;
next:e;
end;
var
a,x,b:array[1..100] of e;
w,i,n,m1,m2,j:integer;
begin
clrscr;
writeln('введите N');
readln(n);
new(a[1]);
a[1]^.next:=nil;
a[1]^.inf:=1;
for i:=2 to n-1 do
begin
new(x[i]);
x[i]^.inf:=i;
x[i]^.next:=a[i];
a[i]:=x[i];
end;
for i:=1 to n-1 do
while a[i]<>nil do
begin
write(a[i]^.inf,' ');
a[i]:=a[i]^.next;
end;
write('удалить числа с ');
read(m1);
write(' до ');
read(m2);

for i:=1 to n-1 do
begin
while x[i]<>nil do
if (i>=m1) and (i<=m2)then x[i]^.next:=x[i]^.next^.next
end;

for i:=1 to n-1 do
begin
while x[i]<>nil do
begin
write(a[i]^.inf,' ');
a[i]:=a[i]^.next;
end;
end;
end.


программа вводит числа, но не выводит результат, понять где моя ошибка я не могу и как вариант решения есть ещё один код

program q;
uses crt;
type
e=^spisok;
spisok=record
inf:integer;
next:e;
end;
var
a,x,b:array[1..100] of e;
w,i,n,m1,m2,j:integer;
begin
clrscr;
writeln('vvedite n');
readln(n);
new(a[1]);
a[1]^.next:=nil;
a[1]^.inf:=1;

for i:=n-1 downto 2 do
begin
new(x[i]);
x[i]^.inf:=i;
x[i]^.next:=a[i];
a[i]:=x[i];
end;

for i:=1 to n-1 do
while a[i]<>nil do
begin
write(a[i]^.inf,' ');
a[i]:=a[i]^.next;
end;

write('udalit chisla s ');
read(m1);
write(' do ');
read(m2);

for i:=n-1 downto 1 do
begin
if x[i]<>nil then
if ((i>=m1) and (i<=m2)) then
begin
x[m1-1]^.next:=x[m2]^.next;
{ x[m1]^.next:=nil; }
end;
end;

{for i:=m2 downto m1 do
begin
a[i]^.next:=nil;
end;}

for i:=1 to n-4 do
begin
a[i]:=x[i];
if a[i]^.next<>nil then
writeln(a[i]^.inf,' ');
end;
end.

плиз, люди помогите, я уже месяц её решить не могу, а препод плечами пожимает, мол сама думай((

Последний раз редактировалось Капелька; 26.05.2009 в 19:46.
Капелька вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль списки Александр ето я Паскаль, Turbo Pascal, PascalABC.NET 0 19.05.2009 19:07
Указатели, динамические списки Al-Fencer Паскаль, Turbo Pascal, PascalABC.NET 4 27.04.2009 12:44
C++ Списки, указатели kl3rk Помощь студентам 6 14.02.2009 02:17