Sprawdź się
Poniższy program powinien dokonywać poprawnej konwersji ciągu znaków składającego się z liter alfabetu łacińskiego. Brakuje w nim jednak części kodu. Dopisz je w oznaczonych miejscach, aby program działał poprawnie.
Specyfikacja:
Dane:
slowo – łańcuch znaków przechowujący słowo do zakodowania kodem Morse'a = „MATURAZINFORMATYKI”
Wynik:
Na standardowym wyjściu program prezentuje zakodowane przy pomocy kodu Morse'a słowo „MATURAZINFORMATYKI”.
Przykładowe rozwiązanie zadania:
#include <iostream>
#include <string>
std::string zakodujCiag(std::string doZakodowania) {
std::string zakodowane = "";
for (int i = 0; i < doZakodowania.size(); i++) {
char litera = doZakodowania[i];
switch (litera) {
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;
}
int main() {
std::string slowo = "MATURAZINFORMATYKI";
std::cout << zakodujCiag(slowo) << std::endl;
return 0;
}Wykorzystaj kod programu zapisany w Ćwiczeniu 1.
Do kodu programu kodującego łańcuch znaków zapisany w alfabecie łacińskim na alfabet Morse'a dopisz funkcję, która dokona odkodowania z alfabetu Morse'a zakodowanego ciągu znaków. Przetestuj działanie programu dla łańcucha znaków MATURAZINFORMATYKI.
Specyfikacja:
Dane:
slowo – łańcuch znaków przechowujący słowo do zakodowania kodem Morse'a
Wynik:
Na standardowym wyjściu program wyświetla w pierwszej linii zakodowane słowo, a następnie odkodowane.
Przykładowe wyjście:
• •-• •-• •- •-• • •••• ••- -- •- -• ••- -- • ••• -
ERRAREHUMANUMESTPrzykładowe rozwiązanie zadania:
#include <iostream>
#include <string>
std::string zakodujCiag(std::string doZakodowania) {
std::string zakodowane = "";
for (int i = 0; i < doZakodowania.size(); i++) {
char litera = doZakodowania[i];
switch (litera) {
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;
}
std::string odkodujCiag(std::string doOdkodowania) {
std::string odkodowane = "";
std::string podciag = "";
doOdkodowania += " ";
for (int i = 0; i < doOdkodowania.length() - 1; i++) {
podciag += doOdkodowania[i];
if (doOdkodowania[i+1] == ' ') {
if (podciag == "•-") {
odkodowane += "A";
} else if (podciag == "-•••") {
odkodowane += "B";
} else if (podciag == "-•-•") {
odkodowane += "C";
} else if (podciag == "-••") {
odkodowane += "D";
} else if (podciag == "•") {
odkodowane += "E";
} else if (podciag == "••-•") {
odkodowane += "F";
} else if (podciag == "--•") {
odkodowane += "G";
} else if (podciag == "••••") {
odkodowane += "H";
} else if (podciag == "••") {
odkodowane += "I";
} else if (podciag == "•---") {
odkodowane += "J";
} else if (podciag == "-•-") {
odkodowane += "K";
} else if (podciag == "•-••") {
odkodowane += "L";
} else if (podciag == "--") {
odkodowane += "M";
} else if (podciag == "-•") {
odkodowane += "N";
} else if (podciag == "---") {
odkodowane += "O";
} else if (podciag == "•--•") {
odkodowane += "P";
} else if (podciag == "--•-") {
odkodowane += "Q";
} else if (podciag == "•-•") {
odkodowane += "R";
} else if (podciag == "•••") {
odkodowane += "S";
} else if (podciag == "-") {
odkodowane += "T";
} else if (podciag == "••-") {
odkodowane += "U";
} else if (podciag == "•••-") {
odkodowane += "V";
} else if (podciag == "•--") {
odkodowane += "W";
} else if (podciag == "-••-") {
odkodowane += "X";
} else if (podciag == "-•--") {
odkodowane += "Y";
} else if (podciag == "--••") {
odkodowane += "Z";
}
i++;
podciag = "";
}
}
return odkodowane;
}
int main() {
std::string slowo = "MATURAZINFORMATYKI";
std::cout << zakodujCiag(slowo) << std::endl;
std::cout << odkodujCiag(zakodujCiag(slowo)) << std::endl;
return 0;
}