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.
Még egyszer nagyon köszönöm, de sajnos az a helyzet, h nekem egy olyan feladathoz kellene egy fv, ahol nem ismerjük a keresendő karaktereket (m felhasználó adja meg).
Azt hittem, h ha ennyire leegyszerűsítem a problémát, akkor gyorsabban jutok jó megoldáshoz, de sajnos a fv-eiteket nem tudom használni.
Tehát esetleg lenne kedvetek kitalálni egy olyan megoldást, ahol nem ismerjük a karaktereket?
Tehát az előző elemhez hasonlítgatás azért nem jó, m nem tudjuk, h a keresett kifejezés sos vagy soos, s míg az elsőnél arra kell figyelni, h ne legyen több o, a másodiknál már arra, h csak két o legyen.
Van esetleg ötletetek arra, h hogyan lehet megoldani, h a program mindig el tudja dönteni, h éppen milyen kitételre van szükség?
Inkább leírom a teljes feladatot:
Titkosírás: egy elfogott kém úgy üzeni meg megbízóinak fogva tartója nevét, hogy a név karaktereit szétszórja egy semleges szövegsor karakterei között. A megbízó végigfuttatja a gyanúsítottak neveit a kém egysoros üzenetén és pontosan egy név lesz, amelynek a karakterei a megfelelő sorrendben szerepelnek a szövegsorban. Melyik ez a név?
feladat vége
Amikor meg kell oldanom a feladatot, akkor kapok majd egy ismeretlen szövegsort és egy ismeretlen névlistát. És egy futtatásból meg kell majd mondanom a fogva tartó nevét. Ha nincs időtök megírni a forráskódot, akkor ötleteknek is nagyon örülnék, m már kifogytam belőlük.
@SimkoL: Most aztán elemedben vagy, mi?
@Kérdező: Hát, így azért eléggé más a leányzó fekvése... Jó kis izgalmas feladat, de hogy mit tudok vele kezdeni?
A desifrírozásra gondoltam... :)
Ékezetes betűk is játszanak?
Na jó, én lefekszem, holnap korán kezdek.
Pedig már látom a fényt az alagút végén...
program project1;
{$mode objfpc}
uses Classes, SysUtils;
var s : TStringList;
i : integer;
function myFound(subchar, s : string) : boolean;
var i, n : byte;
temp : string;
halmaz : set of char;
begin
temp := '';
halmaz := [];
myFound := False;
subchar := UpperCase(subchar);
s := UpperCase(s);
for i := 1 to Length(subchar) do if not (subchar[i] in halmaz) then halmaz := halmaz + [subchar[i]];
for i := 1 to Length(s) do if s[i] in halmaz then temp := temp + s[i];
for n := 1 to Length(subchar) do while (temp[n] <> subchar[n]) and (Length(temp) > Length(subchar)) do Delete(temp, n, 1);
SetLength(temp, Length(subchar));
myFound := temp = subchar;
end;
begin
s := TStringList.Create;
try
s.LoadFromFile('stringek.txt');
for i := 0 to s.Count -1 do if myFound(s.Strings[i], 'Ez lesz majd a teszt szöveged a vizsgán, de ha minden más is lehet :)') then WriteLn(s.Strings[i]);
finally
s.free;
end;
ReadLn;
end.
stringek.txt:
Toth
Beregi
Somlo
Pesti
Vasas
Simko
Balatoni
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!