Sprawdź się
Napisz program zliczający wystąpienia każdego znaku znajdującego się w łańcuchu znaków wiadomosc
. Program powinien wypisywać wyniki zgodnie z następującym schematem:
Znak:Liczba wystąpień znaku
Znaki powinny być wypisane w kolejności rosnącej według ich kodowania w języku Java. Na przykład znak A
powinien zostać wypisany przed znakiem B
. Nie powinny zostać wypisane znaki, które nie były zawarte w łańcuchu znaków wiadomosc
.
Przetestuj swój program dla podanego ciągu znaków:
wiadomosc = "AAAA121345122 - Zlicz mnie"
Dla przedstawionych danych program powinien wypisać:
:3
-:1
1:3
2:3
3:1
4:1
5:1
A:4
Z:1
c:1
e:1
i:2
l:1
m:1
n:1
z:1
Specyfikacja:
Dane:
wiadomosc
– łańcuch znaków, w którym należy zliczyć wystąpienia poszczególnych znaków
Wynik:
(char) (i + min) + ":" + zliczoneWystapienia[i]
– wyniki zliczenia zgodnie ze schematem:Znak:LiczbaWystapien
public class Main {
public static char znajdzMax(String wiadomosc) {
char maxLiczba = Character.MIN_VALUE; // stała oznaczająca minimalną > wartość jaką może mieć char
for (int i = 0; i < wiadomosc.length(); i++) {
if (maxLiczba < wiadomosc.charAt(i))
maxLiczba = wiadomosc.charAt(i);
}
return maxLiczba;
}
public static char znajdzMin(String wiadomosc) {
char minLiczba = Character.MAX_VALUE; // stała oznaczająca maksymalną wartość jaką może mieć char
for (int i = 0; i < wiadomosc.length(); i++) {
if (minLiczba > wiadomosc.charAt(i))
minLiczba = wiadomosc.charAt(i);
}
return minLiczba;
}
public static int[] zlicz(String wiadomosc) {
int[] tabZliczajaca;
char min = znajdzMin(wiadomosc);
char max = znajdzMax(wiadomosc);
tabZliczajaca = new int[max - min + 1];
for (int i = 0; i < wiadomosc.length(); i++) {
tabZliczajaca[wiadomosc.charAt(i) - min]++;
}
return tabZliczajaca;
}
public static void main(String[] args) {
String wiadomosc = "AAAA121345122 - Zlicz mnie";
int[] zliczoneWystapienia = zlicz(wiadomosc);
int min = znajdzMin(wiadomosc);
for (int i = 0; i < zliczoneWystapienia.length; i++) {
if (zliczoneWystapienia[i] > 0) {
System.out.println((char) (i + min) + ":" + zliczoneWystapienia[i]);
}
}
}
}
Napisz program, który zakoduje łańcuch znaków wiadomosc
, korzystając z podanej książki kodowej. Program powinien wypisać zakodowaną wiadomość w postaci ciągu zer i jedynek. Swój program przetestuj dla podanego ciągu znaków:
wiadomosc = "AAABCDEFGHAABDDEFFG - Zakoduj mnie proszę"
Specyfikacja:
Dane:
wiadomosc
– łańcuch znaków do zakodowania
Wynik:
zakodowanaWiadomosc
– zakodowany łańcuch znaków
class Kod {
char kodowanyZnak;
String slowoKodowe;
Kod(char kodowanyZnak, String slowoKodowe) {
this.kodowanyZnak = kodowanyZnak;
this.slowoKodowe = slowoKodowe;
}
}
public class Main {
public static Kod[] zainicjalizujKsiazkeKodowa() {
Kod[] ksiazkaKodowa = new Kod[26];
ksiazkaKodowa[0] = new Kod(' ', "0000");
ksiazkaKodowa[1] = new Kod('H', "000100");
ksiazkaKodowa[2] = new Kod('Z', "000101");
ksiazkaKodowa[3] = new Kod('-', "000110");
ksiazkaKodowa[4] = new Kod('C', "000111");
ksiazkaKodowa[5] = new Kod('E', "00100");
ksiazkaKodowa[6] = new Kod('G', "00101");
ksiazkaKodowa[7] = new Kod('D', "0011");
ksiazkaKodowa[8] = new Kod('A', "010");
ksiazkaKodowa[9] = new Kod('F', "0110");
ksiazkaKodowa[10] = new Kod('B', "0111");
ksiazkaKodowa[11] = new Kod('s', "10000");
ksiazkaKodowa[12] = new Kod('u', "10001");
ksiazkaKodowa[13] = new Kod('p', "10010");
ksiazkaKodowa[14] = new Kod('r', "10011");
ksiazkaKodowa[15] = new Kod('o', "1010");
ksiazkaKodowa[16] = new Kod('z', "10110");
ksiazkaKodowa[17] = new Kod('ę', "10111");
ksiazkaKodowa[18] = new Kod('e', "11000");
ksiazkaKodowa[19] = new Kod('i', "11001");
ksiazkaKodowa[20] = new Kod('a', "11010");
ksiazkaKodowa[21] = new Kod('d', "11011");
ksiazkaKodowa[22] = new Kod('m', "11100");
ksiazkaKodowa[23] = new Kod('n', "11101");
ksiazkaKodowa[24] = new Kod('j', "11110");
ksiazkaKodowa[25] = new Kod('k', "11111");
return ksiazkaKodowa;
}
public static String zakoduj(String wiadomosc, Kod[] ksiazkaKodowa) {
String zakodowanaWiadomosc = "";
for (int i = 0; i < wiadomosc.length(); i++) {
int j = 0;
while (ksiazkaKodowa[j].kodowanyZnak != wiadomosc.charAt(i)) {
j++;
}
zakodowanaWiadomosc += ksiazkaKodowa[j].slowoKodowe;
}
return zakodowanaWiadomosc;
}
public static void main(String[] args) {
String wiadomosc = "AAABCDEFGHAABDDEFFG - Zakoduj mnie proszę";
Kod[] ksiazkaKodowa = zainicjalizujKsiazkeKodowa();
System.out.println(zakoduj(wiadomosc, ksiazkaKodowa));
}
}