|
Основной форум Сюда все проблемы связанные с программированием. |
14.10.2011, 21:45
|
#1
|
AnyKey`щик
Регистрация: 14.10.2011
Сообщений: 1
Написано 0 полезных сообщений (для 0 пользователей)
|
Помогите написать прогу для решения матриц)
Да, я знаю на просторах интернета такие есть, но мне хочется написать с выводом хода решения, просто чисто для себя. В паскале смогла сделать это без проблем двумя способами (Обратная матрица и метод Крамера), с помощью самых простых операторов, которые мы вот вот выучили в этом месяце.
Помогите пожалуйста переписать в MidletPascal метод крамера, а уж по образцу я и разберусь со вторым, а потом может и гаусса запихну в одно приложение.
program pr1; var a,b,c,d,e,f,g,i,p,m,n,v,as,at,ak,ad:integer; per,vto,tre:real; begin write ('Vvedite A11= '); readln (a); write ('Vvedite A12= '); readln (b); write ('Vvedite A13= '); readln (c); write ('Vvedite A21= '); readln (d); write ('Vvedite A22= '); readln (e); write ('Vvedite A23= '); readln (f); write ('Vvedite A31= '); readln (g); write ('Vvedite A32= '); readln (i); write ('Vvedite A33= '); readln (p); write ('Vvedite B1= '); readln(m); write ('Vvedite B2= '); readln (n); write ('Vvedite B3= '); readln (v); as:=(a*e*p)+(b*f*g)+(d*i*c)-(g*e*c)-(d*b*p)-(a*f*i); ak:=(m*e*p)+(b*f*v)+(n*i*c)-(v*e*c)-(n*b*p)-(m*f*i); ad:=(a*n*p)+(m*f*g)+(d*v*c)-(g*n*c)-(d*m*p)-(a*f*v); at:=(a*e*v)+(b*n*g)+(d*i*m)-(g*e*m)-(d*b*v)-(a*n*i); per:=ak/as; vto:=ad/as; tre:=at/as; writeln ('Opredelitel=',a*e*p,'+',b*f*g,'+',d*i*c,'-',g*e*c,'-',d*b*p,'-',a*f*i,'=',as); writeln ('delta x1=',m*e*p,'+',b*f*v,'+',n*i*c,'-',v*e*c,'-',n*b*p,'-',m*f*i,'=',ak); writeln ('delta x2=',a*n*p,'+',m*f*g,'+',d*v*c,'-',g*n*c,'-',d*m*p,'-',a*f*v,'=',ad); writeln ('delta x3=',a*e*v,'+',b*n*g,'+',d*i*m,'-',g*e*m,'-',d*b*v,'-',a*n*i,'=',at); writeln ('X1=',per:2:1,' X2=',vto:2:1,' X3=',tre:2:1); end.
Пока что из выше написанного кода я смогла реализовать только ввод переменных потом дело стопорится на том что мне нужна кнопка "ок" чтобы он посчитал по вот этим формулам
as:=(a*e*p)+(b*f*g)+(d*i*c)-(g*e*c)-(d*b*p)-(a*f*i);
ak:=(m*e*p)+(b*f*v)+(n*i*c)-(v*e*c)-(n*b*p)-(m*f*i);
ad:=(a*n*p)+(m*f*g)+(d*v*c)-(g*n*c)-(d*m*p)-(a*f*v);
at:=(a*e*v)+(b*n*g)+(d*i*m)-(g*e*m)-(d*b*v)-(a*n*i);
per:=ak/as;
vto:=ad/as;
tre:=at/as;
а дальше в новом окне вывел решение:
writeln ('Opredelitel=',a*e*p,'+',b*f*g,'+',d*i*c,'-',g*e*c,'-',d*b*p,'-',a*f*i,'=',as);
writeln ('delta x1=',m*e*p,'+',b*f*v,'+',n*i*c,'-',v*e*c,'-',n*b*p,'-',m*f*i,'=',ak);
writeln ('delta x2=',a*n*p,'+',m*f*g,'+',d*v*c,'-',g*n*c,'-',d*m*p,'-',a*f*v,'=',ad);
writeln ('delta x3=',a*e*v,'+',b*n*g,'+',d*i*m,'-',g*e*m,'-',d*b*v,'-',a*n*i,'=',at);
writeln ('X1=',per:2:1,' X2=',vto:2:1,' X3=',tre:2:1);
p.s.
и не да убейте меня за количество переменных, по другому как написать я не знаю пока что, да и сдается мне тогда я не смогу вывести решение так как мне нужно =)
|
(Offline)
|
|
14.10.2011, 22:17
|
#2
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Помогите написать прогу для решения матриц)
Оу щи, это отправляется на govnokod.ru
Шутка, выучи массивы и все станет очень просто.
И к чему все эти описания если все что надо это кнопка ок которая пускает дальше?
ЗЫ Midlet Pascal не знаю, подсказать как это сделать не могу
|
(Offline)
|
|
14.10.2011, 22:19
|
#3
|
Оператор ЭВМ
Регистрация: 12.10.2011
Адрес: Воронеж
Сообщений: 46
Написано 2 полезных сообщений (для 2 пользователей)
|
Re: Помогите написать прогу для решения матриц)
а влом было сделать два двумерных массива ???? 3 на 3 каждый
когда я загонялся на паскале с матрицами , я был менее жестокий к своему мозгу . все делал через матрицы . ща поищу старые исходники
program pr1;
var i,j:integer;
f:integer;{типа идентификатора формы}
a:array[1..3,1..3] of integer;{}
b:array[1..3] of integer;
ok:command;
begin
showform;
ok:=createcommand('ввод',CM_OK,1);
addcommand(ok);
for i:=1 to 3 do
for j:=1 to 3 do
begin
f:=formaddtextfield('Ввести элемент матрицы','',20,TF_NUMERIC); //20 - макс количество цифр в каждом элементе
a[i,j]:=stringtointeger(formgettext(f));
repeat
delay(100);
until getclickedcommand=ok;
end;{ввод массива в мидлетпаскале}
delay(2000);
end.
удобством код не отличается , но работает . я проверил. и напиши поподробнее . дальше влом писать , ща скину свои исходники определителя матрицы
вот намного более простые исходники на паскале
Последний раз редактировалось ViNT, 15.10.2011 в 00:47.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:54.
|