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.
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
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.
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.
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.
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 ?
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!