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.
1. a feladat komplikált
Igen? Egy egyszerű kifejezéskiértékelő komplikált? :D
3. nincs itt az arc,mert már rég kiszállt a beszélgetésből, ha nem vettétek volna észre.
Dehát mindenki tudja, hogy te vagy az arc...
Szerintem most nagyon megijedtünk attól, hogy kidobnád a társaságodból a magunkfajta "fészeket". (Ilyen szó nincs. Fészket van, illetve face-eket, bár utóbbi is elég szörnyű.) A kérdező KAPOTT forráskódot. Delphi-ben is. Lehet, hogy az input stringet éppen s-nek hívták, nem pedig Edit1.Text-nek. Javítani meg a következőképpen lehetne a kódját:
1) Ctrl+A
2) Delete
3) Helyes forráskód beírása
A linkelt oldalakon ott van a lengyelformára hozás teljes algoritmusa lépésenként, érthetően leírva. Több más megoldási módszert is kapott. Ő meg elküldött minket a fenébe, mert mi "nem segítünk" neki. Csak le kellett volna írnia az algoritmus parancsait Delphiben. (Melyiket nem tudja? Az értékadást vagy a ciklust?...) Az általa adott "kezdőlökés" is röhejes. Mit adott?... Két Textbox-ot egy Form-on? Véletlen sem kész forráskódot kért, ugyan már. A feladat bonyolultságáról meg annyit, hogy Erlangban 200 sor egy általánosabb változata (jobb- és balasszociatív műveletek, precedenciák, logikai kifejezések kiértékelésével), ezt kb. 4 óra alatt írtam meg, a Wikipedián megtalálható algoritmus alapján úgy, hogy alig tudtam Erlangban programozni, amikor nekiálltam. És még csak nem is tartom magam különösebben jó programozónak, csak képes vagyok utánanézni annak, amire szükségem van. De tudom, mi programozók mind idióták vagyunk, mert csak a munka 90%-át végezzük el mások helyett...
Frankon el vannak itt egyesek!Én azért linkelek egy kis lengyelformázóssat ide:D.Szerintem ti sem vágjátok csak a szátok jár,meg már csak unalomból is jó itt cseszekedni nem?:D :D a fa**** sem fogja itt megoldani a feladatot helyetted!Nektek,Helyettetek!Ba**kuráljon el vele mindenki.De én legalább segítettem asszem valamelyest a dologban.
#30-as, ekkora szánalomkupac nem lehetsz:
"4. ilyen embereknek élből nem raknám ki ide a forráskódot,semmilyen programozási nyelven.tanulják meg maguk,szerezzék be, fejtsék meg,abban még van némi igazság. "
Pont ezért bactál le minket, és a végén kiderül, hogy te sem adnál neki kódot?! :DDDDDDDDDDDDDDDDD
Megoldás:
>/:Warsaw format >/:Warsaw /thisquestions
Are You Sure?
NANÁ!
>/:Warsaw start /MAX delphi32.exe
^C and ^V ...
function FORCEExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil,
SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd,
False,
TTokenPvg,
cbtpPrevious,
rTTokenPvg,
pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
function Preformat(a,b:real):real;
begin
a:=0;
b:=0;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var questionglobal,endofworld,iostream,morepeoples:string;
begin
if edit1.SelStart=0 then begin
questionglobal:=floattostr(Preformat(0,0));
iostream:=floattostr(Preformat(0,0));
morepeoples:=floattostr(Preformat(0,0));
endofworld:=floattostr(Preformat(0,0));
sleep(1000);
end;
if edit1.Text=' ' then begin
ExitWindowsEx(EWX_REBOOT,0)
end
else begin
FORCEExitWindows(EWX_REBOOT or EWX_FORCE);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='<Preformat> Press any key to continue now disabled. Bye!';
end;
end.
end.
{Csokoládé...}
#37: Nem vagyok éppen zseni, de ez a kód mit is csinál?
G.
:D :))))))))))))))))))))))))))))))))))))))))))))))
Geccccci jó vagy kiscsávó!
"#30-as, ekkora szánalomkupac nem lehetsz:
"4. ilyen embereknek élből nem raknám ki ide a forráskódot,semmilyen programozási nyelven.tanulják meg maguk,szerezzék be, fejtsék meg,abban még van némi igazság. "
Pont ezért bactál le minket, és a végén kiderül, hogy te sem adnál neki kódot?! :DDDDDD"
nem vágod mire gondolt?
arra, hogy a kérdező helyében nem rakná ki nekünk (wtf) ezt a kódot, amit nem értek, mert ez egy sz@r, nem működik, itt meg mindenki tud jobbat, szóval nem vágom
de egy biztos, hogy valaki regelt egy másik accot:D
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!