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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2007, 16:37   #1
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
Печаль Помогите с оформлением процедуры

Дана задача в Delphi:
Составить процедуру для определения числа элементов одномерного массива, предшествующих его первому отрицательному элементу.
Используя данную процедуру, расчитать среднее арифметическое значение элементов того из двух заданных одномерных массивов C и T в котором меньше элементов предшествующих его первому отрицательному. В случае равенства чисел таких элементов вывести на печать сообщение ''Массивы эквивалентны''.

Программу написал, вроде все правильно. Сама проблема в том. что я не понимаю что писать в скобках после названия процедуры Procedure D (?????????); и что писать для вызова процедуры D (??????);

program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
Type mass =array[1..100] of integer ;
var
A:mass;
i,n,kol:integer;
sat,sac: real;
Procedure D (Var kol:real);
var
i:integer;
begin
kol:=0;
for i:=1 to n do
begin
if A[i]<0 then
kol:=i-1;
end;
end;
Begin
write ('n=');
readln (n);
saT:=0;
saC:=0;
for i:=1 to n do
begin
write('C[',i,']=');
readln(A[i]);
D (kol);
end;
For i:=1 to kol do
begin
saC:=(A[i]+saC)/kol
end;
for i:=1 to n do
begin
write('T[',i,']=');
readln(A[i]);
D (kol);
end;
For i:=1 to kol do
begin
saT:=(A[i]+saT)/kol
end;
begin
if saC=saT then write ('ekvivalentnoctb');
if saC>saT then write ('saC=', saC);
if saT>saC then write ('saT=', saT);
end;
end.


И еще в моей программе сначала считается среднее арифметическое двух массивов, а выводит на экран только одного. Можно ли как нибудь переделать прогу чтобы она считала только среднее арифметическое одного массива.Здесь saC среднее арифм. массива С, а saT массива T.

Пожалуйста помогите студенту!
p.s код структурирувал для удобности, но почемуто на форуме пробелы убрались =( ...

Последний раз редактировалось Absent; 01.12.2007 в 16:55.
Absent вне форума Ответить с цитированием
Старый 01.12.2007, 18:30   #2
Absent
Пользователь
 
Регистрация: 18.11.2007
Сообщений: 67
По умолчанию

Разобрался, тему можно удалять
Absent вне форума Ответить с цитированием
Старый 01.12.2007, 18:33   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот я "слегка" переделал твой код. Мне описывать твои ошибки лень, поэтому ты лучше сравни два кода и найди свои ошибки. Если что непонятно, пиши, только четко излагай вопросы, а то я туго соображаю.
По процедуре. В скобках пишут чего ей надо, чтобы работала, и что должна выдавать. Нашей процедуре надо массив (A:mass) и длина массива (n:integer). Выдаст она количество (var kol:integer);.
Получилось procedure D(A:mass;n:integer;var kol:integer);
Когда обращаемся к процедуре пишем D(C,n,kolC), где С или Т наши массивы, n их длина, kolC или kolT количество элементов.
Код:
Type mass =array[1..100] of integer ;
var
C,T:mass;
i,n,kolT,kolC,sumC,sumT:integer;
saC,saT: real;
procedure D (A:mass;n:integer;Var kol: integer);
var
i:integer;
    begin
      kol:=0;
     for i:=1 to n do
         begin
             if A[i]<0 then  kol:=i-1;
         end;
     end;

begin
   write ('n=');readln (n);                     создаем массивы С и Т
   for i:=1 to n do
       write('C[',i,']='); readln(C[i]);
   for i:=1 to n do
       write('T[',i,']='); readln(T[i]);
   
   D(C[i],n, kolC);              Определяем количество первых неотрицательных
   D(T[i],n, kolT);                элементов в массивaх С и Т
 if kolC< kolT then 
   begin
     sumC:=0;                   
     for i:=1 to kolC do
        begin
             sumC:=sumC+C[i];  Находим их сумму
         end;
        saC:=sumC/kolC;             Считаем среднее арифметическое
end else
if kolC> kolT then                   Все тоже самое для массива Т
   sumT:=0;
   for i:=1 to kolT do
        begin
             sumT:=sumT+T[i];
         end;
        saT:=sumT/kolT;
end;
if saC=saT then write ('ekvivalentnoctb');
if saC>saT then write ('saC=', saC);
if saT>saC then write ('saT=', saT);
readln;

end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с написанием процедуры... Bkmz66 Помощь студентам 1 15.05.2008 13:27
Пожалуйста помогите решить задачу, на процедуры и функции. RusLotus Паскаль, Turbo Pascal, PascalABC.NET 2 07.01.2008 08:08
ПОМОГИТЕ ПОЖАЛУЙСТА SOS! ПРОЦЕДУРЫ В ПАСКАЛЕ! Jondeer Помощь студентам 0 04.12.2007 18:51
Помогите довести до ума две процедуры! Mr.User Помощь студентам 9 28.11.2007 10:21