Pascal dilinde random yapma

Battal Gazi
08-01-2010, 00:10   |  #1  
Battal Gazi avatarı
OP Yıllanmış Üye
Teşekkür Sayısı: 0
366 mesaj
Kayıt Tarihi:Kayıt: Oca 2009

Bir ödev yapmam gerekiyor da yarına. En fazla yarı sabah giderken görebilirim, umarım o zamana kadar cevap gelir.


Bir soru verildi de. Yaptım çalışmadı kodlar yanımda değil yani bu bilgisayarda değil şu an.

Bazı sorularım olacak:

1-Free pscal ile yazdım. Karışık bir program, kullanıcı açısından. Windows aplication deyip bir isim veriyorum Sonra compile edince yine kayıt ediyor, bu sefer exe ile biten bir isim veriyorum (önceden kayıettiğimle aynı isim olamıyor). Ama hem ncekinin hem exe ile biten yazdığımın exesini yani 2 tane exe koyuyor. Bunu anlamadım. Ben mi hata yapıyorum yoksa bu iş böyle mi?

2- For döngüsünün içinde random kullanmamız lazım. Bu mümkün mü?Kodları getirebilirsem daha iyi oalcak da, kısa bir kısmını yazayım.

.
.
.

for i:=1 to n do
begin

a:=random(20)
b:=random(20)

(Bu ikisi random fonksiyonu, iki değişkeni rastgele atattım)

a+i:=
.
.
.

Böyle olabilir mi? Kodlarım işe yarayacaksa getirmeye çalışacağım da onları...

Battal Gazi
08-01-2010, 00:47   |  #2  
Battal Gazi avatarı
OP Yıllanmış Üye
Teşekkür Sayısı: 0
366 mesaj
Kayıt Tarihi:Kayıt: Oca 2009

Soru bu:
  
  
  

Bir simülasyon çalışmasında robotNxN’lik bir alanda yürütülmektedir. Bunun için her harekette robotunsatır ve sütun olarak ne kadar hareket etmesinin istendiği rasgeledeğerlerle belirlenmektedir. Robot eğer gitmesi istenilen yer NxN’likalan içindeyse istenilen hareketi yapmakta, alanın dışına çıkıyorsa birsonraki hareket komutunu değerlendirmektedir.
  
Robotun yürüdüğü alanın büyüklüğünü belirlemek için N değerini okuyunuz.  
Robotun kaç hareket yapacağını belirlemek için M sayısını okuyunuz.  
Robotun başlangıçta bulunduğu kutunun satır ve sütun numarasını okuyunuz.
Her adımda rasgele değerlerle satır ve sütun değişimini belirleyiniz.  
Buna göre robotun M adım için matris üzerindeki yerini her hareket sonrası matrisin durumun ekrana yazdırarak gösteriniz.  
  
Rasgele hareket miktarını bulmak için PASCAL’ın rasgele sayı üretenfonksiyonu olan Random() kullanılacaktır. Random fonksiyonu 0 ileparametre olarak verilen sayı arasında rasgele bir sayı üretir. Robotunyürüdüğü alan NxN olduğu için belirlenecek rasgele değer 1-N arasındaolmalıdır. Satır ve sütun hareketini elde etmek için her adımda Randomfonksiyonunun 2 defa kullanılması gerekmektedir.
  
Örneğin aşağıdaki program parçasında  3 defa 0-20 arası bir rasgele sayı A değişkenine atanır.   
        Randomize;    {shuffling}
              For i:=1 To 3 Do  
        Begin
            A:=Random(20);  
              Writeln(A)         
                 End;         
  
  
(Ben burayı şöyle düşündüm, writeln a nın randomla ilgisi yok, öylesine koymuş yani göstermek için diye.)
  
Örnek : N=5 ve Robot başlangıçta (2,3) kutusunda olsun. Satır değişimi= -1 sütun değişimi = 2 iken ekranda görülecek bilgi aşağıdaki gibiolur :
  
                                0 0 0 0 1  
0 0 0 0 0  
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0  
  
  
Teslim Edilecek Rapor
Teslim edeceğiniz rapor aşağıdaki şekilde hazırlanmalıdır.
Ödevde yaptığınız işlemleri kısaca anlatınız.  
Akış diyagramını çiziniz.
Kullandığınız değişkenlerin kullanım amacını açıklayınız.
Programı PASCAL dilinde yazınız.   
Programınızın çalışmasının ekran çıktılarını veriniz.

  
  
  
  
  
  
Kodlar:
  
  
  vprogram BattalGazi (input,output);
var
    i,j,x,y,m,n,k,a,b: integer;
    matris:array[1..20,1..20] of integer;
  
begin
    writeln('Matrisin boyutlarini veriniz');
    readln(n);
    for i:=1 to n do
       for j:=1 to n do
          begin
          matris[i,j]:=0
       end;
  
    writeln('Robotun ilk bulundugu yerin satir numarasini giriniz');
    readln(x);
    writeln('Robotun ilk bulundugu yerin sutun numarasini giriniz');
    readln(y);
    writeln('Robotun kac hareket yapacagini giriniz');
    readln(m);
  
    for k:=1 to m do
    begin
       i:=random(20);
       j:=random(20);
       if (i+x<=n) and (j+y<=n)
          then
          begin
          matris[x,y]:=matris[x+i,y+j];
          matris[x,y]:=1;
          for a:=1 to n do
          begin
             for b:=1 to n do
             begin
                write(matris[i,j])
             end;
          writeln()
          end;
          matris[x,y]:=0;
          writeln()
          end
    end;
    readln()
  
  
end.
  
  
  
yAPTIM BU kodları, hata vermedi ama çalışmadı. Bozuk çalıştı. Randomda hata var ama neden acaba?

Battal Gazi
08-01-2010, 05:01   |  #3  
Battal Gazi avatarı
OP Yıllanmış Üye
Teşekkür Sayısı: 0
366 mesaj
Kayıt Tarihi:Kayıt: Oca 2009

Yaptım kendim. Şimdi hoca görüp kabul etmemezlik etmesin. Silinirse iyi olur bu konu...