Задача. Разработайте программу слияния двух односвязных упорядоченных по не убыванию линейных списков в один упорядоченный список.
Вобщем вот до чего я дошел. Народ вопрос как сделать так чтобы я вводил по 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.
Lapp
4.01.2011 11:52
Цитата(Toni_ @ 4.01.2011 0:47)
Вобщем вот до чего я дошел.
Неплохо )). Но все же выкладывай компилирующийся код, если он есть. Мне пришлось каскомментировать один 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
volvo
4.01.2011 14:10
Цитата
Неплохо )).
Ничего хорошего, кстати.
Во-первых, на кой делали процедуру вывода если по нажатию "4" опять ту же процедуру "растворяем" в программе?
Во-вторых: простейшая логика. Если я ввел 3 элемента списка: <1, 2, 3>, запрашиваю вывод только что введенных данных, и мне печатается <3, 2, 1> - у меня тут же сработает рефлекс: я нажму на 0 для выхода, и поставлю автору неуд. Ибо список должен обрабатываться и показываться мне не "задом наперед" (потому что так удобнее программисту), а так, как я его вводил (потому что так удобнее пользователю). Тем более, что я ввел действительно упорядоченные по неубыванию данные, а что мне будет выдано в итоге?
Lapp
4.01.2011 16:09
Цитата(volvo @ 4.01.2011 10:10)
Ничего хорошего, кстати.
Все же гораздо лучше, чем ничего (или чем ворованное). Человек, сделавший что-то сам, определенно заслуживает похвалы и поощрения. А недочеты - это исправимо )).
Toni_
5.01.2011 2:01
Lapp большое спс за испровления ошибок буду дальше разбираться
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.