Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Процедуры и функции

Автор: Танкистка 25.11.2006 1:48

Написать подпрограмму для вставки элемента в одномерный массив на указанное место.

Я просто неочень разбираюсь с процедурами.. и вот..чет сидела думала, какую-то хрень сделала, ток ниче не понимаю.... сделала, как сказать, как подсказывала интуиция)) хехех.. вот а под конец проги интуиция замолчала и он не получился...

const n=20;
var t:array[1..n] of real;
i,a:integer;
procedure vstavka(k:integer;var t:integer);
begin
t:=k;
end;
begin
randomize;
for i:=1 to n do
begin
t[i]:=random(40);
writeln(t[i]:7:3);
end;
writeln('vvedite chislo');
readln(a);
writeln('vvedite nomer elementa v massive');
readln(i);
vstavka(t[i],k);
writeln('element vstavlen');
for i:=1 to n do
begin
writeln(t[i]:7:3);
end;
readln
end.

М
Теги, теги! ТЕГИ!! Подумай о тех, кто читает! Lapp


Автор: мисс_граффити 25.11.2006 2:07

ну, во-первых пользуйся тегами, когда выкладываешь программки.
во-вторых, мне это не нравится:


var t:array[1..n] of real;
...
procedure vstavka(k:integer;var t:integer);


дальше.
вызываешь ты ее вот так:
vstavka(t[i],k);

то есть по сути делаешь k:=t[i]
что такое k для головной программы - я не поняла. где объявлено - не нашла.

кроме того
в моем понимании вставка - это вот так:
было: 1 2 3 4 5
вставить: 0 на 1 позицию
стало: 0 1 2 3 4 5
а у тебя будет: 0 2 3 4 5
ты так и хочешь?

Автор: Танкистка 26.11.2006 17:11

ну про k я видимо не доглядела.... я хочу так 0 2 3 4 5. там же не надо сам массив сдвигать... надо просто как я поняла заменить допустим символ на первом месте на другой.

Автор: Танкистка 29.11.2006 23:59


const n=20;
var t:array[1..n] of real;
i,a:integer;
procedure vstavka(k:integer;var t:integer);
begin
t:=k;
end;
begin
randomize;
for i:=1 to n do
begin
t[i]:=random(40);
writeln(t[i]:7:3);
end;
writeln('vvedite chislo');
readln(a);
writeln('vvedite nomer elementa v massive');
readln(i);
vstavka(a,t[i]);
writeln('element vstavlen');
for i:=1 to n do
begin
writeln(t[i]:7:3);
end;
readln
end.


Вот короче чет исправила.. но все равно нифига не получается... может я вообще конечно ничего не понимаю в процедурах... блин.. пожалуйста объясните мне в чем ошибка.... я хочу понять это!...

Автор: мисс_граффити 30.11.2006 0:07

ну, это называется не вставка, а замена.
ладно, дело твое...


var t:array[1..n] of real;{массив из real}
...
procedure vstavka(k:integer;var t:integer);{надо передать 2 integer'а}
...
vstavka(a,t[i]);{а что ты передаешь?}