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

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

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

> вставка элементов одномерных массивов, как доделать задачу?
tryno
сообщение 21.12.2006 0:20
Сообщение #1


Новичок
*

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

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


Нужно Вставить число T
перед всеми элементами меньшими числа P
(вставка и удаление элементов одномерных массивов)

Program s;
Const n=7;
Type myarray = Array[1.. 2*n] Of Integer;
Var A : myarray;
x, k, i, p, t, y :Integer;
Procedure Init(Var m: myarray);
begin
writeln(' ','Vveden massiv: ');
for i:=1 to n do begin
m[i]:=random(20);
end;
end;
Procedure Print(n1: Integer; m: myarray);
begin
write(' ');
for i:=1 to n1 do
write(' ',m[i]);
end;

Procedure Insert2(k1, x1: Integer; Var m: myarray);
Var i : Integer;
begin{сдвиг элементов на одну позицию назад, - это номер последнего эл. в дан. мом.}
For i:= n+k Downto k1-1 Do
m[i+1]:= m[i];{ вставка эл. на место перед k1-м}
m[k1-1]:=x1;{увеличение счетчика вставляемых элементов}
Inc(k);
end;


Begin
Init(A);Print(n,A);
Write(' ','Vvedite vstavlyaemoe chislo T:');Readln(y);
Write(' ','Vvedite chislo dlya sravnenya P:');Readln(P);
k:=0;
For i:= n Downto 1 Do If A[i]<P Then Insert2(i,y,A);
Print(n+k,A);
Readln;
End.
Как доделать программу чтоб работала ?
М
Используй теги и НЕ используй цвет в программе. Lapp

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
мисс_граффити
сообщение 21.12.2006 0:56
Сообщение #2


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

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

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


у меня вот такое получилось:
program vstavka;
uses crt;
const n=5;
var ar:array[1..2*n] of integer;
i,j,t,p,razm:integer;
begin
clrscr;
{заполнение с выводом на экран}
for i:=1 to n do
begin
ar[i]:=random(10);
write(ar[i]:3);
end;

p:=10; {здесь сделаешь ввод, а не присваивание... если хочешь}
t:=9;

razm:=n;
i:=1;
while i<=razm do
begin
if ar[i]<p then

{сдвиг и вставка}
begin
for j:=razm downto i do
ar[j+1]:=ar[j];
ar[i]:=t;
inc(i);
inc(razm);
end;

inc(i);
end;
writeln;
{вывод результата}
for i:=1 to razm do
write(ar[i]:3);
readln;
end.

подпрограммы специально не стала выделять... думаю, сама это сделаешь без труда.


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


Новичок
*

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

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


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

Сообщений в этой теме


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

 



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