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
 41/63 anonim ***** válasza:

SimkoL:

C++ nyelven van írva az amit küldtem, más kérdés, hogy nem XP -re fordítottam. Egyszerű oknál fogva: már nem támogatott, és a legtöbben lecserélték.


Tehát XP-re: http://data pont hu/get/9092064/Gyakorikerdesek.exe

2015. szept. 12. 20:37
Hasznos számodra ez a válasz?
 42/63 SimkoL ***** válasza:
Hadd ne kelljen már elmagyaráznom, hogy miért nem fut. Nem azért mert XP - amúgy Win 7 - van a gépemen, hanem fölöttébb nem találja az msvcp140.dll-t ami a VS 2015 része. Legközelebb tessen hozzácsomagolni az elvárt dll-(eke)t.
2015. szept. 12. 21:17
Hasznos számodra ez a válasz?
 43/63 SimkoL ***** válasza:

Különösebb hibakezelés nélkül:


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;


type myVar = record

env: string;

first, last: string;

end;


type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.dfm}


function Enviroment(s: string): myVar;

begin

{kidobjuk a szóközöket}

s := StringReplace(s, ' ', '', [rfReplaceAll]);

{megkeressük a változó nevét}

Result.env := Copy(s,4, Pos('=', s) - 4);

{megkeressük a kezdő értéket}

Result.first := Copy(s, (Pos('=', s) + 1), Pos('to', LowerCase(s)) - Pos('=', s) - 1);

{megkeressük a végző értéket}

Result.last := Copy(s, Pos('to', LowerCase(s))+2, Pos('do', LowerCase(s)) - Pos('to', LowerCase(s))-2);

{ha nem lenne do akkor is megkeressük a végző értéket}

if Result.last = '' then

Result.last := Copy(s, Pos('to', LowerCase(s))+2, High(byte));

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Caption := Enviroment(Edit1.Text).env + ' ' + Enviroment(Edit1.Text).first + ' ' + Enviroment(Edit1.Text).last;;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text := 'for i = 123456 to 7890 do';

end;


end.


Dobjál fel egy Button-t és egy Edit-et. Ha ezek után sem megy szólj.

2015. szept. 12. 21:24
Hasznos számodra ez a válasz?
 44/63 anonim ***** válasza:

Képernyőkép:

[link]


Egy lehetséges megoldás:

[link]

2015. szept. 12. 21:24
Hasznos számodra ez a válasz?
 45/63 A kérdező kommentje:

Ez legalább működik jól, csak nem ez volt a feladat. Ez is kicsit gagyi, de 2-est kapnék rá és az ovisoknak biztos tetszene, DE:


