Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 14.10.2011, 21:45   #1
Averakot
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
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Помогите написать прогу для решения матриц)

Оу щи, это отправляется на govnokod.ru
Шутка, выучи массивы и все станет очень просто.
И к чему все эти описания если все что надо это кнопка ок которая пускает дальше?
ЗЫ Midlet Pascal не знаю, подсказать как это сделать не могу
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Старый 14.10.2011, 22:19   #3
bormotan
Оператор ЭВМ
 
Регистрация: 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.
удобством код не отличается , но работает . я проверил. и напиши поподробнее . дальше влом писать , ща скину свои исходники определителя матрицы

вот намного более простые исходники на паскале
Вложения
Тип файла: rar мои исходники.rar (6.1 Кб, 419 просмотров)

Последний раз редактировалось ViNT, 15.10.2011 в 00:47.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:54.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com