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.


Odinn

Öne çıkan mesajlar

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.
Link to comment
Sosyal ağlarda paylaş

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 ?
Link to comment
Sosyal ağlarda paylaş

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.
Link to comment
Sosyal ağlarda paylaş

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
Link to comment
Sosyal ağlarda paylaş

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.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...