![Přidat otázku mezi oblíbené Přidat otázku mezi oblíbené](https://static.poradna.net/images/post/action/favorite.png)
Pascal - načítání
Ahojte, mám načíst N řetězců a potom u každého zjistit, zda se z každého z nich dá poskládat jeden hlavní. To mám hotové, jenom nevím, jak si zapamatovat všechny ty řetězce abych pak mohl vypsat řešení.
Příklad vstupu:
ahojky (hlavní řetězec)
5 (počet neúplných řetězců)
ahoj
aoj
axhoj
aoky
asjkb
Výstup:
ANO
ANO
NE
ANO
NE
Snad je to dost srozumitelné, jsem nováček.
Keď sa nebudem zaoberať logikou skladania reťazcov a ani výstupu ako má vyzerať, potom skús ukladať reťazce do poľa:
prípadne sem daj kód ako to máš, lebo ja som nepochopil čoho chceš dosiahnuť...
var
k,kousek:string;
i,y,m,n:integer;
begin
readln(k); (hlavní řetězec)
readln(n); (tady načítám řetězce)
for m:=1 to n do
readln(kousek);
y:=0;
i:=0;
repeat
i:=i+1;
repeat
y:=y+1;
if (y=length(k)) and (i<>length(kousek)) then
begin
writeln('NE');
break;
end;
until (kousek[i]=k[y]);
until (length(kousek)=i) or (y=length(k));
if (length(kousek)=i) and (y<=length(k)) then
writeln('ANO'); (Vypisuju ANO nebo NE, ale takhle je to jenom pro poslední řetězec, já to potřebuju pro všechny)
readln;
end.
Problém vidím v tomto cykle:
for m:=1 to n do
readln(kousek); //proste niekoľko-krát za sebou načítavaš reťazec a nič viac
Po skončení načítavania robíš porovnanie, ale to porovnanie platí len pre posledne načítaný reťazec.
Možno by stačilo pridať:
for m:=1 to n do
begin
readln(kousek);
... /tu si porovnávaj a vypisuj výsledok
...
readln;
end;
Ak si chceš najprv načítať všetky reťazce a až následne ich testovať a vypisovať, potom to takto nepôjde...
Reťazce si musíš niekam uložiť napr. dynamické pole (nie je vopred známa veľkosť), ale neviem či ste to už preberali...
Prípadne OOP umožňuje zoznam reťazcov StringList apod. Opäť netuším čo v škole máte a s čím robíte...
Jde o to že musím vypsat všechny výsledky najednou. Zadám vstupy a až potom mi mají vylézt výstupy. Dynamická pole neznám, nemohl by jsi mi tam těch pá řádek napsat? Já jsem rád že jsem vůbec udělal to co mám.
Deklaruj si dynamické pole:
keď už budeš vedieť veľkosť (počet prvkov poľa)> readln(n); (tady načítám řetězce),
deklaruješ jeho veľkosť:
SetLength(a,n);
následne načítavaš reťazce a ukladáš do poľa:
potom prechádzaš poľom od začiatku, testuješ a vypisuješ:
ideálne by bolo rozdeliť kód do menších častí (procedúry a funkcie), aby si mal v tom prehľad...![:-)](https://static.poradna.net/images/smiley/smile.gif)
Máš to převrácené - z hlavního řetězce skládáš ty ostatní (podle příkladu), možná jde jen o chybu v popisu.
Jinak bych zahodil Pascal(jsou z něj jen nervy a programuje se pomalu), je to už zastaralá technologie a udělal to moderně
Hrátky s formátováním nebo záměnu testovacího řetězce za hlavní snad zvládneš.
A jestli má jít o interaktivní aplikaci nebo se slova předávají přes argumenty už je detail.