![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
mithquessir |
![]()
Сообщение
#1
|
Гость ![]() |
Цитата Дан одномерный массив. Все его элементы, не равные нулю, переписать(сохраняя их порядок) в начало массива, а нулевые элементы в конец массив (новый массив не заводить). У меня получилось только если в массиве 1 ноль: Код var x: array[1..5] of integer; n,i,j:integer; begin n := 0; x[1] := 3;x[2] := 0;x[3] := 2;x[4] := 0;x[5] := 5; for i := 1 to 5 do begin if x[i] = 0 then n := 1; if n = 1 then begin x[i] := x[i + 1]; if i = 5 then begin x[i] := 0; n := 0; end; end; end; for j := 1 to 5 do Write(x[j],' '); end. Как быть? Доделайте, кто может, pls. 2 admin Я зарегился, прочитал ФАК от корки до корки, там этого нет ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Проверь... Я не компилировал - мог ошибиться. Хотя вряд ли.
const
n = 10;
x: array[1 .. n] of integer =
( 1, 2, 0, 4, 5, 0, 0, 7, 8, 9);
var
i, j: integer;
numzero: integer;
begin
numzero := 0;
i := 1;
while i <= n - numzero do
if x[i] = 0 then
begin
for j := i to n-numzero-1 do
x[j] := x[j+1];
x[n - numzero] := 0;
numzero := numzero + 1;
end
else inc(i);
for i := 1 to n do
write(x[i]:4);
writeln;
readln
end.
|
Atos |
![]()
Сообщение
#3
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Если понадобится сделать чуть более эффективнее:
const
n = 10;
x: array[1 .. n] of integer =( 1, 2, 0, 4, 5, 0, 0, 7, 8, 9);
var
i, j: integer;
numzero: integer;
begin
numzero := 0;
for i:=1 to n do if x[i]=0 then inc(numzero) else x[i-numzero]:=x[i];
for i:=n+1-numzero to n do x[i]:=0;
for i := 1 to n do
write(x[i]:4);
writeln;
readln
end.
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:12 |