|
Вопрос # 5 382/ вопрос решён / |
|
Здравствуйте уважаемые эксперты не поможете ли вы мне с одной проблемой
у меня есть 2 массива допустим
a:={4,6,8}
b:={3,9}
и третий массив пустой мне нужно заполнить его таким образом
с:={4-3,4-9,6-3,6-9,8-3,8-9} то есть в итоге должен быть массив
c:={1,-5,3,-3,-5,-1} количество элементов массива С задается умножением количества элементоа массива a на количество элементов массива b . количество элементов заранее известно ... я пробовал через 3 счетчика получилась лабуда т тоже получилось черец цикл While.... вы моя единственная надежда .... прошу помощи
 |
Вопрос задал: Ruslan1993 (статус: Посетитель)
Вопрос отправлен: 7 июня 2011, 01:11
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, Ruslan1993!
Если вопрос только с заполнением массива, то можно сделать примерно так:
var cntA,cntB:integer;
razmA,razmB:integer;//размеры массивов соответственно a и b
....
....
for cntA:=1 to razmA
do for cntB:=1 to razmB
do c[cntB+(cntA-1)*razmB]:=a[cntA]-b[cntB];
Внимание - код не тестировал!
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 7 июня 2011, 06:18
|
Ответ #2. Отвечает эксперт: min@y™
Вот тебе отлаженный и рабочий код:
program p5382;
{$APPTYPE CONSOLE}
{uses
SysUtils;}
type
TVector = array of Integer;
procedure MakeVector(var X: TVector; const ALength: Integer);
var
Index: Integer;
begin
SetLength(X, ALength);
for Index:= 0 to ALength - 1 do
X[Index]:= Random(10);
end;
procedure PrintVector(const X: TVector);
var
Index: Integer;
begin
for Index:= 0 to Length(X) - 1 do
Write(X[Index]: 3);
WriteLn;
end;
procedure Execute(const A, B: TVector; var C: TVector);
var
aIndex, bIndex, cIndex: Integer;
begin
cIndex:= 0;
SetLength(C, Length(A) * Length(B));
for aIndex:= 0 to Length(A) - 1 do
for bIndex:= 0 to Length(B) - 1 do
begin
C[cIndex]:= A[aIndex] - B[bIndex];
Inc(cIndex);
end;
end;
var
A, B, C: TVector;
begin
Randomize();
MakeVector(A, 2);
Write(' A: ');
PrintVector(A);
MakeVector(B, 3);
Write(' B: ');
PrintVector(B);
Execute(A, B, C);
Write(' C: ');
PrintVector(C);
ReadLn;
end.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 7 июня 2011, 09:29
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 8 июня 2011, 11:22; участников в обсуждении: 3.
|
Мережников Андрей (статус: Абитуриент), 7 июня 2011, 06:04 [#1]:
в чем конкретно проблема - что не получается? Зачем три счетчика?
|
|
Ruslan1993 (статус: Посетитель), 7 июня 2011, 06:29 [#2]:
у меня 3 массива 2 из них заполнены числами а другой нужно зпоплнить вот в этом соответствии... у меня проблема в том что он не выводит то что нужно
извините но эта реализация не подошла программа выдает какие то значения типа 3949034 340593405 5 2123823
|
|
Ruslan1993 (статус: Посетитель), 7 июня 2011, 07:23 [#3]:
извините но ваш коде не верен ... уже при cntB=2 получается не 2 а 4 .... может вы исправите ошибку которую допустили при трассировке
|
|
Мережников Андрей (статус: Абитуриент), 7 июня 2011, 17:06 [#4]:
Цитата (Ruslan1993):
извините но эта реализация не подошла программа выдает какие то значения типа
а массивы a и b инициализированы?
Цитата (Ruslan1993):
извините но ваш коде не верен ... уже при cntB=2 получается не 2 а 4 .... может вы исправите ошибку которую допустили при трассировке
я ничего не трассировал, это во-первых, а во-вторых я не видел насколько правильно Вы перенесли мой код в свою программу. Какие 2? Какие 4? Где получается? Что получается? Я телепатией не владею.
|
|
Ruslan1993 (статус: Посетитель), 8 июня 2011, 11:00 [#5]:
min@y™, я так понимаю нужная мне процедуоа это Execute.... большое спасибо при многом благодарен вам зп помощь
|
8 июня 2011, 11:01: Статус вопроса изменён на решённый (изменил автор вопроса — Ruslan1993)
|
min@y™ (статус: Доктор наук), 8 июня 2011, 11:22 [#6]:
Цитата (Ruslan1993):
min@y™, я так понимаю нужная мне процедуоа это Execute.... большое спасибо при многом благодарен вам зп помощь
А где оценка за ответ?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|