Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Сжатие массива (http://www.tehnari.ru/f41/t82823/)

Serega61 23.12.2012 05:09

Сжатие массива
 
Дан массив x(n). Переписать в массив y(n) элементы массива x, большие 3. pascal ABC. Как убрать нули во втором массиве?

program lab9_3;
const n=10;
var a: array[1..n] of real;
b: array[1..n] of real;
i,kol: integer;
begin
randomize;
for i:=1 to n do
begin
a[i]:=random(100)-50;
writeln('a=', a[i]);
end;
kol:=1;
for i:=1 to n do
begin
if a[i]>3 then
b[kol]:=a[i];
kol:=kol+1;
writeln('b[i]=',b[i]);
end;
end.


Результат:
a=-38
a=9
a=48
a=34
a=-9
a=30
a=22
a=23
a=29
a=35
b[i]=0
b[i]=9
b[i]=48
b[i]=34
b[i]=0
b[i]=30
b[i]=22
b[i]=23
b[i]=29
b[i]=35

duc 23.12.2012 08:19

Кроме оператора then, есть ещё и else ;)
Вы просто обходите случай, когда число в первом массиве меньше трёх.
Цитата:

program lab9_3;
const n=10;
var a: array[1..n] of real;
b: array[1..n] of real;
i,kol: integer;
begin
randomize;
for i:=1 to n do
begin
a[i]:=random(100)-50;
writeln('a=', a[i]);
end;
kol:=1;
for i:=1 to n do
begin
if a[i]>3 then begin
b[kol]:=a[i];
writeln('b[kol]=',b[kol]);
kol:=kol+1;
end;
else rem;
end;
end.
К сожалению Паскаля под руками нет, да и голова ещё не просохла со вчерашнего, так что проверить сейчас не могу ;)
В разных версиях компиляторов результаты могут быть разными.
И, пожалуйста, выбирайте раздел для создания темы. Переношу...
P.S. Формулируйте задачи точнее.

Vladimir_S 23.12.2012 09:03

В цикле несколько ошибок. У Вас:
Цитата:

Сообщение от Serega61 (Сообщение 837603)
kol:=1;
for i:=1 to n do
begin
if a[i]>3 then
b[kol]:=a[i];
kol:=kol+1;
writeln('b[i]=',b[i]);
end;

Надо:
Код:

kol:=0;
for i:=1 to n do 
 if a[i]>3 then
  begin
  kol:=kol+1;
  b[kol]:=a[i];
  writeln('b[',kol,']=',b[kol]);
  end;


Serega61 23.12.2012 15:08

Спасибо, помогло, все работает!


Часовой пояс GMT +4, время: 15:57.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.