Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnék egy pascal...

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.

Figyelt kérdés
2012. ápr. 12. 20:22
1 2
 1/12 iostream ***** válasza:

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.

2012. ápr. 12. 21:31
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

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.

2012. ápr. 12. 21:36
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

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

...

2012. ápr. 12. 21:48
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
Mit szeretnél feltörni szótárazással? :))
2012. ápr. 12. 22:28
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:

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".

2012. ápr. 12. 22:33
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:

A végéről lefelejettem hogy close(texth);

Amúgy minek kell ez?

2012. ápr. 12. 22:36
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:

#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á!

2012. ápr. 12. 23:51
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:
igen, felejtős...egyébként nálam annyi for ciklusnál vmi "stack overflow" hibát adott ki. WoW-hoz szerettem volna az összes kulcsot generálni, először csak betűkkel, aztán majd számokat belefoglaltam volna, ami 10^26-nal még megszorozta volna a szükséges területet, dehát felejtős. azért köszi mindenkinek :)
2012. ápr. 13. 10:22
 9/12 anonim ***** válasza:

"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.

2012. ápr. 13. 14:04
Hasznos számodra ez a válasz?
 10/12 iostream ***** válasza:

Ez az utolsó jót mond, ha mindig az n. permutációtól nézünk k darabot, az járható út.


[link]

2012. ápr. 13. 15:25
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!