Зарегистрированные пользователи не просматривают эту тему.
малёк
Димка-Карапуз)
Карма: +0/-0
Сообщений: 10
Откуда: Киев\Черкассы
Офлайн
|
помогите пж сделать лабу.
В паскале в последовательности чисел найти Максимальное и Минимальное. Поменять их местами. Задачу выполнить на динамическую память(списки).
Помогите пж написать продцедуру обмена местами на месте звездочек *****
program lab9;
uses crt;
type list=^t;
t=record
data:integer;
next:list;
head:list;
end;
var p,head,q:list;
max,min:integer;
procedure vvid(var p,head:list);
var x:integer;
q:list;
begin
writeln('Vvesit spusok');
p:=nil;{Spusok pystui}
readln(x);
if x<>0 then
begin
new(q);
q^.data:=x;
q^.next:=nil;
head:=q;
p:=q;
readln(x);
while x<>0 do
begin
new(q^.next);
q:=q^.next;
q^.data:=x;
q^.next:=nil;
readln(x);
end;
end;
writeln;
end;
procedure vuvid(p:list);
begin
while p<>nil do
begin
write(p^.data,' ');
p:=p^.next;
end;
end;
procedure prohid(p:list; var max,min:integer);
begin
max:=p^.data;
min:=p^.data;
while p<>nil do
begin
if p^.data>max then max:=p^.data;
if p^.data<min then min:=p^.data;
p:=p^.next;
end;
writeln('MAX=',max);
writeln('MIN=',min);
end;
******
{---MAIN---}
begin
clrscr;
vvid(p,head);
vuvid(p);
writeln;
prohid(p,max,min);
writeln('-----');
vuvid(p);
writeln;
writeln('-----');
readln;
end.
... зови меня СеКаС
|
|
|
| |
малёк
Карма: +1/-0
Сообщений: 48
Офлайн
|
[php]procedure prohid(p:list; var max,min:integer, p_index_max,p_index_min:pointer);
var c: intenger;
begin
max:=p^.data;
min:=p^.data;
c := 0;
while p<>nil do
begin
if p^.data>max then
begin
max:=p^.data;
index_max = p;
end;
if p^.data<min then
begin
min:=p^.data;
index_min = p;
end;
p:=p^.next;
c := c + 1;
end;
writeln('MAX=',max);
writeln('MIN=',min);
end;
procedure swap(var a,b:pointer);
var t:pointer;
begin
t := a;
a:=b;
b:=t;
end;
procedure Replace(p_index_min,p_index_max:pointer);
begin
swap(p_index_min^.next,p_index_max^.next);
swap(p_index_min^.head,p_index_max^.head);
end;[/php]
щось типу такого
|
|
|
Карма: +234/-6
Сообщений: 4956
Офлайн
|
=O я слива лиловая, спелая, садовая!
шось типу того !
Я иду, а за мной толпой бегут скандалы
|
|
|
малёк
Ян
Карма: +1/-0
Сообщений: 11
Откуда: 18-ка
Офлайн
|
=O я слива лиловая, спелая, садовая!
шось типу того !
це питання по тексту проги?
Трохи неточне питання, чи не могла б ти трохи уточнити?
Йа Пивопопивайко))
|
|
|
малёк
Димка-Карапуз)
Карма: +0/-0
Сообщений: 10
Откуда: Киев\Черкассы
Офлайн
|
разъясни пж:
-твое pointer и мое list это одно и тоже? если нет, то опиши плиз свой pointer
-как работает swap и что там подразумевается под переменными а и b? ну я примерно догадался, что это процедура обмена ссылок между максимальным и минимальным, но все же.
... зови меня СеКаС
|
|
|
Карма: +234/-6
Сообщений: 4956
Офлайн
|
=O я слива лиловая, спелая, садовая! шось типу того ! це питання по тексту проги?  Трохи неточне питання, чи не могла б ти трохи уточнити?
це не питання! Це відповідь
Я иду, а за мной толпой бегут скандалы
|
|
|
малёк
Карма: +1/-0
Сообщений: 48
Офлайн
|
бачу, зовсім не шариш в програмуванні.
pointer — так, це твій list, але повинно прокатити і так(можеш замінити на ліст, якщо так хочеш)
swap() — поміняти місцями БУДЬ-ЯКІ 2 числа
сама перестановка здійснюється в
swap(p_index_min^.next,p_index_max^.next);
swap(p_index_min^.head,p_index_max^.head);
ми міняємо посилання на наступний і попередній елементи місцями. в принципі, можна було зробити і простіше
procedure swap(var a,b: integer);
var temp: integer;
begin
temp := a;
a:=b;
b:=temp;
end;
procedure Replace(p_index_min,p_index_max:pointer);
begin
swap(p_index_min^.data,p_index_max^.data);
end;
але так не тру
|
|
|
малёк
Димка-Карапуз)
Карма: +0/-0
Сообщений: 10
Откуда: Киев\Черкассы
Офлайн
|
а тебя не смущает, что мы работаем со списком и меняем элементы с помощью вставки и удаления новых ячеек? (так преподша говорит. ей лет 70, но вродь шарит)
СПС за помощь и твое потраченное время. будем пробовать.
« Последний раз изменено: 8 июня 2009, 00:07:55 CeKaC »
... зови меня СеКаС
|
|
|
малёк
Карма: +1/-0
Сообщений: 48
Офлайн
|
а тебя не смущает, что мы работаем со списком и меняем элементы с помощью вставки и удаления новых ячеек? (так преподша говорит. ей лет 70, но вродь шарит)
СПС за помощь и твое потраченное время. будем пробовать.
емм.. твоя відповідь може відноситись до мого другого посту, але не до початкового варіанту. якщо ми хочемо поміняти місцями два елементи списку — ми повинні поміняти місцями зв"язки між цими елементами. що я і зробив — поле data і сам pointer на список не міняв. а те що для процедурки swap() ми використовуємо додаткову змінну — це так треба, по інакшому неможливо зробити (точніше, можливо але не з типом pointer або list)
|
|
|
малёк
Димка-Карапуз)
Карма: +0/-0
Сообщений: 10
Откуда: Киев\Черкассы
Офлайн
|
чего то оно не работает. оно тупо добавляет 0 в начало списка. и все. наверно либо Я либо прога кривая)
... зови меня СеКаС
|
|
|