Pascal hiba? Se'gítsete'k Vuknak, a kis rókának (valamit még írnom k'ellett, m rövid volt a kérdés)
A feladatom egy fájlban szereplő string adatokból kiválasztani azokat, amelyekben a "s,o,s" betűk mindegyike, ilyen sorrendben megtalálható.A problémám az, hogy hogyan fejezem ki a két s egymásutániságát.
Itt van az erre vonatkozó megoldásom, de nem működik. Van valakinek jobb ötlete? Esetleg valaki ki tudj bogarászni, h miért nem működik az enyém?
For i:=1 to db do begin
if (pos('s',t[i].c)>0) and (pos('s',t[i].c)<pos('o',t[i].c)<
(pos('s',(delete(t[i].c,1,pos('s',t[i].c))))+length(pos('s',t[i].c))) then begin
writeln(t[i].c);
end;
end;
az volt az ötlet, h a második s-nél kitörlöm először a az első s-ig tartó szakaszt, aztán onnan kiszámolom hányadik a második s, aztán hozzáadom a kivont értéket, h a nagyságrend megmaradjon.
Ej, Kérdező, muszáj neked közbekotyogni? Már majdnem elküldtem a szép könnyes búcsút:
@SimkoL:
Csak te, én már nem is erőltetem a magam mesterkedését a tied után.
Hát ez a helyzet, a kicsinyek előbb-utóbb kiröpülnek a fészekből, miért is pillantanának vissza a sáros földgolyóbisra? Az ő lakuk már a magas levegőég, mint a sarlósfecskéé, útjuk pedig fölfelé ível ezentúl, a Nap felé, a Nap felé...
Mennyivel helyzethez illőbb lett volna, ha tényleg eltűnsz a balfenéken, ahogy másnál megszoktuk...
;)
Egy alternatív megoldás (csak a program lelkét írom le):
For i:=1 To nevekszama Do Begin
ReadLn(nev);
talalt:=1;
For j:=1 To length(szoveg) Do Begin
If UpCase(nev[talalt])=UpCase(szoveg[j]) Then Inc(talalt);
End;
If talalt>length(nev) Then WriteLn(nev);
Pocsék a kódolási stílusod. A foglalt szavak kisbetűsek még ha nem is érzékeny rá a Pascal mert úgy szép. for, to, in, if, then, begin, end, do, while, repeat, until... nem olyan sok van a többiek pedig nagybetűvel kezdődnek és értelemszerűen ha összetett akkor a következő szó kezdete is. A begin - end 'párost' is az olvashatóság kedvéért illik külön sorba írni és köztük a behúzásokat is betartani. Tudom ez mind kukacoskodásnak tűnik, de ha itt nem szoksz hozzá majd egy C alapú nyelvben vagy a Pythonban le...pod magad. Nem beszélve róla hogy egy több ezer soros kódot is könnyebb olvasni ha 'szép'.
A sógorom mondása: szemnek is tetszős legyen.
Nekem azért igenis imponál, hogy Kérdező egy ilyen frappáns saját megoldással állt elő, amely nem is hasonlít az eddigiekre, és plusz unitok se kellenek hozzá. Már túl zizi vagyok ahhoz, hogy észrevegyem benne az esetleges buktatókat, mindenesetre itt egy változata (a kémbanda leleplezése):
program rejtjel;
var
i, talalt : integer;
nev : string;
fajl : text;
szoveg : string = 'Ez lesz majd a tesztszöveged a vizsgán, de ha akár minden más is lehet :)';
begin
Assign(fajl, 'gyanus.txt');
{$I-} Reset(fajl); {$I+}
if IOResult=0 then begin
szoveg := UpCase(szoveg);
while not Eof(fajl) do begin
ReadLn(fajl, nev); nev := UpCase(nev);
talalt:=1;
for i:=1 to length(szoveg) do
if nev[talalt] = szoveg[i] then Inc(talalt);
if talalt > length(nev) then WriteLn(nev);
end;
end
else
WriteLn('Nem talalom a GYANUS.TXT fajlt!');
ReadLn;
end.
{
gyanus.txt:
Tóth
Erdei
Beregi
Somló
Szögedi
Pesti
Vasas
Simkó
Balatoni
Zahár
Avar
Korhely
Kaposi
}
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!