• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Нужна помощь в решении задач

  • Автор темы Автор темы aaaaaaaa
  • Дата начала Дата начала
A

aaaaaaaa

Нужно написать программу позволяющую решать простейшие уравнения и системы уравнений. Исходные данные и результаты должны иметь принятый в математике вид. При отсутствии решений или бесконечном множестве решений вывести соответствующее сообщение.
Нужна очень срочно помощь!
 
Нужно написать программу позволяющую решать простейшие уравнения и системы уравнений. Исходные данные и результаты должны иметь принятый в математике вид. При отсутствии решений или бесконечном множестве решений вывести соответствующее сообщение.
Нужна очень срочно помощь!
Google знает все

 
Та там чтот все не то...Пока нигде не нашел чтобы вводит можно было вводить как в математике - не просто a,b,c а допустим - x1+x3+x5+8=15...
 
Та там чтот все не то...Пока нигде не нашел чтобы вводит можно было вводить как в математике - не просто a,b,c а допустим - x1+x3+x5+8=15...
это методы решения.
исходные данные насколько я помню - матрица коэффициентов
2*x1+3*x3=4
2*x1+x2-x3=0
x1-x2+4*x3=9
Будет задаваться как матрица
2 0 3
2 1 -1
1 -1 4
и вектор
4
0
9
интерфейс как будет уравнения вводить пользователь и как выводить результат это уже ваше дело..
 
Ну всмысле - матрицу сделать не проблема и вектор тоже. Я имею ввиду - как дальше использовать эту матрицу?
 
Ну всмысле - матрицу сделать не проблема и вектор тоже. Я имею ввиду - как дальше использовать эту матрицу?
матрицу и вектор в качестве входных параметров вместе с размерностью передаете в процедуру получаете, как я понимаю, искомый вектор значений х(i). если непонятен этот пример - реализаций метода Гаусса огромное множество.
 
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
const
a3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
a4='1234567890';
a5='+-=';

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
StringGrid2: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);



private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a1:array [0..9] of string[60];
a2:array [0..10,0..9] of real;
implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='' then
Edit1.Text:='Vvedite 4islo yravnenii'
else
StringGrid1.RowCount := StrToInt(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
var x,x1:string;
aa:array[0..10,0..9] of real;
b,c,i,j,p,m,k,na4,kon,kol,l:integer;
x2:real;
begin
m:=0;
x2:=0;
kol:=0;
na4:=0;
kon:=0;
if StringGrid1.Cells[0,0]='' then
StringGrid1.Cells[0,0]:='Vvedite tekst'
else
for i:=0 to StrToInt(Edit1.Text) do
begin
a1[i]:=StringGrid1.Cells[0,i];
for j:=1 to StrToInt(Edit1.Text) do
if (a1[i,j]='+') or (a1[i,j]='-') then
begin
na4:=j;
kol:=kol+1;
if (kol=2) and (a1[i,j]='+') or (a1[i,j]='-') or (a1[i,j]='=') then
kon:=j;
end;
for j:=na4 to kon do
for l:=1 to length(a3) do
if a1[i,j]=a3[l] then
begin
for k:=j downto 1 do
if (a1[i,k]=a4[i+1]) or (a1[i,k]=',') then
begin
x:=x+a1[i,k];
a2[(strtoint(a1[i,j+1])),j]:=strtofloat(x);
end
else for p:=1 to length(a4) do
begin
if (a1[i,m]=a4[p]) or (a1[i,m]=',') then
x1:=x1+a4[p];
end;
if (a1[i,j+1]='=') or (a1[i,j+1]='=') and (a1[i,j+1]=' ') then
x2:=x2 - strtofloat(a1[i,j+2]);
a2[10,i]:=(x2);
for b:=0 to StrToInt(Edit1.Text) do
begin
for c:=0 to 60 do
StringGrid2.Cells[b,c]:=floattostr(a2[b,c]);
end;
end;
end;
end;
end.

Чтото критует...Можете поправить?
 
Ммм - ну сей чудесный код должен считывать мои данные в массив. Вообщем - я немного затупил. Мот есть какой то альтернативный способ занести коэффициенты при переменных в массив и числа после равно тоже хотелось чтобы были там?
 
Почему бы просто не разместить на форме:
edit label edit label edit label
примерно
(edit1) x1 + (edit2) x2 +...
при этом кэфициенты считаете a[1,1]= StrToInt(edit11.text)
Количество уравнений будет равно количеству переменных и его можно задавать отдельно в поле или спинедите. чтобы считать коэф из edit в цикле посмотрите Form.FindComponent
 
Просто - не все так просто!)В задании написано чтобы вводимые данные "вводились" в математическом виде - т.е нельзя использовать лэйбл т.к неизвестно будет ли использоваться переменная или нет а 0 ставить нельзя.
 
Всмысле?
Просто хотелось бы чтобы можно было бы вводить уравнение целиком а не по частям...
 
ну так что мешает сделать один столбик и кучу рядков, где каждый рядок будет соответствовать уровнению, а потом распознать коэффициенты в каждом рядке?
 
Ну - собственно говоря - я так и делал. Вот только чтот ничего не получилось...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!