Hogy lehetséges ezt a programozási feladatot megoldani?
Azt szeretném megoldani,ha nem túl komplikált,hogy az egész beírómezőben,bármilyen műveleti jelet írnak, sor előtt, sor(ok) után, szám(ok) előtt, szám(ok) után, akkor elvégezze a feladatot, tehát,hogyha beírom, pl:
12+23-4/6*8+12/7777+55-777*9999, akkor végezze el ezt a bonyolult műveletet és erről egy másik beírómezőben adjon pontos végeredményt. Nagyon sok időt rászántam, hogy megtaláljam a megoldást, mindenre jutottam, csak vagy az
eredményt nem tudtam kihozni, vagy a program nem működött megfelelően. Próbálkoztam a seltextet bevonni,a gettextlent, a sellengthet, másik ciklust, ami a -1-et helyettesíti be, akár e j változóba, kivonni, tömbök alá venni az edit1.text-et[edit1.selstart]-tal, kivonni, osztani szorozni, mindenféle kombinációt, kicserélni az edit1.texteket, edit1.seltextekre, de nem sikerült a feladatot megoldanom normális működő módon. Ebben szeretnék segítséget kérni, ha lehet természetesen forráskóddal mellékelve, mert úgy vélem, hogy ez annál komplikáltabb dolog lehet, hogy szóban megértsem, mit hogyan kell tennem, vagy milyen további, esetleges függvényeket kell, hogy bevonjak a programba, amivel ezt működőképessé lehet varázsolni. Előre is köszönök, minden segítséget és megoldást.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Strutils, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure Edit1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
var sign:char;
i,w:integer;
begin
try
For i:=1 to length(edit1.Text) do
If not (edit1.Text[i] in ['0'..'9']) then
Begin
sign:=edit1.Text[i];
w:=i;
End;
Case sign of
'*': edit2.Text:= floattostr(strtofloat(LeftStr(edit1.Text,w-1)) * strtofloat(rightstr(edit1.Text,length(edit1.Text)-w)));
'/': edit2.Text:= floattostr(strtofloat(LeftStr(edit1.Text,w-1)) / strtofloat(rightstr(edit1.Text,length(edit1.Text)-w)));
'+': edit2.text:= floattostr(strtofloat(LeftStr(edit1.Text,w-1)) + strtofloat(rightstr(edit1.Text,length(edit1.Text)-w)));
'-': edit2.Text:= floattostr(strtofloat(LeftStr(edit1.Text,w-1)) - strtofloat(rightstr(edit1.Text,length(edit1.Text)-w)));
End;
except
On ECONVERTERROR DO BEGIN
end;
end;
end;
end.
RPN is elég lett volna a Warsaw helyett! Ugyanakkor,ha jól belegondolok,végül is mindegy honnan kezdődik. :))))
teccik!
loptam a kódot
nyugi már, 59es :)
senkinek nem okoz gondot, de csak nem állok neki legépelni.. majd hülye leszek
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!