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

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

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

 
 Ответить  Открыть новую тему 
> Массив целых чисел
сообщение
Сообщение #1





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

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


Задача состоит в том, что нужно в массив целых чисел вставить какое-то число а между всеми элементами одного знака.
Выдает ошибку exitcode = 207
Буду благодарен за подсказку wink.gif

program massiv;
var
mas:array[1..115] of integer;
i,j,n,a:integer;
begin
randomize;
write('vvesti a ');
readln(a);
write('elementi massiva ');
for i:=1 to 15 do
mas[i]:=random(10);
for i:=1 to 15 do
write(' ',mas[i]);
readln;
n:=15;
j:=1;
i:=1;
while i<=n do
begin
if (mas[i]/abs(mas[i])=mas[i+1]/abs(mas[i+1])) then
begin
for j:=n downto (i+1) do
mas[j+1]:=mas[j];
mas[i+1]:=a;
inc(n);
i:=i+2;
end
end;
for i:=1 to n do
write(' ',mas[i]);
readln;
readln
end.


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


Ночной волк
**

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

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


program massiv;
var
mas:array[1..115] of integer;
i,j,n,a:integer;
begin
randomize;
write('vvesti a ');
readln(a);
write('elementi massiva ');
for i:=1 to 15 do
if random(2)=1 then
mas[i]:=-random(10)+1
else
mas[i]:=random(10)+1; { <--- Задаем отрицательные числа}

for i:=1 to 15 do
write(' ',mas[i]);
readln;
n:=15;
j:=1;
i:=1;
while i<=n do
begin
inc(i);{<--Увеличиваем i}
if ((mas[i]>0) and (mas[i+1]<0)) or ((mas[i+1]>0) and (mas[i]<0)) then {<--- Обычное логическое выражение}
begin
for j:=n downto (i+1) do
mas[j+1]:=mas[j];
mas[i+1]:=a;
inc(n);
i:=i+1;
end;
end;

for i:=1 to n do
write(' ',mas[i]);
readln;
readln
end.

У меня ошибка называется 200 - деление на ноль.
Логика быстрее деления, особенно если в массиве большие числа. К тому же это и вызывает ошибку. Заменил.
Ты не инкриминируешь i если нет разнознаковых элементов, что дает бесконечный цикл
Ты не задаешь отрицательных элементов.


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


большое спасибо!
почему-то пропустил эту ошибку с i.. а отрицательные числа не стал пока вводить по той причине, что и с положительными не получалось. еще раз спасибо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






ammaximus, твой код решает задачу некорректно: надо вставить число между элементами с одинаковыми знаками, а не с разными (ноль - это положительное число, кстати, или отрицательное? В твоем варианте они вообще не учитываются). К тому же, не надо брать на себя работу компилятора, он прекрасно справляется с ней сам:
        i:=0; { <--- Если оставить 1, то первая пара может быть пропущена }
while i<=n do
begin
inc(i);
if ((mas[i]>0) and (mas[i+1]>0)) or ((mas[i+1]<0) and (mas[i]<0)) then { <--- условие заменено }
begin
move(mas[i+1], mas[i+2], (n - i)*sizeof(integer)); { <--- и зачем мне цикл? }
(*
for j:=n downto (i+1) do
mas[j+1]:=mas[j];
*)
mas[i+1]:=a;
inc(n);
i:=i+1;
end;
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ночной волк
**

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

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


Действительно, перепутал с условием.


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 12:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name