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

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

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

aaaaaaaa

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

nayke

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

 
A

aaaaaaaa

Та там чтот все не то...Пока нигде не нашел чтобы вводит можно было вводить как в математике - не просто a,b,c а допустим - x1+x3+x5+8=15...
 
N

nayke

Та там чтот все не то...Пока нигде не нашел чтобы вводит можно было вводить как в математике - не просто 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
интерфейс как будет уравнения вводить пользователь и как выводить результат это уже ваше дело..
 
A

aaaaaaaa

Ну всмысле - матрицу сделать не проблема и вектор тоже. Я имею ввиду - как дальше использовать эту матрицу?
 
N

nayke

Ну всмысле - матрицу сделать не проблема и вектор тоже. Я имею ввиду - как дальше использовать эту матрицу?
матрицу и вектор в качестве входных параметров вместе с размерностью передаете в процедуру получаете, как я понимаю, искомый вектор значений х(i). если непонятен этот пример - реализаций метода Гаусса огромное множество.
 
A

aaaaaaaa

Код:
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.

Чтото критует...Можете поправить?
 
A

aaaaaaaa

Ммм - ну сей чудесный код должен считывать мои данные в массив. Вообщем - я немного затупил. Мот есть какой то альтернативный способ занести коэффициенты при переменных в массив и числа после равно тоже хотелось чтобы были там?
 
N

nayke

Почему бы просто не разместить на форме:
edit label edit label edit label
примерно
(edit1) x1 + (edit2) x2 +...
при этом кэфициенты считаете a[1,1]= StrToInt(edit11.text)
Количество уравнений будет равно количеству переменных и его можно задавать отдельно в поле или спинедите. чтобы считать коэф из edit в цикле посмотрите Form.FindComponent
 
A

aaaaaaaa

Просто - не все так просто!)В задании написано чтобы вводимые данные "вводились" в математическом виде - т.е нельзя использовать лэйбл т.к неизвестно будет ли использоваться переменная или нет а 0 ставить нельзя.
 
A

aaaaaaaa

Всмысле?
Просто хотелось бы чтобы можно было бы вводить уравнение целиком а не по частям...
 
D

Dock1100

ну так что мешает сделать один столбик и кучу рядков, где каждый рядок будет соответствовать уровнению, а потом распознать коэффициенты в каждом рядке?
 
A

aaaaaaaa

Ну - собственно говоря - я так и делал. Вот только чтот ничего не получилось...
 
D

Dock1100

Вот пример, распознает коэфицыенты в строке(в стринггриде)
 

Вложения

  • project3.zip
    4,3 КБ · Просмотры: 142
Мы в соцсетях:

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