Ezt a feladatot kaptuk suliban, tud segíteni vki?
Részben megoldottam a feladatot,de aztán megállt a tudomány.Az info tanár kitalálta,hogy írjunk egy olyan programot,hogyha egy textboxba kiadjuk ezt az utasítást,hogy "for valami = x to y do",akkor listázza ki egy valódi for utasításban megadottak értékeit. Sajnos csak minden 1 helyi értékkel működik és azt kellene megoldani,hogyha valaki ezt a parancsot adja ki, hogy
for kutyagumi=65342 to 896322, vagy ha ezt hogy
for z= 1 to 332 do
akkor is is működjön és listázza ki az értékeket egy másik szövegdobozba.Annyi kevés fogalmam van,hogy valami pozicionáló és beszúró függvényekkel lehet,hogy meg lehetne oldani,bár ebben sem vagyok biztos,de azokhoz viszont végképp nem konyítok semmit.Nem is nagyon értem ezt,hogy minek kér ilyen nehéz feladatot tőlünk.Elég makacs és goromba is ez a tanár sajnos. Sok mindent el sem mond az órán és olyan feladatokat ad fel,amihez még nekünk kell hozzátanulnunk néha.
Eddig jutottam,segítsetek kiegészíteni,mert időm az nincs sok rá,hétfőre le kellene adnom. Ha nagyon durva a feladat megoldása és a kérés,akkor hagyjátok inkább a fenébe,max kapok rá egy 2-est,vagy karót.Vitatkozni nincs kedvem és időm sincs rá. Csupán egy gyors segítséget kérek,ha nem túl nagy kérés.
Előre is köszi!
most ügy működik legalább, hogyha beírod,hogy
for u=0 to 9 do akkor kiírja az értékeket,vagy ha
for i=2 to 7 do akkor is, de sajna több helyi értékkel nem szuperál.
procedure TForm1.Button1Click(Sender: TObject);
const egyenlo='=';
{const to2='to';}
{const do2='do';}
var s,s1,s2,s3:string;
var x,y,i:integer;
var valtozo:string;
begin
x:=strtoint(memo1.text[7]);
y:=strtoint(memo1.text[12]);
valtozo:=memo1.Text[5];
s1:='to';
s:=memo1.seltext;
insert(s1,s,memo1.SelStart);
s3:='do';
s2:=memo1.seltext;
insert(s3,s2,memo1.SelStart);
if memo1.text='for '+valtozo+egyenlo+inttostr(x)+' '+s+' '+inttostr(y)+ ' '+s2 then begin
for i:=x to y do begin memo2.lines.Add(inttostr(i));
end;
end;
end;
end.
Mindenképpen elkel a segítség és körbe-körbe ugyanezeket az utakat járom és nem haladok előre.
procedure TForm1.Edit1Change(Sender: TObject);
var s:string;
var v:string;
var e:string;
var szam1:integer;
var s1:string;
var szam2:integer;
var s2:string;
var x:string;
begin
try
s:='for';
v:=' '+edit1.text[edit1.selstart-1+]; {valami}
e:='=';
{=}
// szam1:=strtoint(edit1.text); {0)
s1:='to'; {to}
// szam2:=strtoint(edit1.text); {32}
s2:='do'; {do}
if edit1.Text=s+v+e{+inttostr(szam1)+s1+inttostr(szam2)+s2} then halt;
except
ON EACCESSVIOLATION DO
end;
end;
end.
Próbálom kiszűrni és elválasztani a stringektől a számokat és a tényezőket de mindig csak ott tartok és oda jutok,hogy nem fogad el többet, mint csak 1-et mindenből. Lépésről lépésre próbálom megérteni mit csinál egy-egy utasítás,de nem haladok előre.
procedure TForm1.Edit1Change(Sender: TObject);
var s:string;
var v:string;
var e:string;
var szam1:integer;
var s1:string;
var szam2:integer;
var s2:string;
var x:string;
begin
try
s:='for';
v:=' '+edit1.text[edit1.selstart-1]; {valami}
e:='=';
{=}
// szam1:=strtoint(edit1.text); {0)
s1:='to'; {to}
// szam2:=strtoint(edit1.text); {32}
s2:='do'; {do}
if edit1.Text=s+v+e{+inttostr(szam1)+s1+inttostr(szam2)+s2} then halt;
except
ON EACCESSVIOLATION DO
end;
end;
end.
Legelső válaszoló tökéletesen leírta lépésenként mit kell csinálni, a végigiterálás azt jelenti végigmész a szövegen betűnként.
Off:
Mivel SimkoL már kötekedett leírom, hogy ne írja nekem senki, hogy nem atombiztos a program amit belinkeltem, mert túl nagy számnál kifagy, tudom.
Most még csak próbálkozom azért szakítom meg a programot és nem építem be a for ciklust. Leállítom a programot,ha kiadja valaki az utasítást, hogy "for t="
Tehát ha valaki beírja,hogy:
for kukutyin=88 to 456 do, akkor ebből leszármaztatva pl a "kukutyin" szó az egy véletlen sztring és nem állandó és pozicionálni kell az egész beírómezőben, az "=" jel az egy állandó ugyan, de azt is pozicionálni kell,hiszen a delphiben is ki lehet adni olyan örült utasításként is, hogy
for szam1 :=3 to 559437247 do
és akkor jön csak az igazi fejtörés, mikor a baloldali számot kell valahogy odavarázsolni, azt sem tudom hogy ezt szúrni kellene, vagy pozicionálni, vagy másolni. Aztán megint jön egy állandó string, mint a "to" és utána megint szóköz és aztán "szám2" amit szintén oda kell valahogy biggyeszteni és akkor megint egy állandó változó, mint a "do" amit megint oda kell beszúrni. Mivel fogalmam sincs, hogy mi az ami le tudná egyszerűsíteni a szóközöket, hová jön a selstart után a -1, vagy length(sztringek) után a +1 vagy mittom én. Ez már olyan zavaros, hogy teljesen kész vagyok tőle.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!