| 
| 
 | Вопрос # 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |