Kezdőoldal » Számítástechnika » Programozás » Pascalban hogy lehet szöveget...

Pascalban hogy lehet szöveget randomizálni?

Figyelt kérdés
A számnál megy de szerintem a szöveget nem lehet ugyanúgy..

2012. ápr. 1. 10:46
 1/9 2xSü ***** válasza:
Mire gondolsz? Karaktereket lehet ugye véletlenszerűen kiválasztani. Egy számot kell generálni az a betű ascii kódja és a z betű ascii kódja között, majd chr függvénnyel kész is a random karakter. Ezt aztán annyiszor ismétled, ahányszor akarod, annyi space-t teszel bele, ahányat akarsz, olyan hosszú szöveget állítasz elő, amilyet akarsz.
2012. ápr. 1. 10:50
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:
tudnál rá irni egy példát?:d
2012. ápr. 1. 10:58
 3/9 2xSü ***** válasza:

Közben – mivel a kérdező privát üzenetben is rákérdezett – válaszoltam rá. De álljon itt a válaszom, hátha mást is érdekelni fog a jövőben.


Régen használtam pascalt, így elnézést, ha esetleg hibáznék. De az elv talán érthető lesz.


var

ch:char;

begin

ch:=chr(radnom(26)+ord('a'));

end.


Magyarán 0 és 25 között generálunk számot (26 betűs az angol ábécé). Ehhez hozzáadjuk az 'a' karakter kódját (ami egyébként a karaktertáblában 65-ös), így az 'a' és 'z' karakter kódja közötti számunk van. Innen a chr függvénnyel karaktert készítünk belőle.


Ha pl. ékezetes karakterek is kellenek, akkor egy másik módszert tudok ajánlani:


const betuk:String='aábcdeéfg………xyz';

var ch: char;

begin

ch:=copy(betuk , radnom(length(betuk))+1 , 1);

end.


Magyarán van egy betuk nevű stringünk, benne az összes előforduló karakter. Generálunk egy random számot 0 és a string hossza között és innen másolunk ki egy karaktert.

2012. ápr. 1. 11:25
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:

Az utolsó válaszolónak üzenem hogy az első program mindig csak egy "a" betüt ír ki a második program pedig error-t.

A saját programom(ez csak egy random karaktert generál):

uses crt;

var x:word; c:char;

begin

randomize;

ClrScr;

x:=random(255);

c:=chr(x);

write(c);

repeat until keypressed;

end.

A szöveggenerálás egy kicsit hosszasabb munka de még ma elkészítem, még írok.

2012. ápr. 1. 12:07
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
kössz:D nagyon szükségem lenne rá..
2012. ápr. 1. 12:33
 6/9 anonim ***** válasza:
Elkészítettem egy random string generáló függvényt, a függvénynek paraméterben átadható hogy milyen hosszú string-et generáljon és hogy milyen karakterek szerepeljenek benne, gondolom másnak is szünksége lehet rá ezért nem privátba írom: [link]
2012. ápr. 1. 12:39
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:
#4 Bocsi megelőztelek.
2012. ápr. 1. 12:40
Hasznos számodra ez a válasz?
 8/9 2xSü ***** válasza:

#4: Mondtam, hogy fogok hibázni. :-)


Igen, az elsőben elírtam a random-ot radnomnak. A másodikkal nem tudom mi a hiba, bár úgy látom ott is elírtam a random-ot. (Ctrl+C,Ctrl+V átka.)


(Azért azt is tudni kell, hogy különböző megvalósításai vannak a Pascal nyelvnek, eltérő függvénynevekkel, eltérő speciális szabályokkal.)

2012. ápr. 1. 13:06
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:

4.Vagyok.

Mint ígértem elkészült a program:

uses crt;

var x,i:word; c:char; n,k:longint;


procedure ha(x:word);

begin

x:=random(255);

if ((x>=65) and (x<=90)) or ((x>=97) and (x<=122)) or

((x>=48) and (x<=57)) then

c:=chr(x) else

ha(x);

end;


procedure nagybetu(x:word);

begin

x:=random(255);

if ((x>=65) and (x<=90)) then

c:=chr(x) else

nagybetu(x);

end;


procedure kisbetu(x:word);

begin

x:=random(255);

if ((x>=97) and (x<=122)) then

c:=chr(x) else

kisbetu(x);

end;


procedure szam(x:word);

begin

x:=random(255);

if ((x>=48) and (x<=57)) then

c:=chr(x) else

szam(x);

end;


procedure ossz(x:word);

begin

x:=random(255);

c:=chr(x);

end;


procedure ha0(k:integer);

begin

case k of

1:nagybetu(x);

2:kisbetu(x);

3:szam(x);

4:ha(x);

5:ossz(x);

end;

end;


begin

randomize;

ClrScr;

writeln('Milyen stringet szeretnel:');

writeln('1=Nagybetukbol allo');

writeln('2=Kisbetukbol allo');

writeln('3=Szamokbol allo');

writeln('4=Mindharombol allo');

writeln('5=Osszes karakterbol allo');

write('k=');

readln(k);

write('Ird be mennyi karakterbol alljon a string:');

readln(n);

for i:=1 to n do

begin

ha0(k);

write(c);

end;

repeat until keypressed;

end.


Ha pas file is kell szólj és küldöm.

2012. ápr. 1. 16:14
Hasznos számodra ez a válasz?

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!