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

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   функции в паскале (http://www.tehnari.ru/f43/t11301/)

котопек 13.05.2008 09:09

Помогите пожалуйста решить задачи или дайте ссылу на их решения.заранее благодарен
1)Даны три массива А( 10 ),В( 8 ),С( 12 ).Подсчитать для каждого массива среднее арифметическое его положительных элементов,для чего использовать подпрограмму-функию
2)Имеются массивы вещественного типа {х1,х2,х3,..,х10} и {у1,у2,у3...у10},вычислить
z1 = (х1*у1+х3*у3+..+х9*у9) / ( х2*у2+х4*у4+..+х10*у10 )

bubuka 13.05.2008 11:06

1.
type
mas = record
masiv:array [1..100] of integer;
dlinna:integer;
end;


function sred(d:mas);
var
i,k:integer;
otv:real;
begin
otv:=0;
k:=0;
for i:=1 to d.dlinna do
if d.masiv[i]>0 then begin otv:=otv+d.masiv[i]; k:=k+1;
otv:=otv/k;
sred:=otv;
end;


var
a,b,c:mas;
i:integer;

begin
a.dlinna=10;
for i:=1 to a.dlinna do
readln(a.masiv[i]);
writeln(sred(a));

b.dlinna:=8;
for i:=1 to b.dlinna do
readln(b.masiv[i]);
writeln(sred(b));

c.dlinna:=12
for i:=1 to c.dlinna do
readln(c.masiv[i]);
writeln(sred(c));

end.

bubuka 13.05.2008 11:07

ща через часик вторую напишу если актуально еще
кстате во втотрой тоже использовать функцию или процендуру?

AlexZir 13.05.2008 16:27

bubuka
В функции end; не хватает ;).

AlexZir 13.05.2008 16:41

Код:

program gyyyyyyyy;

var X,Y: array [1..10] of real;
      a,b,z1: real;
      i: integer;
begin

{здесь должно быть заполнение массива значениями}

a:=0; b:=0; z1:=0;

for i:=1 to 10 do
if i/2=trunc(i/2) then b:=b+X[i]*Y[i] else a:=a+X[i]*Y[i];

z1:=a/b;

writeln('z1=', z1);

end.


bubuka 13.05.2008 16:47

Цитата:

Сообщение от AlexZir
i/2=round(i/2)

орининальное деление на чет-нечет ))) такого еще не видел

AlexZir 13.05.2008 16:56

bubuka
Да ладно, ошибся, там должно быть trunc :), сейчас исправлю

AlexZir 13.05.2008 19:27

Цитата:

Сообщение от bubuka
орининальное деление на чет-нечет

На первое-второе рассчитайсь!!! :)

котопек 18.05.2008 10:36

Цитата:

Сообщение от bubuka
function sred(d:mas);
var
i,k:integer;
otv:real;
begin
otv:=0;
k:=0;
for i:=1 to d.dlinna do
if d.masiv[i]>0 then begin otv:=otv+d.masiv[i]; k:=k+1;
otv:=otv/k;
sred:=otv;
end;


(вот перед этим варом курсор)var
a,b,c:mas;
i:integer;

begin
a.dlinna=10;
for i:=1 to a.dlinna do
readln(a.masiv[i]);
writeln(sred(a));

спасибо за помощь но прога не совсем работает.
она ставит курсор перд вторым VAR и пишет ERROR 113:ERROR IN STATEMENT
я чет попробовал исправить но не совсем получается

AlexZir 18.05.2008 18:06

Цитата:

Сообщение от AlexZir
В функции end; не хватает

Вставьте перед строчкой var еще один end; :) :D :) :D :)


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

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