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

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

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

 
 Ответить  Открыть новую тему 
> Сортировка списка, что-то не так видимо делаю
сообщение
Сообщение #1


Гость






Люди! Здраствуйте! Помогите! Почему-то не хочет работать задача: "Ввести 2 списка. Объеденить. Отсортировать объединённый список.
Вот задача:

program lab1_2;
uses	crt;
type	plist = ^tlist;
	tlist = record
		info: integer;
		link: plist;
	end;
var	first1, posl1, first2, posl2: plist;
	p, k, max: plist;
	s: integer;
	n, i: integer;
procedure vvod (var first, posl: plist);
var s: integer;
begin
	posl:=first;
	write ('Введите следующий элемент: ');
	readln(s);
	while s<>-999 do
		begin
			new(p);
			p^.info:=s;
			p^.link:=posl;
			posl:=p;
			write ('Введите следующий элемент: ');
			readln(s);
		end;
end;
begin
	clrscr;
	first1:=nil;
	vvod (first1, posl1);
	first2:=nil;
	vvod (first2, posl2);
 	p:=posl2;
{Объединение}
	while p<>nil do begin
		if p^.link = nil then begin
			p^.link:=posl1;
			break;
		end;
	    p:=p^.link;
	end;
{Вывод объединённого}
	p:= posl2;
	while p<>nil do begin
		inc (n);
		write (p^.info, ' ');
		p:=p^.link;
	end;
{Сортировка}
  k:= posl2;
  for i:=1 to n do
      begin
	p:=k;
	max:=p;
	while p<>nil do
		begin
			if max^.info < p^.info then max:= p;
			p:=p^.link;
		end;          
	s:=max^.info;
	max^.info:= p^.info;
	p^.info:= s;
	k:=k^.link;
      end;
{Вывод отсортированного}
	writeln;
	p:= posl2;
	while p<>nil do begin
		inc (n);
		write (p^.info, ' ');
		p:=p^.link;
	end;
  	readkey;
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






-Павел-, вопрос на засыпку: ты уверен, что они правильно вводятся? wink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Выводится всё вроде Верно... sad.gif
Помогите люди! Завтра сдавать уже - хана будет! sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Как-то вот так:
program lab1_2;
uses crt;
type
  plist = ^tlist;
  tlist = record
    info: integer;
    link: plist;
  end;
var
  first1, posl1, first2, posl2: plist;

procedure print(p: plist);
begin
  while p <> nil do begin
    write(p^.info:5);
    p := p^.link
  end;
  writeln;
end;

procedure vvod (var first, last: plist);
var
  s: integer;
  p: plist;
begin

  last := first;
  repeat
    write('Введите следующий элемент: '); readln(s);
    if s <> -999 then begin
      new(p);
      p^.info := s;
      p^.link := nil;

      if first = nil then first := p
      else last^.link := p;
      last := p;
    end;
  until s = -999;

end;

var
  ii, jj, nmin: plist;
  T: integer;

begin
  clrscr;
  writeln('Первый список:');
  first1:=nil; vvod (first1, posl1);
  print(first1);

  writeln('Второй список:');
  first2:=nil; vvod(first2, posl2);
  print(first2);

  writeln('Объединенный список:');
  posl1^.link := first2;
  print(first1);

  { Сортировка ! }
  ii := first1;
  while ii^.link <> nil do begin
    nmin := ii;

    jj := ii^.link;
    while jj <> nil do begin
      if jj^.info < nmin^.info then nmin := jj;
      jj := jj^.link;
    end;

    T := ii^.info;
    ii^.info := nmin^.info;
    nmin^.info := T;

    ii := ii^.link;
  end;
  writeln('Отсортированный список:');
  print(first1);

end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Спасибо! щас опробую!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






volvo - ты монстр в Pascale... Спасибо огромное - всё работает супер...
Я просто програмёр во Flash (ActionScript) - так что если что надо обращайся!
dogpaul@yandex.ru

З.Ы. Щас эту задачу в лабу оформлю и бдуу длеать "Сортировка списка слиянием" - так что есличё не получиться, прошу о помощи! smile.gif ;)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






2volvo
Слушай! Ты уж извини что дастаю...
Вот если первый список пустой, то ваще он их не объединяет...
Я впрнципе понимаю что что-то в перменных first и posl... а вот что... sad.gif
Помоги!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Замени это:
...
  writeln('Объединенный список:');
  posl1^.link := first2;
  print(first1);
...

на это:
...
  writeln('Объединенный список:');
  if first1 = nil then first1 := first2
  else posl1^.link := first2;
  print(first1);
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Спасибо! готов просто расцеловать! smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






blink.gif no1.gif Не надо ... lol.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Cialis.60mg.Sale
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Buy Synthroid Mexico
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 7.04.2025 6:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name