Ödev konusu şu ; Kullanıcı tarafından elemanları girilen kare matrisin yedek
köşegeninde bulunan elemanları tek boyutlu farklı bir diziye aktaran bilgisayar programını yazınız.
Elemanlar tamam sadece yedek köşegeni bulmak da sıkıntı yaşıyorum kafam zaten pek de yerinde değil ama mantık olarak şu değil mi ?
Örneğin 3X3 Matrisinden gidelim.(Biz buna NXN diyebiliriz çünkü kare matris) ( Ödevde N'i kullanıcıdan istiyoruz ve değişkendir.)
1 2 3
4 5 6
7 8 9
Şimdi burada olan Yedek köşegen matrisi 7,5 ve 3 sayıları. yani
Örnek dizi [ i ] [ j ] dersek ;
7 = dizi [0] [2]
5= dizi [1] [1]
3= dizi [2 [1]
Bu örnekten anlayacağınız üzere ilk indis artarken ikinci indis azalıyor bunu nasıl for döngüsuyle tam kullanırız ?Şöyle yaptım olmadı ;
for (i=0;i<N;i++){
for(j=N:j>=0:j--){ <<-------- burada problem yaşıyorum göründüğü üzere i Artarken j 'nin azalması gerekiyor farklı kombinasyonlar denemedim ama tam yapamadım.
Syso(dizi ekrana yazdırma işte) }
}
Edit kafam ve biraz zaman olsa halledebilirim ama şuan sıkıştım biraz.
Arkadaşlar Hızlısından Java Bilen Biri Yardımcı Olabilir Mi ( Maks. 1.5 Saat var)
8
●509
- 01-01-2020, 22:56:13j=N dediğiniz için sıkıntı yaşıyor olabilirsiniz hocam, çünkü index sıfırdan başladığı için max index N-1 olur.. orayı j=N-1 şeklinde düzeltseniz çalışır bence, çünkü algoritma genel olarak doğru duruyor.. Olmazsa tam kodu bir kod paylaşım yüklerseniz inceleyebilirim..
- 01-01-2020, 23:22:17Hata tam nerede kavrayamadım ama orası N olmalı çünkü örnekte verdiğim gibi J en yüksekten başlamalı. Bu da değişken. Nasıl i=0; i<N diyoruz yani N'e eşit değil N'den küçük demek zaten bu.impROS01 adlı üyeden alıntı: mesajı görüntüle
N En yüksek sınır diyelim i 0'dan başlar ve artar sıkıntı yok ama yedek köşegen bulurken J Sınırdan yani en sondan başlamalı. - 01-01-2020, 23:52:11galiba soruna çok odaklandığınız için çok ufak bir noktayı kaçırıyorsunuz.. for döngüsünde ilk değer başlangıç değeridir.. o yüzden i=0;i<N dediğiniz zaman 0 da başlar ve N-1 e kadar(N-1) dahil devam eder(Bunda sorun yok).. Ama j=N dediğiniz zaman döngü direkt N den başlar ve out of index hatası alırsınız.. Çünkü kodunuz 3x3 elemanlı bir dizi için şöyle işler sout([0][3]) => out of index hatası .. Çünkü dizinin 3 indexinde hiçbir eleman olmadığı için de 3 "indexli" elamanı bulamaz..
- 01-01-2020, 23:53:04Buldum hocam teşekkürler.impROS01 adlı üyeden alıntı: mesajı görüntüle
- 02-01-2020, 02:14:38Hocam sonradan azaltarak yaptım. Şöyle düşününimpROS01 adlı üyeden alıntı: mesajı görüntüle
for(satir=0;satir<N;satir++) {
dizi[satir]=matris[i][j];
j=j-1;
i=i+1;
}
böyle de ekrana verebilirsiniz.
for(satir=0;satir<N;satir++)
System.out.print(dizi[satir]+" "); - 02-01-2020, 02:39:37j yi int olarak tanımlarken değer vermeniz gerekecek.impROS01 adlı üyeden alıntı: mesajı görüntüle
int i,j=0 ; gibi
Teşekkürler