Kezdőoldal » Számítástechnika » Programozás » Ezt a feladatot kaptuk suliban...

Ezt a feladatot kaptuk suliban, tud segíteni vki?

Figyelt kérdés

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.



2015. szept. 12. 15:02
1 2 3 4 5 6 7
 1/63 anonim ***** válasza:

Nem jó megoldás, hogy kiszeded a stringből az adott indexen levőket.


Amit csinálni kellene:

-Az egész textbox tartalmát kiszeded egy stringbe

-Végigiterálsz a stringen

--Ha az elején van "for", akkor megy tovább, különben hiba

--Ha a string következő karaktere nem "=" és nem null, akkor addig megy, amíg nem talál "=" jelet vagy a string végig. Ha nem talált, akkor hiba.

--ha a string következő nem null karaktere szám, akkor eltárolod, ha nem akkor hiba.

--Ha a string következő nem null karaktere a "to" és van utána egy szám, akkor elmented a számot a változóba, különben hiba.



Ha pedig nincs szükség feltétel ellenőrzésre, akkor megkeresed a 2 számot a stringben és elmented őket.

2015. szept. 12. 15:16
Hasznos számodra ez a válasz?
 2/63 A kérdező kommentje:
Ok akkor megelégszem a 2-esel is vagy a karóval.Nem vágom ezeket és az sem tudom így hogy mi az hogy terálás.Örülök hogy ennyit kipréseltem magamból azt is nagynehezen.A többiből szinte alig értek valamit.
2015. szept. 12. 15:23
 3/63 anonim ***** válasza:

Legegyszerűbb ha ráengedsz egy regxet, és ha megfelel akkor már pofon egyszerű kiszedni a 2 számot.


^for\s[A-Za-z]+\s?=\s?\d+\sto\s\d+$


http://regexr pont com/3bp5r

2015. szept. 12. 15:31
Hasznos számodra ez a válasz?
 4/63 A kérdező kommentje:

és a for után valami "akármi" változónak kell lennie, hiszen azt is véletlenszerűen választja meg a programozó, nem mindig "i" vagy "a" vagy "b" a változó,hanem valamikor "macskafarka", vagy "tejfől" is lehet akár, "for akármi = x to y do" akkor értékelje ki a műveletet.


Akárhogy is nézem a


"Fornak" is egy stringben kellene lennie, ami ráadásul állandó is


A 'valaminek'-nek is

az '='-jelnek is

a bal odali számoknak is külön változó kell

a jobb oldai számoknak is ugyszintén

a "to" az megint egy rohadt string

és a "do" is ugyanaz


tehát

var s,s1,s2,s3,s4:string


s:=memo1.text;



s2:='for'; {For}

s3:=strtoint(memo1.text) {Valami}

s4:=strtoint(memo1.text); {=}

s5:=inttostr(memo1.text); {233}

s6:=strtoint(memo1.text); {To}

s7:=strtoint(memo1.text); {652}

s8:=strtoint(memo1.text); {Do}


és mindez benne egy memoban, ráadásul beszúrva,vagy pozicionálva,vagy a rosseb se tudja

és még a kiértékelés egy másik memóba.Hát nemtom ez nekem sok sajnos.Meghaladja a képességeimet:)

2015. szept. 12. 15:39
 5/63 A kérdező kommentje:
és az a baj,hogy ez is rossz mint a franc,mert az strtoint sem használható csak string alapú számokra.Erre is össze-vissza hibát írogatna.Ezt is kár volt fejtegetnem,mert tök rossz az elmélet.
2015. szept. 12. 15:43
 6/63 A kérdező kommentje:
Ezt a regxet,meg most látom életemben először,de ez nekem tök kínai. Légy szíves ne szívassatok, fogalmam nincs erről az egészről azt mindenki látja. Érdemi segítséget kérek.Köszi
2015. szept. 12. 15:48
 7/63 A kérdező kommentje:

For valami = x to y do

s v e szam1 s1 szam2 s2


Akárhogy is számolom írom le magamnak érthetően akkor sem tudom,hogy mindezek után mit kell tenni, hova kellene beszúrni,vagy pozicionálni és főleg mivel.


var s:string;

var v:string;

var e:string;

var szam:integer;

var s1:string;

var szam2:integer;

var s2:string;

begin


s:='for';

v:=memo1.text;

e:=memo1.text;

szam:=inttostr(szam1);

s1:='to';

szam2:=inttostr(szam2);

s2:='do';


Na és akkor innét mi van? :))

2015. szept. 12. 16:01
 8/63 A kérdező kommentje:
Annyi integeres és stringes változót kell már eleve felvenni hozzá mint a franc szerintem.Már ebben megakad és összezavarodik az ember,legalább is én sajnos:(
2015. szept. 12. 16:10
 9/63 anonim ***** válasza:

Latom sokat foglalkozol a temaval, viszont a tanarod nem magyarazott el mindent rendesen.


1. A 'for'-t, 'do'-t nem kell eltarolni valtozoban. Ez megroviditi a kodod rendesen.


2. String.split fuggvennyel ezt egyszeruen meg lehet csinalni. Viszont igy fontos, hogy a kerdesed elejen levo formatumban hasznald a bemenetet (kesobb lehagytad a space-t az = elott).


// Space-k menten feldaraboljuk a bemenetet tombbe

String[] bemenet = memo1.text.split(' ');

// Leellenorizzuk a fix tagokat:

if (bemenet.size!=7 || bemenet[0]!="for" || bemenet[2]!="=" || bemenet[4]!="to" || bemenet[6]!="do") {

memo2.lines.Add("rossz bemenet");

return;

}

// Ha jo a bemenet, kivesszuk a szamokat

x = strtoint(bemenet[3]);


Tobbit mar szerintem tudni fogod.

2015. szept. 12. 16:38
Hasznos számodra ez a válasz?
 10/63 SimkoL ***** válasza:
Ha holnapig ráér akkor szívesen segítek, mert eddig sok hülyeséget hordta(to)k össze. Közel sem olyan grízes a téma, minimális programozói tudás kell hozzá, a többi paraszti logika.
2015. szept. 12. 16:49
Hasznos számodra ez a válasz?
1 2 3 4 5 6 7

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!