Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2012, 05:09   #1 (permalink)
Serega61
Новичок
 
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Сжатие массива

Дан массив 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
Serega61 вне форума   Ответить с цитированием

Старый 23.12.2012, 05:09
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посоветую вам прочитать содержимое данных топиков

Медленное копирование и сжатие файлов
Сортировка массива

Старый 23.12.2012, 08:19   #2 (permalink)
duc
Banned
 
Регистрация: 23.11.2010
Сообщений: 6,749
Сказал(а) спасибо: 18
Поблагодарили 27 раз(а) в 6 сообщениях
Репутация: 17514
По умолчанию

Кроме оператора 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. Формулируйте задачи точнее.
duc вне форума   Ответить с цитированием
Старый 23.12.2012, 09:03   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

В цикле несколько ошибок. У Вас:
Цитата:
Сообщение от Serega61 Посмотреть сообщение
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;
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2012, 15:08   #4 (permalink)
Serega61
Новичок
 
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, помогло, все работает!
Serega61 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.