Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 382

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте уважаемые эксперты не поможете ли вы мне с одной проблемой
у меня есть 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 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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

Ruslan1993 (статус: Посетитель), 7 июня 2011, 06:29 [#2]:

у меня 3 массива 2 из них заполнены числами а другой нужно зпоплнить вот в этом соответствии... у меня проблема в том что он не выводит то что нужно


извините но эта реализация не подошла программа выдает какие то значения типа 3949034 340593405 5 2123823
Ruslan1993

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

Ruslan1993 (статус: Посетитель), 8 июня 2011, 11:00 [#5]:

min@y™, я так понимаю нужная мне процедуоа это Execute.... большое спасибо при многом благодарен вам зп помощь

8 июня 2011, 11:01: Статус вопроса изменён на решённый (изменил автор вопроса — Ruslan1993)

min@y™

min@y™ (статус: Доктор наук), 8 июня 2011, 11:22 [#6]:

Цитата (Ruslan1993):

min@y™, я так понимаю нужная мне процедуоа это Execute.... большое спасибо при многом благодарен вам зп помощь

А где оценка за ответ?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.03 сек.