-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHarfSay.java
More file actions
129 lines (92 loc) · 4.3 KB
/
HarfSay.java
File metadata and controls
129 lines (92 loc) · 4.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
Ferhat hocamın ders içi örneklerinden biri ama tabiki de kendim eklediğim bazı detaylar var (Alfabetik sıralama, en fazla harfi bulma).
kendimi denemek için yaptığım algoritmalardan.
*/
public class HarfSay {
char[] harfler = harfOlustur();
int[] harfSayisi = kacTaneVar();
public static void main(String[] args) {
HarfSay app = new HarfSay();
app.alfabetikSirala();
app.harfleriGoster();
System.out.println();
app.kacTaneVarYazdir();
app.enFazlayiYaz();
}
static char[] harfOlustur() {
char[] harfler = new char[100]; // 100 eleman için yer açıyor heapte ve değer atamadığımız için null atanıyor
for (int i = 0; i < harfler.length; i++) {
harfler[i] = (char) (Math.random() * 26 + 'a'); // a'dan z'ye kadar rastgele harf üretiyor
}
return harfler;
}
void harfleriGoster() {
for (int i = 0; i < harfler.length; i++) {
if ((i + 1) % 20 == 0) { // güzel gözükmesi için 20 tane harf yazınca alt satıra geçiyor
System.out.println(harfler[i]);
} else {
System.out.print(harfler[i] + " ");
}
}
}
int[] kacTaneVar() {
int[] sayac = new int[26];
for (int i = 0; i < harfler.length; i++) {
sayac[harfler[i] - 'a']++; // harflerin[i]'ninci değerinin sayac'ın o indexteki değeri 1 arttıracak
}
return sayac;
}
void kacTaneVarYazdir() {
char harf;
for (int i = 0; i < harfSayisi.length; i++) {
harf = (char) (i + 'a'); // i'nin o anda hangi harf üzerinde işlem yaptığını gösteriyoruz
if ((i + 1) % 13 == 0) { // güzel gözükmesi için 13 harfte bir satır aşşağı in
System.out.println(harfSayisi[i] + " Adet: " + harf);
} else {
System.out.print(harfSayisi[i] + " Adet: " + harf + ", ");
}
}
}
void alfabetikSirala() {
char temp = 'a';
for (int i = 0; i < harfler.length - 1; i++) { // Dış döngü bütün elemanları kapsıyor
for (int j = 0; j < harfler.length - 1; j++) { // iç döngü tek bi elemanı hepsiyle kıyaslıyor. Dış döngü
// olmasa sadece en büyüğü en sona atardık
if (harfler[j] > harfler[j + 1]) { // yanındakinden daha büyükse yanındakiyle yer değiştiriyor
temp = harfler[j];
harfler[j] = harfler[j + 1];
harfler[j + 1] = temp;
}
}
}
}
kutu enFazlayiBul() {
kutu kutu = new kutu(); // 2 tane değişkeni döndürmemiz gerekeceğinden bir kutu yaratıp onun içine
// doldurayim diye düşündüm.
int enFazla = harfSayisi[0]; // en fazlayı ilk eleman varsaydım
int enFazlaIndex = 0, temp = 0; // temp zaten yer değiştirirken kullanıyoruz. index ise hangi harf olduğunu
// anlamamıza yardımcı olacak
for (int i = 0; i < harfSayisi.length - 1; i++) {
if (harfSayisi[i + 1] > enFazla) { // şuanki en fazlamızdan daha fazla olan bir harf varsa yer değiştirme
// işlemi yapıyoruz
temp = enFazla;
enFazla = harfSayisi[i + 1];
harfSayisi[i + 1] = temp;
enFazlaIndex = i + 1; // indexini almayı unutmuyoruz
}
}
kutu.enFazla = enFazla; // oluşturduğumuz kutuya değerleri atadık
kutu.enFazlaIndex = enFazlaIndex; // oluşturduğumuz kutuya değerleri atadık
return kutu;
}
void enFazlayiYaz() {
kutu kutu = enFazlayiBul(); // değerleri almamız için yine nesne oluşturduk
System.out.println(kutu.enFazla + " Tane: " + (char) (kutu.enFazlaIndex + 'a')); // aldığımız index sayesinde
// hangi harf olduğunu
// buluyoruz
}
}
class kutu { // boş kutu değerleri geçirmek için
int enFazla;
int enFazlaIndex;
}