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

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

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

> Одномерный массив., Немного подкорректировать программу
**star**
сообщение 4.11.2009 17:51
Сообщение #1





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

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


В массивее А = ( а1, а2, . . . аn ) все положительные элементы ,
начиная со второго положительного, отправить в хвост массива .
( Новый массив не создавать ).

Есть программа,но почему-то не всегда работает правильно...
Program Lab;
Uses crt;

type arr=array[1..15] of integer;
var a:arr;
p,k,i,j,n:integer;

begin
clrscr;
writeln;
writeln('Dan odnomernij massiv celih chisel');
writeln('W massiwe wse pologitelnie element,nachinaja so wtorogo, otprawit w hwost massiwa');
writeln;
{$R+}
n:=15;
randomize;
writeln('Ishodnij massiv:');
for i:=1 to n do
begin
a[i]:=-20+random(41);
write(a[i]:4);
end;
writeln;
k:=0;
p:=0;
for i:=1 to n do
begin
if a[i]>=0 then
begin
k:=k+1;
if k>1 then
begin
p:=a[i];
for j:=i to n do
if j<>n then
a[j]:=a[j+1]
else
a[j]:=p;
i:=i-1;
end;
end;
end;
Writeln('Resultat obrabotki');
for i:=1 to n do
write(a[i]:4);
readln;
{$R-}
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 4.11.2009 18:01
Сообщение #2


Гость






Цитата
for i:=1 to n do
begin
if a[i]>=0 then
begin
k:=k+1;
if k>1 then
begin
p:=a[i];
for j:=i to n do
if j<>n then
a[j]:=a[j+1]
else
a[j]:=p;
i:=i-1; { <------ !!! Вот на эту строку посмотри !!! }
end;
end;
end;
, и больше никогда так не делай. Нельзя менять переменную I внутри цикла. Это делает сам компилятор. Если тебе обязательно надо контролировать i самостоятельно - есть другие циклы: while и repeat...
 К началу страницы 
+ Ответить 

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


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

 



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