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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 11:40   #1
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию Работа с несколькими массивами

Здравствейте, помогите пожалуйста дописать следующею задачу:
Дан массив A размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов массива A с номерами от 1 до K.

Мои наробки:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  A:array[1..10] of integer = (82,52,51,42,37,32,21,18,17,12);

var
  i,j : integer;
  B            : array[1..10] of integer;

begin
  WriteLn('Mas A:');
  for i:=1 to 10 do write(A[i],'  '); Writeln;
  Readln;
end.
kuy вне форума Ответить с цитированием
Старый 17.10.2011, 12:02   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

ну во-первых насколько я понял речь идет о динамическом массиве и о Delphi.
объявляется динамический массив так:
Код:
var A:array of integer;
потом в коде задается его длина
Код:
SetLength(A,N);
где N- размер массива

сформировать массив В такого же размера как и а можно так:
Код:
SetLength(B,Length(A));
ну а среднее арифметическое я думаю не сложно.
Осталось соединить все воедино и сдать.
fbus вне форума Ответить с цитированием
Старый 17.10.2011, 12:08   #3
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Мне нужен код именно сренего арифметического. (для данного примера)
kuy вне форума Ответить с цитированием
Старый 17.10.2011, 12:53   #4
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

так бери и в цикле складывай числа а потом дели на количество пройденных чисел
если возникнут неприодолимые трудности, пиши в аську, сделаю
fbus вне форума Ответить с цитированием
Старый 17.10.2011, 12:54   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от fbus Посмотреть сообщение
ну во-первых насколько я понял речь идет о динамическом массиве и о Delphi.
объявляется динамический массив так:
Код:
var A:array of integer;
потом в коде задается его длина
Код:
SetLength(A,N);
где N- размер массива

сформировать массив В такого же размера как и а можно так:
Код:
SetLength(B,Length(A));
ну а среднее арифметическое я думаю не сложно.
Осталось соединить все воедино и сдать.
Кстати, следует заметить, что индексация в динамических массивах начинается с нуля, а не с 1.
Поэтому обращения к элементам массива будут иметь следующий вид:
Код:
for i:=0 to N-1 do...
Вадим Мошев вне форума Ответить с цитированием
Старый 17.10.2011, 17:01   #6
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Я уже впринцыпи лабу здал, по своиму написал. Но всё же если интересно было бы посмотреть на код этой програмы с динамическим массивом.
kuy вне форума Ответить с цитированием
Старый 17.10.2011, 17:13   #7
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

KIU смари
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  A, B : array of integer;
var
  i,N : integer;
begin
  WriteLn('Enter N ');readln(N);
  if N<=1 then exit;

  SetLenGth(A,N); 
  SetLenGth(B,N);
  // заполняем
  WriteLn('Mas A:');
  for i:=0 to N-1 do write(A[i],'  ');
  B[N-1]:=0;
  for i:=0 to N-1 do 
  begin
   if i<N-1 then B[i]:=A[i]; 
   B[N-1] := B[N-1]+A[i];
  end;
  B[N-1] := B[N-1]/N;
  WriteLn('result B[N] = ', B[N-1]);
  Readln;
end.
если нужно чтобы каждый элемент массива В содержал среднее арифметическое от 1-го до текущего тогда второй цикл будет выглядеть вот так:
Код:
B[0] := A[0]; 
 for i:=1 to N-1 do 
 begin
   if i<N-1 then B[i]:=A[i]; 
   B[i] := B[i-1]+A[i]/(i+1);
 end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 17.10.2011 в 17:16.
JUDAS вне форума Ответить с цитированием
Старый 17.10.2011, 20:19   #8
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Мой Делфи 7 пишет что много ошибок, незнаю..
kuy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[title]Матричные операции с несколькими массивами в Паскаль[tit student2011 Паскаль, Turbo Pascal, PascalABC.NET 0 24.04.2011 13:34
Работа с несколькими массивами mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2010 17:04
Работа с несколькими массивами mexx1337 Паскаль, Turbo Pascal, PascalABC.NET 1 16.12.2010 18:13
Работа с несколькими БД Янка:) Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 6 01.11.2010 14:55
Работа с несколькими плейлистами Xakand_2009 Мультимедиа в Delphi 6 17.04.2010 17:52