|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразование массива
Добрый день друзья!
Нужно произвести преобразование матрицы по следующему принципу: 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. |
#3
|
|||
|
|||
Pesi Большое спасибо! Очень помог. А если матрица 100х100 элементов? Или 1000х1000?
|
#4
|
||||
|
||||
Может так лучше?
Код:
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
|
|||
|
|||
Не хватает операций по вычитанию случайного числа от каждого элемента матрицы! Т. е. не только надо прибавить случайное число к первому элементу, но и вычесть каждый раз эту сумму от каждого следующего элемента.
|
#6
|
||||
|
||||
Код:
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
|
|||
|
|||
Огромное Вам всем спасибо! Если бы не Вы, я пропал бы!!!!
Подскажите мне еще, как разбить элементы матрицы на диапазоны? Матрица 20х20 разбиваем на 5 диапазонов и подсчитываем, сколько чисел попадает в каждый диапазон. Что то никаких мыслей в голову не приходят. Наверно, сперва определяем Максимальный и минимальный элемент и (MAX-MIN)/(5-1). Так определяем шаг диапазона. А как дальше, как быть? Спасибо |