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

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

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

> Вставка нового эл-та и со сдвигом массива, чес говоря даже стыдно, но сам не зделаю
kr3v3tkus
сообщение 29.11.2005 18:39
Сообщение #1


Пионер
**

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

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


Задали задачку:
массив [-40;30] константа 10
1.удалить эл-т если в нём есть цифра 1
2.если эл-т состоит из одной цифры или цифры одинаковы (22,33 итд) то вставить перед ним число К с клавы, соответственно при этом мдвинув все эл-ты вправо на 1
3.сделать замену 3х первых и последних эл-тов, сохраняя последовательность
Вобщем 1 и 3 вроде сделал , а 2е НИКАК D: никак не получается нормально присвоить и сдвинуть ((( подскажите или натолкните на мыслю плз
ЗЫ вроде в факе такого не нашёл, я тут первый раз, так что не бейте сапогами плиз


program variant1;
const n=10;
type arr=array[1..n] of integer;
var a:arr;
   i,k,t,q:integer;
   temp1,temp2,temp3:integer;
begin
begin{'vvod massiva'}
 writeln('zapolniaetsia massiv');
 for i:=1 to n do
 begin
 a[i]:=-40+(random(70));
 writeln(i,'element =',a[i]);
 end;
end;
begin{'ydalenie elementa'}
q:=0;
 for i:=1 to n do
  if ((a[i] mod 10 = a[i] div 10) or (a[i] div 10 = 0)) then
  begin
   q:=q+1;
   a[i]:=a[i+1];
  end;
for i:=1 to n-q do
writeln(a[i]);
end;
readln;
readln;
begin{'vstavka K'}
writeln('vvesti k');
readln(k);
for i:=1 to n do
 if ((a[i] mod 10 =1) or (a[i] div 10 =1)) then
  begin
  i:=t;
  for i:=t to n do
  a[i+1]:=a[i];
  a[t]:=k;
  end;
for i:=1 to n do
writeln(a[i]);
end;
readln;
readln;
begin{'perestanovka'}
temp1:=0;
temp2:=0;
temp3:=0;
 temp1:=a[n-2];
 temp2:=a[n-1];
 temp3:=a[n];
 a[n-2]:=a[1];
 a[n-1]:=a[2];
 a[n]:=a[3];
 a[1]:=temp1;
 a[2]:=temp2;
 a[3]:=temp3;
 for i:=1 to n do
  writeln(i,' element = ',a[i]);
end;
readln;
readln;
end.



--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 29.11.2005 23:52
Сообщение #2


Гость






kr3v3tkus,
проверь логику работы (у меня выполняются все 3 действия последовательно, но проблемы сделать это отдельно я не вижу)... Если пойдет - расскажу, что и как сделал, и почему у тебя было не совсем корректно wink.gif
program variant1;

const
n = 10;

type
arr = array[1..2*n] of integer;

{ Это - для контроля работы программы... }
procedure print(const a: arr; const n: integer);
var i: integer;
begin
for i := 1 to n do
write(a[i]:4);
writeln;
end;

var
a:arr;
i,j,k,t,q:integer;
temp1,temp2,temp3:integer;

begin
{ 'vvod massiva' }
writeln('zapolniaetsia massiv');
for i:=1 to n do begin
a[i]:= -40 + (random(70));
writeln(i:2, ' element = ',a[i]:4);
end;
for i := n+1 to 2*n do a[i] := 0;

print(a, n);

{ 'ydalenie elementa' }
i := 1; q := n;
while i <= q do begin
if (abs(a[i]) mod 10 = 1) or (abs(a[i]) div 10 = 1) then begin
for j := i to q-1 do a[j] := a[j+1];
dec(q);
end
else inc(i)
end;

print(a, q);

{ vstavka }
write('k = '); readln(k);
i := 1;
while i <= q do begin
if ((abs(a[i]) >= 0) and (abs(a[i]) <= 9)) or
(abs(a[i]) mod 11 = 0) then begin
for j := q downto i do a[j+1] := a[j];
inc(q); a[i] := k; inc(i)
end;
inc(i);
end;

print(a, q);

{ zamena }
if Q > 3 then
for i := 1 to 3 do begin
T := a[i];
a[i] := a[q-3+i];
a[q-3+i] := T;
end
else writeln('not enough elements');

print(a, q);

end.
 К началу страницы 
+ Ответить 

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


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

 



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