есть массив X, составленный из n-элементов, нужно сформировать массив Y из положительных элементов исходного массива и массив Z из НЕотрицательных элементов исходного массива.

+++

не понимаю, где ошибка(

@темы: Информатика

Комментарии
21.12.2007 в 11:27

На плечах гигантов, на спинах электронов
не могу придумать ничего круче этого.
У тебя z - получается не массив из НЕотрицательных, а массив из НЕположительных чисел.
Условие для попадания в z должно быть: x[i]>=0
21.12.2007 в 11:32

я когда запускаю программу у меня сразу же закрывается окно где мне надо числа вводить
21.12.2007 в 11:38

ааа
нет
окошечко запускается
но после того как я ввожу числа 2 3 3
сразу же выдается ответ примерно такой: 3.0000000000000000Е+000000000 и
еще раз 3.000000000000000000Е+0000000
21.12.2007 в 11:57

На плечах гигантов, на спинах электронов
не могу придумать ничего круче этого.
У тебя там еще куча ошибок!
Зачем ты n вводишь с клавиатуры?
У тебя n должно быть равно a!
readln(n); надо убрать, а вместо него вставить n:=a;

В двух циклах вывода массивов y и z - наоборот лишний begin!

И обязательно переделай проверку для z

Я сделала, у меня всё работает.
Попробуй исправить всё, что я сказала.
21.12.2007 в 12:12

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

const
a=10;
var
x,y,z:array[1..a] of integer;
i,k,b,n:integer;
begin
write ('Vvedite elementy massiva: ');
n:=a;
for i:=1 to n do readln (x[i]);
k:=0;
b:=0;
for i:=1 to n do
if x[i]>=0 then begin
k:=k+1;
y[k]:=x[i];
end
else
b:=b+1;
z[b]:=x[i];
for i:=1 to k do writeln (y[i]);
for i:=1 to b do writeln (z[i]);
readln;
end.


ну вот
я ввожу все вообще отрицательные элементы а выводятся одни нули
21.12.2007 в 12:24

На плечах гигантов, на спинах электронов
Вот это:

for i:=1 to n do
if x[i]>=0 then begin
k:=k+1;
y[k]:=x[i];
end
else
b:=b+1;
z[b]:=x[i];

неправильно.

Для у должно стоять условие: x[i]>0

А потом должен идти второй if для z:
for i:=1 to n do
begin
if x[i]>0 then begin
k:=k+1;
y[k]:=x[i];
end;

if x[i]>=0 then begin
b:=b+1;
z[b]:=x[i];
end;
end;

Только тогда у будет состять из строго положительных элементов, а z из положительных и нулей (то есть НЕотрицательных)



21.12.2007 в 12:27

На плечах гигантов, на спинах электронов
for i:=1 to k do writeln (y[i]);
for i:=1 to b do writeln (z[i]);


Поставь между ними readln, чтобы видеть, когда один массив кончится и начнется другой.

21.12.2007 в 12:32

боже. а когда я ставлю такое условие выводятся два одинаковых массива абсолютно и оба из положительных элементов
21.12.2007 в 12:45

На плечах гигантов, на спинах электронов
не могу придумать ничего круче этого. а ты нули вбиваешь?
Первый и второй массив должны отличаться ТОЛЬКО нулевыми элементами: в первом их нет, а во втором - есть!
21.12.2007 в 12:47

ну я ввожу элементы
-1 2 -3 4 -5 6 -7 8 -9 10

в первом массиве должны быть жлементы -1 -3 -5 -7 -9
а во втором 2 4 6 8 10
21.12.2007 в 12:48

а
все ясно у тебя стоит другое условие.
21.12.2007 в 12:52

На плечах гигантов, на спинах электронов
не могу придумать ничего круче этого.
!!!!!!!!!!!!
Я же тебе уже СТО раз говорила: НЕ-ОТРИЦАТЕЛЬНЫЕ — это значит положительные + нули!!!
Мое условие ПРАВИЛЬНОЕ, а твои ожидания — нет)))
Введи несколько нулей, а также положительных и отрицательных чисел и посмотри!
21.12.2007 в 12:55

На плечах гигантов, на спинах электронов
в первом должны быть положительные элементы (>0)
а во втором неотрицательные (>=0)
это же у тебя в условии написано.
21.12.2007 в 12:55

мое условие задачи неверное
мне надо было один массив из положительных и нулей
а другой из отрицательных
21.12.2007 в 12:57

На плечах гигантов, на спинах электронов
21.12.2007 в 12:57

Дилетант дааа я знаю я видимо думала о другом когда писала условие) там ошибка
да ладно забей спасибо огромное)