Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.06.2009, 20:40
geroy geroy вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 6
Репутация: 10
Печаль Преобразование массива

Добрый день друзья!
Нужно произвести преобразование матрицы по следующему принципу:
1. Первое число матрицы А[1.1] взаимодействует со всеми числами матрицы поочередно по следующему сценарию:
Берем второе число А[1.2] и находим любое случайное число меньше числа
А[1.2]. Найденное случайное число вычитается от А[1.2] и прибавляется
к А[1.1]. И так дальше со всеми числами матрицы.
Написал следующий код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
  A: array [1..100,1..100] of real;    // Первичный массив
  M: integer;
  N: integer;
  K: integer;
   diapazon:real;
   max: real;
   min: real;
   Prom: real;
   Peremen: real;
  ErrHndl: real;
  MaxM: integer; // Предел значения начального элемента
  i: integer;   // индекс I
  j: integer;   // индекс J
  f: TextFile;
  s, FName: string;
  QN:array [1..2,1..50] of integer;    // массив итоговый
  begin

M:=StrToInt(Edit1.Text);
N:=StrToInt(Edit2.Text);
MaxM:=StrToInt(Edit3.Text);
 Randomize;
 for i:= 1 to N do
For j:=1 to M  do
begin
A[i,j]:= random(MaxM+1)
end;
//Взаимодействие элементов матрицы между собой

 Prom:=A[1,1];
 for i:= 1 to N do
 For j:=1 to M  do
 begin
 K:= Trunc(A[i,j+1]); //Урезаем числа после запятой
  Peremen:=random(K); //Находим случайное число меньше, чем второй элемент
 A[i,j+1]:= A[i,j+1]-Peremen;
 Prom:=Prom+Peremen;
 end;
 A[1,1]:= Prom;

Но не работает! Подскажите, кто знает, как решить такую задачку.

Последний раз редактировалось Admin, 29.06.2009 в 20:45.
Ответить с цитированием
  #2  
Старый 30.06.2009, 21:55
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

вот это 1.rar
Ответить с цитированием
  #3  
Старый 30.06.2009, 22:53
geroy geroy вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 6
Репутация: 10
По умолчанию

Pesi Большое спасибо! Очень помог. А если матрица 100х100 элементов? Или 1000х1000?
Ответить с цитированием
  #4  
Старый 30.06.2009, 22:55
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

Может так лучше?
Код:
var
 c, r, sum,a: Integer;
begin
  sum := 0;
  sum := Aa[1,1];
  for c := 1 to 20 do
   for r := 1 to 20 do
   begin
      a := Random(aa[c,r]);
      sum := sum + (Aa[c,r] - a)

   end;
   Aa[1,1] := sum;
__________________
Кнопка "+" - весы в правом верхнем углу сообщения...
Ответить с цитированием
  #5  
Старый 01.07.2009, 00:49
geroy geroy вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 6
Репутация: 10
По умолчанию

Не хватает операций по вычитанию случайного числа от каждого элемента матрицы! Т. е. не только надо прибавить случайное число к первому элементу, но и вычесть каждый раз эту сумму от каждого следующего элемента.
Ответить с цитированием
  #6  
Старый 01.07.2009, 10:57
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

Код:
var
 c, r, sum,a: Integer;
begin
  sum := 0;
  sum := Aa[1,1];
  for c := 1 to 20 do
   for r := 1 to 20 do
   begin
      a := Random(aa[c,r]);
      sum := sum + (Aa[c,r] - a)

   end;
   Aa[1,1] := sum;
А это что?
__________________
Кнопка "+" - весы в правом верхнем углу сообщения...
Ответить с цитированием
  #7  
Старый 01.07.2009, 23:21
geroy geroy вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 6
Репутация: 10
По умолчанию

Огромное Вам всем спасибо! Если бы не Вы, я пропал бы!!!!
Подскажите мне еще, как разбить элементы матрицы на диапазоны?
Матрица 20х20 разбиваем на 5 диапазонов и подсчитываем, сколько чисел попадает в каждый диапазон.
Что то никаких мыслей в голову не приходят. Наверно, сперва определяем Максимальный и минимальный элемент и (MAX-MIN)/(5-1). Так определяем шаг диапазона. А как дальше, как быть? Спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter