FreePascalban kaptam egy feladatot, de nem boldogulok vele. Valaki megírná a programját némi magyarázattal fűszerezve?
De ha ragaszkodol a szükségtelen dolgokhoz, föl is lehet tupírozni, még Inc is van benne:
program betucsere;
var
i, j, k, l : byte;
elem : array [0..10] of string[8] =
(#58,#63,'van','masszőr','az','kérdezi','mért','egy','hellén','ön',#32);
szoveg : array[0..3] of string = ('','','','');
sorszam : array[0..7] of byte = (5,7,8,3,6,2,4,9);
function csere(csSzoveg : string) : string;
var
i1, i2 : integer;
betu1, betu2 : string;
begin
i1 := Pos(#104, csSzoveg);
betu1 := Copy(csSzoveg, i1, 1);
i2 := Pos(#109, csSzoveg);
betu2 := Copy(csSzoveg, i2, 1);
Delete(csSzoveg, i1, 1);
Insert(betu2, csSzoveg, i1);
Delete(csSzoveg, i2, 1);
Insert(betu1, csSzoveg, i2);
csere := csSzoveg;
end;
begin
l := 0;
k := 1;
for j := 0 to 2 do
begin
if j > 1 then
Inc(k, 2);
for i := 0 to k do
begin
szoveg[j] := szoveg[j] + elem[sorszam[l]] + elem[10];
Inc(l);
end;
end;
Inc(j);
szoveg[j] := csere(szoveg[j-2]);
Delete(szoveg[1], Length(szoveg[1]), 1);
Delete(szoveg[3], Length(szoveg[3]), 1);
szoveg[0][1] := Upcase(szoveg[0][1]);
szoveg[2][1] := Upcase(szoveg[2][1]);
WriteLn(szoveg[0] + szoveg[1] + elem[0]);
WriteLn(szoveg[2] + szoveg[3] + elem[1]);
end.
(Az imént fölöslegesen felejtettem benne a CRT unitot, most elhagytam.)
Egy szöveges változó két elemének cseréjét? Hááát, bemutathatnád a megoldásodat, mert én így első gondolatra azt hinném, hogy legalább egy Copy is kéne hozzá.
Egyébként egyszerűen számokkal indexelve tényleg nem túl bonyolult dolgok ezek. Én is azért írtam bele a kódba ilyen kis cseles marhaságokat, hogy egyáltalán legyen benne fölfedezni való.
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!