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

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

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

 
 Ответить  Открыть новую тему 
> Процедуры., Очень нужна помощь: вставить в массив элементы
gryzlik
сообщение 30.11.2006 14:20
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Катя

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


Ребят, я уже просила помощи по этой задаче, но до конца её так и не довели. Помогите, пожалуйста! Программа работает не так, как нужно!
Вот условие задачи:
Написать подпрограмму для вставки m элементов в одномерный массив на указанное место


Program Zad_1;
type a=array [1..100] of real;
var l:a;
k, m,n,i: integer;
procedure Vstavka (var l:a; var n:integer; k,m:integer );
var i:integer;
begin
for i:= k+m to n do
l[i+m]:=l[i];
n:=n+m;
end;
begin
writeln('Vvedite razmer massiva');
readln(n);
writeln ('Vvedite poziciu nachala vstavki i kol-vo vstavlaemih elementov');
readln(k,m);
for i:=1 to n do begin
l[i]:=random(40)+10;
writeln(l[i] :4 :1);
end;
Vstavka(l,n,k,m);
writeln('Rezultat vstavki ');
for i:=1 to n do
writeln (l[i]4.gif1);
end.


Программа вставляет числа на позицию позже,чем я задаю, и копирует их до конца массива.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 30.11.2006 15:20
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цикл в процедуре нужно делать обратный (downto), иначе ты затираешь сам массив при передвижении:

for i:=n downto k do l[i+m]:=l[i];

Кроме того, непонятно, что именно ты вставляешь. По идее, за этим циклом должен быть другой - например, такой:

for i:=1 to m do l[k+i-1]:=V

Здесь V - это некая (real) величина для вставки, которую ты можешь тоже запросить для ввода, как запрашиваешь остальные данные.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
gryzlik
сообщение 30.11.2006 15:55
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Катя

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


Я не могу дать V несколько значений? То есть будет всегда вставляться одно и то же число?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 30.11.2006 17:29
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


можешь, конечно smile.gif
просто внутри цикла каждый раз спрашивай новое V
то есть
for i:=1 to m do 
begin
readln(V);
l[k+i-1]:=V;
end


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
gryzlik
сообщение 30.11.2006 21:49
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Катя

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


Спасибо. Очень помогли!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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