Merhaba,
Kodda bircok yanlis bulunuyor adim adim gidelim.
Umur09 mesajlari edit leyerek devam edelim.
10 kere belirlediğimiz sayı aralığında sayı üretiyoruz. Bu 10 uretilene kadar sayi sayaclari belli olmayacagi icin asagidaki gibi bir array a daha ihtiyacin var.
int[] sayilariSay = new int[adet];
Arka arkaya 2 atama yapmissin. Ilk atamaya gerek yok. asagidaki 1. satir.
diziAdet[i] = 0;
diziAdet[i] = (int) (Math.random() * aralik +1);
Asagidaki blogu for icinden cikar.
for(int j = 0; j < diziAdet.length; j++){
if(diziAdet[i] == diziAdet[j]){
sayac++;
}
}
System.out.println("Sayı : " + diziAdet[i] + " Tekrar:" + sayac);
sayac = 0;
Asagidaki sekilde yeni olusturulan sayilarin sayisini 1 artir.
diziAdet[i] = (int) (Math.random() * aralik +1); // ornegin 5 olusturuldu.
sayilariSay[diziAdet[i]]++; // sayilarisay arrayinda 5 sayacini 1 artir.
En son olarak da ekrana basmak icin
for(int i = 0; i
System.out.println("Sayı : " +i + " Tekrar:" + sayilariSay[i]);
// ekrana bas.
}
java icin birsey diyemecegim ama C de her olusturulan array in gosterdigi pointer dan itibaren alloc edilen hafiza kadar block 0 lanmali. yukardaki sayac arrayi icin gerekli. Best practices icin her array olusturuldugunda tabiri caizse temizlenmeli eger bu tur isler icin kullanilacaksa. sayac icin gerekli ama diziadet icin gerekli degil.
Birden fazla yol bulunuyor ama en okunabilir kod olmasi acisindan bu sekilde yazdim. Umarim yardimci olur.
public static void main(String[] args) {
int adet, aralik,sayac=0;
Scanner oku = new Scanner(System.in);
System.out.println("Kaç adet sayı üretilecek?");
adet = oku.nextInt();
System.out.println("Sayı aralığı ne olacak?");
aralik = oku.nextInt();
int[] diziAdet = new int[adet];
int[] sayilariSay = new int[adet];
// buradaki sayilarisayi 0 layan for lazim
for(int i = 0; i
diziAdet[i] = (int) (Math.random() * aralik +1);
sayilariSay[diziAdet[i]]++;
}
for(int i = 0; i
System.out.println("Sayı : " +i + " Tekrar:" + sayilariSay[i]);
// ekrana bas.
}
}
Benim kodda da hata var. uretilen sayi sayisi ile ust limit esit degilmis, simdi farkettim. en iyisi 2 boyutlu array ile yapmak, 2 boyutlu array biliyor musun? veya max aralik array boyutu kadar olmali. Eger max aralik sayi arrayi kadar olacak ise, yukaradaki kod calisacaktir ama sayilariSay boyutu +1 uzun olmali.