IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите изменить программу!, Списки!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Пашка

Репутация: -  0  +


Помогите пожалуйста по образцу этой программы выполнить следующие задания :
1. Написать программу поиска максимального элемента в линейном однонаправленном списке.
2. Написать программу поиска минимального элемента в линейном однонаправленном списке

Либо если незатруднит написать с нуля новую программу!

{
Spiski
}

program list;
uses crt;
type
typeofelement = integer;
spisok = ^knot;
knot = record
data: typeofelement; { Tip dannyh }
next: spisok; { Sledujushii element }
end;
var
esim: spisok; { Pervyi element }
p: spisok; { Ukazatel }
pp: spisok; { Ukazatel dlja vnesenija elementa v centr }
pnew: spisok;
key: integer;

{ dobavljaet pervyi element }
procedure add_first;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=nil; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');
readln;
end;

{ vyvodit spisok na ekran }
procedure show;
begin
clrscr;
{ Esli pervyi pust, to vyvodim soobshhenie }
if esim = nil then
writeln('Spisok pust!')
else
{ Esli ne pust, to vyvodim spisok na ekran }
begin
writeln('Spisok:');
p := esim;
while p <> nil do
begin
writeln(p^.data);
p := p^.next;
end;
end;
readln;
end;

{ dobavljaet ocherednoi element v konec }
procedure add_to_end;
begin
clrscr;
new(p);
writeln('Vvedite element:');
readln(p^.data);
p^.next:=nil; { Sledujushii element - NIL }
esim^.next:=p;
writeln('Element dobavlen!');
readln;
end;

{ dobavljaet ocherednoi element v nachalo }
procedure add_to_begin;
begin
clrscr;
new(p);
writeln('Vvedite element:');
readln(p^.data);
p^.next:=esim;
esim:=p;
writeln('Element dobavlen!');
readln;
end;

{ menu }
procedure menu;
begin
writeln('1 - Dobavlenie pervogo elementa');
writeln('2 - Dobavlenie ocherednogo elementa v konec');
writeln('3 - Dobavlenie ocherednogo elementa v nachalo');
writeln('4 - Vyvod spiska na ekran');
writeln('0 - Vyhod');
end;

{ glavnaja programma }
begin
repeat
clrscr;
menu;
readln(key);
case key of
1: add_first; { Dobavit pervyi element }
2: add_to_end; { Dobavit element v konec }
3: add_to_begin; { Dobavit element v nachalo }
4: show; { Vovesti spisok na ekran }
end;
until
key = 0;
end.



Заранее спасибо!!!!!!!!!!! cool.gif

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Во-первых - пользуйся тегами... А во-вторых, все действия со списками производятся по образу процедуры Show...

Вот так, например, находится минимальный элемент:
function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;


Добавляй в меню соответствующий пункт и вызывай функцию... Для максимума - почти так же.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Пашка

Репутация: -  0  +


Огромное тебе спасидо!!! А как зделать так чтобы в меню дабовление элементта можно было добавлять несколько елементов а не один! Я так понимаю нужно использывать цыкл. Но как его сёда вписать чтоб всё работало ??

Цитата
procedure add_first;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=nil; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');
readln;
end;


Неужели надо по два раза напоминать - ПОЛЬЗУЙСЯ ТЕГАМИ !!!

Сообщение отредактировано: APAL -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Так попробуй:
procedure add_first;
var answer: char;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
repeat
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=nil; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');

write('Добавить еще элемент? (y/n)'); readln(answer);
until upcase(answer) = 'N';
readln;
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Пашка

Репутация: -  0  +


Нет так неполучается вовод идёт много раз а вот запоминает он только 1 элемент который был введён последним! А мне нужно чтоб например в начале можно былло ввести данные сколько элементов будет в списке а потом все эти елементы ввести и чтоб они все сохранились и из этого списка найти наименьший елемент а потом наибольший............. Тебе несложно будет написать полностью весь код программы ??? чтоб нече лишнего там небыло.... только позаданию... мне скоро это здавать а решения нету паподаю жестоко unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(Greck @ 25.06.2006 6:33) *
Нет так неполучается вовод идёт много раз а вот запоминает он только 1 элемент который был введён последним!
Да, придется заменить ту строчку, которая есть сейчас в процедуре add_first на вот такую:
p^.next:=esim; { Ochishhaem sledujushhii element }
... Тогда все работает.

Цитата(Greck @ 25.06.2006 6:33)
А мне нужно чтоб например в начале можно былло ввести данные сколько элементов будет в списке а потом все эти елементы ввести и чтоб они все сохранились
Значит, тебе не в списки, а в массивы... Список потому и является списком, что заранее ты не знаешь количества элементов.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Пашка

Репутация: -  0  +


Вот условие
1. Написать программу поиска максимального элемента в линейном однонаправленном списке.
2. Написать программу поиска минимального элемента в линейном однонаправленном списке
Вот как бы ты её решил ???


И что то я непонял что ты изменил она там такаяже и есть.... p^.next:=nil;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата(Greck @ 25.06.2006 9:26)
Вот как бы ты её решил ???

Как я ее РЕШАЛ (без "бы"), ты можешь найти в поиске... Специально для тебя второй раз я ее делать не буду.

А мой пост внимательно перечитай, ибо это у тебя NIL, я же тебе говорю, что надо ПОМЕНЯТЬ, иначе не будет работать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Пашка

Репутация: -  0  +


Извеняюсь а мне в начале показалось что ты написал тоже самое что и было в исходнике. У меня остался последний вопрос : Вы мне написали вот эту функцию :

function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;


Но у меня неполучается вставить её в программу!

Пытаюсь это зделать на примере процедур тоесть вот так :

{
Spiski
}

program list;
uses crt;
type
typeofelement = integer;
spisok = ^knot;
knot = record
data: typeofelement; { Tip dannyh }
next: spisok; { Sledujushii element }
end;
var
esim: spisok; { Pervyi element }
p: spisok; { Ukazatel }
pnew: spisok;
key: integer;

{ dobavljaet pervyi element }
procedure add_first;
var answer: char;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
repeat
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=esim; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');

write('Добавить еще элемент? (y/n)'); readln(answer);
until upcase(answer) = 'N';
readln;
end;

{ vyvodit spisok na ekran }
procedure show;
begin
clrscr;
{ Esli pervyi pust, to vyvodim soobshhenie }
if esim = nil then
writeln('Spisok pust!')
else
{ Esli ne pust, to vyvodim spisok na ekran }
begin
writeln('Spisok:');
p := esim;
while p <> nil do
begin
writeln(p^.data);
p := p^.next;
end;
end;
readln;
end;
{noxogdenie nininun}
function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;

{ menu }
procedure menu;
begin
writeln('1 - Dobavlenie pervogo elementa');
writeln('2 - Vyvod spiska na ekran');
writeln('3 - Naxodim minimum');
writeln('0 - Vyhod');
end;

{ glavnaja programma }
begin
repeat
clrscr;
menu;
readln(key);
case key of
1: add_first; { Dobavit pervyi element }
2: show; { Vovesti spisok na ekran }
3 : min;
end;
until
key = 0;
end.



я так понимыю нажно в функцию function min: дабавить команду writeln () но как её написать ?? или она ненужна ??? ЕЩЁ РАЗ ИЗВЕНЯЮСЬ ЗА ТАКИЕ ГЛУПЫЕ ВОПРОСЫ!

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 20.09.2017 7:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"