Вопрос № 91081: Здраствуйте экперты.
У меня такой вопрос, скажем каким то образом изменился размер формы (.width, .height). Можно ли както узнать какой размер был до изменения, не сохраняя эти значения в переменные?...Вопрос № 91165: Добрый вечер я к Вам с таким вопросом!!
Нужно найти матрицу обратную данной воспользовавшись методом Гаусса...
Кто может помогите написать...
Или от куда можно скачать исходник
Спасибо!...Вопрос № 91200: Простите за наглость чайника(при обращении к мужам)!!!
Пробую освоить Delphi 7
Осваивая самостоятельно язык, при написании всё сделал как написано в книге но Delphi 7 выдаёт ошибку в строке
( cbGrayed : Label1.Caption := 'затемнить')
...
Вопрос № 91.081
Здраствуйте экперты.
У меня такой вопрос, скажем каким то образом изменился размер формы (.width, .height). Можно ли както узнать какой размер был до изменения, не сохраняя эти значения в переменные?
Начальные размеры формы нигде не хранятся, думаю придется вам все таки хранить их в переменных
Ответ отправил: Кэр Лаэда (статус: Студент)
Ответ отправлен: 12.06.2007, 14:57 Оценка за ответ: 5 Комментарий оценки: Вы мне не помогли, но теперь я не буду искать впустую...
Отвечает: PGM
Здравствуйте, Иван Ивановввв!
Возможно, вам поможет перехват сообщения WM_WINDOWPOSCHANGING - оно вызывается перед попыткой изменения размеров.
procedure WMWinPosChanging(var M : TMessage); message WM_WINDOWPOSCHANGING;
Параметры (новые значения) извлекаются следующим образом
p := PWINDOWPOS(M.lParam); где p.x - Left, p.y - Top, p.cx - Width, p.cy - Height.
Старые значения вам в этот момент известны как свойства формы (Width, Height).
Ответ отправил: PGM (статус: 8-ой класс)
Ответ отправлен: 13.06.2007, 12:34 Оценка за ответ: 5 Комментарий оценки: спасибо, да именно это мне и нужно.
Вопрос № 91.165
Добрый вечер я к Вам с таким вопросом!!
Нужно найти матрицу обратную данной воспользовавшись методом Гаусса...
Кто может помогите написать...
Или от куда можно скачать исходник
Спасибо!
Отвечает: Gh0stik
Здравствуйте, Колдун Андрей павлович!
Вот привожу алгоритм, который лично разрабатывал в качестве примера для студентов физ-мата.
Для нахождения обратной матрицы необходимо:
1) найти детерминант D (определитель) исходной матрицы, который находим методом Гаусса
2) Далее находим матрицу алгебраических дополнений и транспонируем ее A~;
3) Находим саму обратную матрицу: A-1 = (1/D)*A~
Код приложения смотрите в приложении (он же продублирован в прикрепленном файле) - внимательно читайте комментарии в листинге и обращайте внимание на название переменных (матрицы рекомендую вводить с использованием компонента TStringGrid).
Вот вспомагательные процедуры которые используются при расчетах: { Процедура для сортировки матрицы и привода ее к ступенчатому виду
row - ряд с которого начинается сортировка
zn - знак детерминанта (true=-1, false=1)
dt - следует ли далее продолжать вычисления (false значит det=0)
}
procedure Sorted(row,razm: word; var x: TMatrix; var zn, dt: boolean);
var j,k,nm:word;
t:real;
begin nm:=0; dt:=true;
if (x[row,row]=0) then {если 0 стоит на главной диагонили пытаемся его убрать}
begin
for j:=row+1 to razm do
if x[j,row]<>0 {проверка всех элементов которые стоят по 0}
then begin
for k:=0 to razm do
begin
t:=x[row,k]; x[row,k]:=x[j,k]; x[j,k]:=t;
end;
zn:=not zn; {при перестановке рядков(столбцов) знак
детерминанта меняется на противоположный}
break;
end
else inc(nm);
if nm=razm-row+1 {если 0 убрать не получилось то детерминант=0}
then begin dt:=false;{break;}end;
end;
end;
{----Процедура проеобразования матрицы методом Гаусса
row - ряд с которого начинаются преобразования
first - первый элемент первого ряда матрицы----}
procedure GS(row,razm: word; first: real; var x: TMatrix);
var i,j:word;
gl:real;
begin
for i:=row+1 to razm do
begin
gl:=x[i,row];
if gl<>0 then
for j:=row to razm do
x[i,j]:=x[i,j]+(-gl/first)*x[row,j];
end;
end;
{----Процедура нахождения минора M[i,j] ----}
procedure Mimor(mi,mj:word; x:TMatrix; var y:TMatrix);
var i,j,yi,yj:word;
begin yi:=0;
for i:=0 to n-1 do
if i<>mi then
begin
yj:=0;
for j:=0 to n-1 do
if j<>mj then
begin
y[yi,yj]:=x[i,j];inc(yj);
end;
inc(yi);
end;
end;
Good Luck!!!
Приложение:
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 13.06.2007, 02:08 Оценка за ответ: 5 Комментарий оценки: Все отлично Большое спасибо
Вопрос № 91.200
Простите за наглость чайника(при обращении к мужам)!!!
Пробую освоить Delphi 7
Осваивая самостоятельно язык, при написании всё сделал как написано в книге но Delphi 7 выдаёт ошибку в строке
( cbGrayed : Label1.Caption := 'затемнить')
Если вас не затруднит обьясните, подробно, наделанному программисту в чем дело!!!!
Отвечает: Ерёмин А.А.
Здравствуйте, Иван Буравой!
Вы забыли поставить разделитель команд - точку с запятой (";"). В результате должно получиться:
case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить'
Тогда всё заработает.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Troyan
Здравствуйте, Иван Буравой!
Все просто, нужно поставить точку с запятой, которую вы забыли или сделать так, как в приложении
Приложение:
--------- Цени законы своего сердца, иди на обгон! Будь человеком, не запачкай свою совесть!
Ответ отправил: Troyan (статус: Студент)
Ответ отправлен: 13.06.2007, 10:42
Отвечает: Чрнавин Е. А.
Здравствуйте, Иван Буравой!
В конце кождой строки необходимо ставить - ;
Вот так:
cbUnchecked : Label1.Caption := 'выключить';
и последующие две строки также.
Ответ отправил: Чрнавин Е. А. (статус: 2-ой класс)
Ответ отправлен: 13.06.2007, 10:53
Отвечает: Архангельский Андрей Германович
Здравствуйте, Иван Буравой!
Case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить';
end;
Точки с запятой нужно ставить всегда, не уповая на умолчания
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить'
cbGrayed : Label1.Caption := 'затемнить'
cbChecked : Label1.Caption := 'включить'
end
end;
Думаю, что после присвоения caption не запятых.
Ответ отправил: Esi (статус: 2-ой класс)
Ответ отправлен: 13.06.2007, 18:42
Отвечает: Шевченко Дмитрий
Здравствуйте, Иван Буравой!
тут тоже необходимо ставить ";"
case CheckBox1.State of
cbUnchecked : Label1.Caption := 'выключить';
cbGrayed : Label1.Caption := 'затемнить';
cbChecked : Label1.Caption := 'включить';
end;
P.S. Искренне желаю успехов в освоении Delphi!;)
Ответ отправил: Шевченко Дмитрий (статус: 1-ый класс)
Ответ отправлен: 14.06.2007, 00:16
Отвечает: Sattar
Здравствуйте, Иван Буравой!
!!!
Ошибка в procedure TMyForm.CheckBox1Click(Sender: TObject);
Исправленый код: