Hogyan tudnék egy pascal programot írni, amely legenerálja az összes,26 BETŰBŐL álló karakterláncot egy szöveges fájlba? 26 darab for ciklust egymásban nem enged a pascal, másképp nem tudnám megcsinálni.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
De, megtudnád. N darab egymásba ágyazott ciklust lehet szimulálni moduloval és osztással.
C++ kóddal:
for(int i = 0; i<10; ++i)
for(int j = 0; j<10; ++j)
cout << i << ':' << j << '\n';
Ekvivalens lesz azzal, hogy
for(int k = 0; k<10*10; ++k)
cout << k/10 << ':' << k%10 << '\n';
Persze karakterekszáma a huszonhatodikon az nagyon nagy szám, szóval EGY ciklussal nem fogod tudni megoldani, de lényegesen lehet csökkenteni a számukat.
A másik, elegánsabb megoldás a visszalépéses keresés.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Nem értem pontosan, mit szeretnél...
Ha az összes olyan karaktersorozatot akarod, ami 26 karakterből áll, az 26^26 db karaktersorozat lesz. Nincs olyan winyó, ami tárolná ezt a mennyiséget...
Ha meg csak az ABC 26 karakterét akarod, ahhoz miért kellene 26 for ciklus? Egyszerűen a-tól elindulsz és z-ig kiírod.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
azt szeretné, legalább is szerintem, hogy a 26 betűből képezhető összes karaktersorozatot írja ki a program
pl.:
aaaaa...aaaa
aaaaa...aaab
aaaaa...aabb
...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ha valóban ezt szeretnéd amit @21:48 ír akkor itt van megírtam: [link]
Nekem enged ennyi egymásba ágyazott for ciklust, szerintem valószínűleg valamit elnéztél. Rekurzióval is lehetne.
Az összes ilyen karakerből álló string-ek halmaza egy értelmetlenül nagy halmaz. Csak számoljunk kicsit egy string 26 karakter hosszú ami 26 byte utána van sortörés az +2 byte (windowsban) ami 28 byte összesen 26^26 db van belőle ami 28*26^26 byte = 172371348245800404702306880075205705728 byte = 160533327838220079152199328015 GB = 156770827967011796047069656 TB
Ha egy HDD-t csak 1 köbcentinek veszünk (aminél jelenleg most 2012-ben jóval nagyobbak) és 1 TB-osnak akkor
156770827967011796047069656 db ilyen HDD-re lenne szükség ami 156770827967 km^3 ami jóval nagyobb térfogat mint az egész Földgömb, pedig ilyen szuper kicsi térfogatú HDD-el számoltam amit nemigen kapsz a boltba. Akkor egy költői kérdésem: mégis milyen adattárolón is fogod tárolni?
Mégis ezt az értelmetlenül nagy adatmennyiséget képviselő adatmennyiséget, pascal forráskód formájába leírtam ami alig több mint 1 kilobyte-ba "fáj".
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
A végéről lefelejettem hogy close(texth);
Amúgy minek kell ez?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
#5 Igen, pontosan ezt írtam neki én is (#2) hogy hatalmas adatmennyiség lenne.
Nem is beszélve arról, mennyi idő kellene egy átlagos számítógépnek a 26^26 ciklust végrehajtani...
Még ha egy ezredmásodperc alatt 100000 milliárd ciklust hajt végre, akkor is majdnem 2000 milliárd évre volna szükség hozzá!
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
"igen, felejtős...egyébként nálam annyi for ciklusnál vmi "stack overflow" hibát adott ki."
Akkor gondolom Turbo pascal-t használsz, nem is tudom mikor láttam utóljára TP-t, még az előző évezredbe valamikor, helyette free pascal-t használok [link] , de inkább c++-t. Ha minden igaz TP-be lehet így növelni a stack-et: [link] /docs-html/prog/progsu91.html
Régen TP-be könnyen előjött ilyen futási hiba. FP-ba kevésbé, lehetne több ezer egymásba ágyazott for ciklus is akkor sem jönne elő, nagyon durva rekurziónál jön elő.
Egyébként lehetne mondjuk olyan weboldalt csinálni ami tartalmazná az összes ilyen string-et, egy oldalon lenne mondjuk 200 és lehetne lépkedni hasonlóan mint mondjuk az index fórumba (csak itt nem lenne dátum,nick név stb.) Mindig az aktuálisan kért oldalt számítás útján generálná le a webszerver, kliens oldalról úgysem látszik hogy az oldal előre eltárolva van vagy számítás útján van generálva. Ezt nevezik lusta kiértékelésnek, nevével ellentétbe nagyon hasznos, gyakorlatba sok helyen lélkülözhetetlen a használlata mert különben egyes alkalmazásoknak akkora futási ideje meg akkora tár, memóriaigénye lenne az alkalmazásnak hogy bugába dőlne az egész, csak egy példa a gépi sakkjátékos, ott az aktuális helyzetből a lehető legjobb lépést keresi, ehhez a kereséshez egy gráfot kell bejárnia, de olyan nagy ez a gráf hogy nem lehet letárolni ezért számított gráf (számítás útján kapjuk meg az egyes csúcsokat,éleket)
Ez egy nagy témakör, csak dióhéjba néhány szót írtam ...
Bocs ha sokat írtam.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!