Sprawdź się
Napisz program, który zakoduje dowolne słowo (bez polskich znaków) za pomocą kodu Morse'a. Użyj do tego znaków - oraz •. Każdy zakodowany znak (literę) oddziel spacją. Przetestuj działanie programu dla słowa INFORMATYKA.
Specyfikacja:
Dane:
slowo – łańcuch znaków; słowo do zakodowania
Wynik:
Na standardowym wyjściu program prezentuje zakodowane przy pomocy kodu Morse'a słowo
Wskazówka:
Znak • w edytorze kodu uzyskasz za pomocą kombinacji klawiszy alt+8. Odpowiedni znak możesz skopiować z rozwiązania.
Przykład:
Poprawnie zakodowane słowo „PROGRAM”: •--• •-• --- --• •-• •- --
Przykładowe rozwiązanie zadania:
public class MorseCode {
static String zakodujMorsem(String ciagZnakow) {
String zakodowane = "";
for (int i = 0; i < ciagZnakow.length(); i++) {
char znak = ciagZnakow.charAt(i);
switch (znak) {
case 'A':
zakodowane += "•-";
break;
case 'B':
zakodowane += "-•••";
break;
case 'C':
zakodowane += "-•-•";
break;
case 'D':
zakodowane += "-••";
break;
case 'E':
zakodowane += "•";
break;
case 'F':
zakodowane += "••-•";
break;
case 'G':
zakodowane += "--•";
break;
case 'H':
zakodowane += "••••";
break;
case 'I':
zakodowane += "••";
break;
case 'J':
zakodowane += "•---";
break;
case 'K':
zakodowane += "-•-";
break;
case 'L':
zakodowane += "•-••";
break;
case 'M':
zakodowane += "--";
break;
case 'N':
zakodowane += "-•";
break;
case 'O':
zakodowane += "---";
break;
case 'P':
zakodowane += "•--•";
break;
case 'Q':
zakodowane += "--•-";
break;
case 'R':
zakodowane += "•-•";
break;
case 'S':
zakodowane += "•••";
break;
case 'T':
zakodowane += "-";
break;
case 'U':
zakodowane += "••-";
break;
case 'V':
zakodowane += "•••-";
break;
case 'W':
zakodowane += "•--";
break;
case 'X':
zakodowane += "-••-";
break;
case 'Y':
zakodowane += "-•--";
break;
case 'Z':
zakodowane += "--••";
break;
}
zakodowane += " ";
}
return zakodowane;
}
public static void main(String[] args) {
System.out.println(zakodujMorsem("INFORMATYKA"));
}
}Napisz program, który odkoduje dowolne słowo (zapisane bez znaków diakrytycznych) zakodowane za pomocą kodu Morse'a.
Przetestuj działanie programu dla następującego słowa zapisanego za pomocą alfabetu Morse'a:
--• •-• •- - ••- •-•• •- -•-• •– •Specyfikacja:
Dane:
zakodowane – łańcuch znaków; napis składający się z kropek i kresek do odkodowania
Wynik:
Na standardowym wyjściu program prezentuje odkodowane z kodu Morse'a słowo.
Przykładowe rozwiązanie zadania:
public class MorseCode {
static String odkodujMorsa(String ciagZnakow) {
String zakodowane = "";
String podciag = "";
for (int i = 0; i < ciagZnakow.length() - 1; i++) {
podciag += ciagZnakow.charAt(i);
if (ciagZnakow.charAt(i+1) == ' ') {
switch (podciag) {
case "•-":
zakodowane += "A";
break;
case "-•••":
zakodowane += "B";
break;
case "-•-•":
zakodowane += "C";
break;
case "-••":
zakodowane += "D";
break;
case "•":
zakodowane += "E";
break;
case "••-•":
zakodowane += "F";
break;
case "--•":
zakodowane += "G";
break;
case "••••":
zakodowane += "H";
break;
case "••":
zakodowane += "I";
break;
case "•---":
zakodowane += "J";
break;
case "-•-":
zakodowane += "K";
break;
case "•-••":
zakodowane += "L";
break;
case "--":
zakodowane += "M";
break;
case "-•":
zakodowane += "N";
break;
case "---":
zakodowane += "O";
break;
case "•--•":
zakodowane += "P";
break;
case "--•-":
zakodowane += "Q";
break;
case "•-•":
zakodowane += "R";
break;
case "•••":
zakodowane += "S";
break;
case "-":
zakodowane += "T";
break;
case "••-":
zakodowane += "U";
break;
case "•••-":
zakodowane += "V";
break;
case "•--":
zakodowane += "W";
break;
case "-••-":
zakodowane += "X";
break;
case "-•--":
zakodowane += "Y";
break;
case "--••":
zakodowane += "Z";
break;
}
i++;
podciag = "";
}
}
return zakodowane;
}
public static void main(String[] args) {
System.out.println(odkodujMorsa("--• •-• •- - ••- •-•• •- -•-• •--- • "));
}
}Na podstawie kodu z poprzedniego zadania, napisz program, który odkoduje dowolne zdanie (bez polskich znaków) za pomocą systemu Morse'a. Słowa w zakodowanym ciągu znaków oddziela znak | (jest to odpowiednik spacji). Program ma odkodować przedstawiony ciąg znaków i wypisać wynik odkodowania, którym jest całe zdanie.
Przetestuj działanie programu dla następującego zdania zapisanego za pomocą alfabetu Morse'a:
•• -• ••-• – •-• -- •- - -•-- -•- •- | •– • ••• - | ••• ••- •--• • •-•Specyfikacja:
Dane:
zakodowane – łańcuch znaków; zdanie zakodowane przy pomocy kodu Morse'a, do odkodowania
Wynik:
Na standardowym wyjściu program prezentuje odkodowane z kodu Morse'a zdanie.
Przykładowe rozwiązanie zadania:
public class MorseCode {
static String odkodujMorsa(String ciagZnakow) {
String zakodowane = "";
String podciag = "";
for (int i = 0; i < ciagZnakow.length() - 1; i++) {
podciag += ciagZnakow.charAt(i);
if (ciagZnakow.charAt(i+1) == ' ' && ciagZnakow.charAt(i) != '|') {
switch (podciag) {
case "•-":
zakodowane += "A";
break;
case "-•••":
zakodowane += "B";
break;
case "-•-•":
zakodowane += "C";
break;
case "-••":
zakodowane += "D";
break;
case "•":
zakodowane += "E";
break;
case "••-•":
zakodowane += "F";
break;
case "--•":
zakodowane += "G";
break;
case "••••":
zakodowane += "H";
break;
case "••":
zakodowane += "I";
break;
case "•---":
zakodowane += "J";
break;
case "-•-":
zakodowane += "K";
break;
case "•-••":
zakodowane += "L";
break;
case "--":
zakodowane += "M";
break;
case "-•":
zakodowane += "N";
break;
case "---":
zakodowane += "O";
break;
case "•--•":
zakodowane += "P";
break;
case "--•-":
zakodowane += "Q";
break;
case "•-•":
zakodowane += "R";
break;
case "•••":
zakodowane += "S";
break;
case "-":
zakodowane += "T";
break;
case "••-":
zakodowane += "U";
break;
case "•••-":
zakodowane += "V";
break;
case "•--":
zakodowane += "W";
break;
case "-••-":
zakodowane += "X";
break;
case "-•--":
zakodowane += "Y";
break;
case "--••":
zakodowane += "Z";
break;
}
i++;
podciag = "";
} else if (ciagZnakow.charAt(i) == '|') {
zakodowane += " ";
podciag = "";
i++;
}
}
return zakodowane;
}
public static void main(String[] args) {
System.out.println(odkodujMorsa("•• -• ••-• --- •-• -- •- - -•-- -•- •- | •--- • ••• - | ••• ••- •--• • •-• "));
}
}