Gondolkodom majd ugyan,hogy lehetne mindezt 1 textboxba bepréselni,de mára már lőttek az agyamnak. Továbbra is várom bárki segítségét. Sokat küszködtem vele és már nagyon fáradt vagyok. Enni sem ettem sokat. Nem biztos hogy tényleg az én vonalam ez,ha már ilyen dolgoknál elakadok mint a japán tank.Borzasztóan fáradt vok már.Megyek fürödni és lefekszem.Szellemileg 0 lettem tőle.:(


procedure TForm1.Edit2Change(Sender: TObject);

begin

s1:=edit2.Text;

if (edit2.text=lowercase(s1)) or (edit2.Text=uppercase(s1)) or (edit2.Text=edit2.text) then form1.ActiveControl:=edit3

end;


procedure TForm1.Edit3Change(Sender: TObject);

begin

szam:=strtoint(edit3.Text);

if edit3.text=inttostr(szam) then

form1.ActiveControl:=edit4;

end;

procedure TForm1.Edit4Change(Sender: TObject);

begin

s2:='to';

if (edit4.text=lowercase(s2)) or (edit1.Text=uppercase(s2)) or (edit1.Text='To') then form1.ActiveControl:=edit5

else

if edit4.text>=s2 then showmessage('Syntax Error!');


end;


procedure TForm1.Edit5Change(Sender: TObject);

begin


szam2:=strtoint(edit5.Text);

if edit5.text=inttostr(szam2) then

form1.ActiveControl:=edit6;


end;

procedure TForm1.Edit6Change(Sender: TObject);

begin


s3:='do';

if (edit6.text=lowercase(s3)) or (edit6.Text=uppercase(s3)) or (edit6.Text='Do') then begin

for i:=szam to szam2 do begin

memo1.Lines.Add(inttostr(i))

end;

end

else

if edit6.text>=s3 then showmessage('Syntax Error!');

end;

end.

2015. szept. 12. 21:31
 46/63 A kérdező kommentje:

A teljes program itt van,ha tetszik valamelyik kezdő programozónak,mert hogy én hiába tanulok már régóta, olyan mintha csak most kezdtem volna :( Szégyellem magam


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;


type

TForm1 = class(TForm)

Edit1: TEdit;

Memo1: TMemo;

Panel1: TPanel;

Panel2: TPanel;

Edit2: TEdit;

Panel3: TPanel;

Edit3: TEdit;

Panel4: TPanel;

Edit4: TEdit;

Panel5: TPanel;

Edit5: TEdit;

Panel6: TPanel;

Edit6: TEdit;

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Edit3Change(Sender: TObject);

procedure Edit4Change(Sender: TObject);

procedure Edit5Change(Sender: TObject);

procedure Edit6Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var


Form1: TForm1;


s:string;

s1,s2,s3:string;

szam,szam2:integer;

var i:integer;


implementation


{$R *.dfm}


procedure TForm1.Edit1Change(Sender: TObject);

begin

s:='for';

if (edit1.text=lowercase(s)) or (edit1.Text=uppercase(s)) or (edit1.Text='For') then form1.ActiveControl:=edit2

else

if edit1.text>=s then showmessage('Syntax Error!');

end;


procedure TForm1.Edit2Change(Sender: TObject);

begin

s1:=edit2.Text;

if (edit2.text=lowercase(s1)) or (edit2.Text=uppercase(s1)) or (edit2.Text=edit2.text) then form1.ActiveControl:=edit3

end;


procedure TForm1.Edit3Change(Sender: TObject);

begin

szam:=strtoint(edit3.Text);

if edit3.text=inttostr(szam) then

form1.ActiveControl:=edit4;

end;

procedure TForm1.Edit4Change(Sender: TObject);

begin

s2:='to';

if (edit4.text=lowercase(s2)) or (edit1.Text=uppercase(s2)) or (edit1.Text='To') then form1.ActiveControl:=edit5

else

if edit4.text>=s2 then showmessage('Syntax Error!');


end;


procedure TForm1.Edit5Change(Sender: TObject);

begin


szam2:=strtoint(edit5.Text);

if edit5.text=inttostr(szam2) then

form1.ActiveControl:=edit6;


end;

procedure TForm1.Edit6Change(Sender: TObject);

begin


s3:='do';

if (edit6.text=lowercase(s3)) or (edit6.Text=uppercase(s3)) or (edit6.Text='Do') then begin

for i:=szam to szam2 do begin

memo1.Lines.Add(inttostr(i))

end;

end

else

if edit6.text>=s3 then showmessage('Syntax Error!');

end;

end.

2015. szept. 12. 21:38
 47/63 A kérdező kommentje:
és az "=" jel is kimaradt. Na megyek a levesbe :D
2015. szept. 12. 21:40
 48/63 SimkoL ***** válasza:

Az előbb kimentem a konyhába a pofa bort inni. Előtte megnéztem a kódodat és keményen gondolkodtam, hogy előveszem a nagy rozsdás bökőt és oda szúrom ahol a legjobban fáj.

Ez mi a trutymó ?

s1:=edit2.Text;

if (edit2.text=lowercase(s1)) or (edit2.Text=uppercase(s1)) or (edit2.Text=edit2.text) then form1.ActiveControl:=edit3 kezdetnek ?

2015. szept. 12. 21:44
Hasznos számodra ez a válasz?
 49/63 SimkoL ***** válasza:
#Igaz Mondó Reloaded: Több szóközzel meg megetted a húgyos körtét ?
2015. szept. 12. 21:54
Hasznos számodra ez a válasz?
 50/63 anonim ***** válasza:

Átcsúsztál felette, linkeltem a szükséges dll-t.


[link]

2015. szept. 12. 22:02
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!