Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 18:23   #1
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию преобразовать массив

Массив H = (6, –6, –3, 8, 4, –7, 0) преобразован к виду H = (14, 0, 0, 16, 12, 0, 8). Размер массива H - 10 элементов. из диапазона [–44,44] Вычислить произведение тех элементов преобразованного массива, которые находятся в диапазоне [0, 18].

В итоге прога ерунду какую-то выдает) В чем ошибся?

Program labor3;
uses crt;
const kol_el=10;
type mas=array[1..kol_el] of integer;
var i,p,pr:integer;
h:mas;

procedure preobr(var a:mas);
var i:integer;
begin
for i:=1 to kol_el do
begin
if (a[i]<0) then
a[i]:=0
else
a[i]:=a[i]+8;
end;
end;

Begin
clrscr;
Randomize;
for i:=1 to kol_el do
begin
h[i]:=Random(89)-44;
write(' ',h[i]);
end;


begin
for i:=1 to kol_el do
begin
p:=1;
if ((h[i]<19) and (h[i]>=0) ) then
pr:=p*h[i];
p:=pr;
end;
write;
writeln(' proizvedenie elementov = ',pr);
end;
end.
ai\ekcah^p вне форума Ответить с цитированием
Старый 11.05.2009, 18:54   #2
bobby2008
Пользователь
 
Аватар для bobby2008
 
Регистрация: 13.04.2009
Сообщений: 37
По умолчанию

Немного переделал. Вы же процедуру задавали, зачем, если вы ее не используете? И р не там приравняли и после then begin и end не поставили.Теперь вроде работает. Вот:
Код:
Program labor3;
uses crt;
const kol_el=10;
type mas=array[1..kol_el] of integer;
var i,p,pr:integer;
h:mas;

procedure preobr(var a:mas);
var i:integer;
begin
for i:=1 to kol_el do
begin
if (a[i]<0) then
a[i]:=0
else
a[i]:=a[i]+8;
end;
end;

Begin
clrscr;
Randomize;
for i:=1 to kol_el do
begin
h[i]:=Random(89)-44;
write(' ',h[i]);
end;
WRITELN;
preobr(h);
for i:=1 to kol_el do
write(' ',h[i]);
p:=1;
for i:=1 to kol_el do
begin
if ((h[i]<19) and (h[i]>0) ) then BEGIN
pr:=p*h[i];
p:=pr;
end;
end;
write;
writeln(' proizvedenie elementov = ',pr);
readln;
end.
bobby2008 вне форума Ответить с цитированием
Старый 11.05.2009, 19:06   #3
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

пишет арифметическое переполнение
h[i]:=Random(89)-44;
что это значит?
ai\ekcah^p вне форума Ответить с цитированием
Старый 11.05.2009, 19:29   #4
bobby2008
Пользователь
 
Аватар для bobby2008
 
Регистрация: 13.04.2009
Сообщений: 37
По умолчанию

У меня все нормально работает...
bobby2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать массив ai\ekcah^p Помощь студентам 2 04.05.2009 20:52
Преобразовать в дату Iskin Microsoft Office Excel 2 14.04.2009 07:57
Как преобразовать одномерный массив? kitty Помощь студентам 1 01.12.2007 20:16
помогите преобразовать одномерный массив kitty Помощь студентам 1 29.11.2007 21:58
ПРЕОБРАЗОВАТЬ malevich Общие вопросы Delphi 1 07.12.2006 21:08