1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Задача. Разработайте программу слияния двух односвязных упорядоченных по не убыванию линейных списков в один упорядоченный список.
Вобщем вот до чего я дошел. Народ вопрос как сделать так чтобы я вводил по 1 элементу? а не водил скока я хочу вести елементов..... Помогите кто чем может
Program spisok_PR_15; uses crt; type link=^item; item=record data:integer; ref:link; end;
var px,py:link; n,i:integer; a:^integer; ch:char;
Procedure vivod; begin While py<>nil do {Vivod spiska} begin write(py^.data,' '); py:=py^.ref end; end; begin
#49: {1} begin px:=nil; {sozdanie spiska, Также я тут задаю количество вводимых элементо, как сделать так чтобы я вводил по 1 элементу} Writeln('Kolichestvo vvodimix elementov'); Read(n); For i:=1 to n do begin New(py); Read(a^); py^.data:=a^; py^.ref:=px; px:=py; {end;} end;
#52: {4 } begin While py<>nil do {Vivod spiska} begin write(py^.data,' '); py:=py^.ref end; readkey; end; end until ch=#48; {0} end.
Неплохо )). Но все же выкладывай компилирующийся код, если он есть. Мне пришлось каскомментировать один end. Кроме того, я причесал код (отформатировал) и убрал совершенно непонятное "a", которое не было аллоцированно и крэшило прогу (к счастью, оно оказалось совершенно ненужным)). Вот, "до чего я дошел" :
Program spisok_PR_15; uses crt; type link= ^item; item= record data: integer; ref: link; end;
var px,py: link; n,i: integer; ch: char;
Procedure vivod; begin While py<>nil do {Vivod spiska} begin write(py^.data,' '); py:=py^.ref end; end;
Readln(ch); Case ch of '1': begin px:=nil; {sozdanie spiska, Также я тут задаю количество вводимых элементо, как сделать так чтобы я вводил по 1 элементу} Writeln('Kolichestvo vvodimix elementov'); Read(n); For i:=1 to n do begin New(py); Read(py^.data); py^.ref:=px; px:=py; end; end; '4': begin While py<>nil do begin {Vivod spiska} write(py^.data,' '); py:=py^.ref end; readkey; end; end until ch='0' end.
Цитата
Народ вопрос как сделать так чтобы я вводил по 1 элементу? а не водил скока я хочу вести елементов..... Помогите кто чем может
Тебе и не снилось, что мы можем. Ты только говори яснее. Что значит "по 1 элементу"? То есть прекращать ввод по какому-то признаку? Самое простое - выбрать какое-то число, как признак окончания ввода (например, 0). Но тогда в твой список невозможно будет ввести это число. Второй способ: вводить не число, а строку, и переводить эту строку в число в программе. Тогда можно будет прекращать ввод по вводу слова "end" (или любого другого). Третий способ: вводить посимвольно, составлять строку и переводить ее в число. Тогда можно будет сделать окончание ввода по нажатии, например, Esc. Четвертый и последний способ довольно простой (проще 2 и 3). Он содержит некоторый трюк. Можно отключать проверку ошибок ввода - а точнее - брать ее на себя. И выходить из цикла ввода по ошибке. Тогда для выхода нужно просто ввести любой нецифровой символ (например, A или q, или ф..). Делается примерно так:
Stop:=false; repeat Write('Введите очередной элемент: '); {$I-} ReadLn(x); {$I+} if IOResult=0 then begin {тут добавление элемента в список} end else Stop:=true until Stop;
Попробуй и спрашивай, что непонятно.
PS Еще, просьба к тебе: используй теги code=pas
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой
Во-первых, на кой делали процедуру вывода если по нажатию "4" опять ту же процедуру "растворяем" в программе?
Во-вторых: простейшая логика. Если я ввел 3 элемента списка: <1, 2, 3>, запрашиваю вывод только что введенных данных, и мне печатается <3, 2, 1> - у меня тут же сработает рефлекс: я нажму на 0 для выхода, и поставлю автору неуд. Ибо список должен обрабатываться и показываться мне не "задом наперед" (потому что так удобнее программисту), а так, как я его вводил (потому что так удобнее пользователю). Тем более, что я ввел действительно упорядоченные по неубыванию данные, а что мне будет выдано в итоге?
Все же гораздо лучше, чем ничего (или чем ворованное). Человек, сделавший что-то сам, определенно заслуживает похвалы и поощрения. А недочеты - это исправимо )).
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой