Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

pseudo -> java sorunsalım.


Öne çıkan mesajlar

Mesaj tarihi:
Arkadaşlar
Bir pseudo kodunu javaya geçirmeye çalışıyorum, kafayı yiyecem beceremedim. Kitaptan aldım scan ettim kusura bakmayın :P

pseudo kod: tık

output beklentisi: tık

Buda benim yaptığım, hep error alıyorum:


class RevolvingDoor{

static int fact(int a){
if(a == 0)
return 0;
if(a == 1)
return 1;
else return a * fact(a -1);
}

static int combination(int n,int k){

return fact(n) / ( fact(k) * fact(n-k)) ;
}


static void RevDoor(int n,int k){

int[] t= new int[n];
for(int i=1; i<n;i++){
t[i]= i;
}

for(int i=1; i<= combination(n,k);i++){
System.out.print(combination(t[i],1));
t[k+1]= n + 1;
int j = 1;
while(j<=k && t[j]==j){
j= j+1;
}
if((k-j) % 2 != 0){
if(j==1)
t[1]= t[1] -1;
else
t[j-1] = j;
t[j-2] = j - 1;
}
else{
if(t[j+1] != t[j] + 1){
t[j-1] = t[j];
t[j] = t[j] + 1;
}
else
t[j+1] = t[j];
t[j] = j;
}
}
System.out.println();
}

public static void main(String[] args){

/*System.out.println(fact(3));
System.out.println(combination(3,2));*/
RevDoor(6,1);
}
}


- Sizce bu "visit the combination [1...k] ne demek olabilir? sanırım print etmemiz gerekiyor ama combinasyonun iki inputu var burda tek input gösteriyor ?

-Paso out of boundaries hatası alıyorum yukardaki programı çalıştırınca, acaba nerede hata yapmış olabilirim? Göremedim hatayı , sanırım bu kod array indexini 1 den alırken javada 0 olması sorun çıkarıyor.
Mesaj tarihi:
pseudo koduna bakmadim ama kodunda soyle bi sorun var galiba..

System.out.print(combination(t[i],1));

bunu cagirdiginda ilk olarak 1,1 i cagiriyosun

bu da

return fact(n) / ( fact(k) * fact(n-k)) ;

burada

1/0 cikariyo

bu da sorun yaratiyo.
Mesaj tarihi:
nedanko said:
pseudo koduna bakmadim ama kodunda soyle bi sorun var galiba..

System.out.print(combination(t[i],1));

bunu cagirdiginda ilk olarak 1,1 i cagiriyosun

bu da

return fact(n) / ( fact(k) * fact(n-k)) ;

burada

1/0 cikariyo

bu da sorun yaratiyo.

ah gösteridiğin nokta için teşekkür ederim, peki pseudo da "visit the combination t[1...k] ne demek istiyor olabilir? Kafam karıştı çünkü combinasyon çift input alan bir metod ama burda sanki t nin 1 den k sına kadar olan bütün elemanlarının combinasyonunu yaz diyor, neye göre kombinasyonu ?
Mesaj tarihi:
Array indexlerinde sorun var. Senin de dediğin gibi pseudo code index'leri 1'den başlatmış. 1'den n'e kadar elemanları kullanmış sonra.

Java'da index 0'dan başladığı için new int[n] ile ürettiğin array'in en büyük index'i n - 1 olacak. Dolayısıyla döngüsünde 0'dan n-1'e kadar elemanları kullanman lazım. Sen 1'den başlayıp n-1'e kadar kullanmışsın.

Pseudo kodda 1 to n yazan yerleri Java'da 0 to n - 1 olarak çevir. Tamamını okuyamadım ama.
Mesaj tarihi:
Arkadaşlar yardımlarınız için çok teşekkürler :)
Mirage said:
Array indexlerinde sorun var. Senin de dediğin gibi pseudo code index'leri 1'den başlatmış. 1'den n'e kadar elemanları kullanmış sonra.

Java'da index 0'dan başladığı için new int[n] ile ürettiğin array'in en büyük index'i n - 1 olacak. Dolayısıyla döngüsünde 0'dan n-1'e kadar elemanları kullanman lazım. Sen 1'den başlayıp n-1'e kadar kullanmışsın.

Pseudo kodda 1 to n yazan yerleri Java'da 0 to n - 1 olarak çevir. Tamamını okuyamadım ama.

peki for i<- 1 to n derse
bu (for int i=0;i
Mesaj tarihi:
Evet ama sonrasında i kullandığı yerlerde de istikrarlı olarak i - 1 kullanmayı unutma.

Edit: Kolaylık olsun diye kodlamaya başlamadan önce pseudo koddaki index'leri 0'dan başlayacak şekilde değiştirebilirsin. Sonra java koduyla pseudo kodunu karşılaştırırken aynı olur bütün index'ler.
×
×
  • Yeni Oluştur...