Losowa litera w turbo pascalu


(Dawidfajkowski) #1

Witam mam problem i otóż chce napisać program który będzie mi losował litery od A do J napisany w turbo pascalu więc pomyślałem że zrobię to tak że będę losował liczby z zakresu od 65 do 74 w systemie DEC a później zamieniałbym to na odpowiednie znaki, jest to dobry pomysł czy w pascalu da się jakoś zrobić to inaczej?


(Sawyer47) #2

Sposób jaki zaproponowałeś jest prosty i raczej nie ma potrzeby robienia tego inaczej.


(Dawidfajkowski) #3

Lecz niestety gdy próbuje wylosować liczbę z zakresu od 65 do 74 to zawsze mi brakuje którejś bo robię to tak:

wylosowana:=random(9)+65;

W takim przypadku niestety zakres jest od 0 do 8 i największa wylosowana liczba to 73 i tutaj właśnie leży problem.


(Sawyer47) #4

Wyczytałem, że pascalowskie random losuje liczbę z zakresu <0, argument), wystarczy więc podnieść argument o jeden.


(Marcinch7) #5

Może coś na ten wzór? Łap moją propozycje (obrazową, ten kod nie działa):

char literki[9] = {'A','B','C','D','E','F','G','H','I','J'}

i=LosujLiczbe(9)

return literki


(Dawidfajkowski) #6

Wtedy zakres jest od 66 do 74 który nadal nie jest właściwy.


(Marcin 110) #7

może takie coś?

literka := chr(random(ord('J') - ord('A') + 1) + ord('A'));

(Aiatvideo) #8

Czesc,

Trzeba wiecej wiary w siebie. Twoj pomysl byl ok, tylko ze potrzebowales 10 liczb a nie 9, jezeli obie liczby maja wchodzic do przedzialu. :slight_smile:


(Dawidfajkowski) #9

Dzięki wszystkim ale poradziłem sobie całkiem inaczej, chciałem tego uniknąć no ale kodu jest znacznie więcej. Stworzyłem tablice i wypełniłem ją literkami od A do J i po prostu losowo się do nich odwołuje a wyniki zapisuje sobie do drugiej tablicy :slight_smile:


(floyd) #10

wylosowana:=random(10)+64;

wylosowana:=wylosowana+abs(wylosowana=0)*10;