Marynarzowi udało się zakodować słowa, ale ma problem z ich przesyłaniem. Nie potrafi pisać dynamicznie w nowy sposób. Dlatego też potrzebuje programu, który opierając się na podanych mu wstępnie słowach kodowych, będzie samodzielnie wysyłał odpowiednie sygnały świetlne.
Uwaga! W zdaniach występują spacje, ale nie występują wielkie litery ani znaki interpunkcyjne. Wiadomości składają się ze znaków alfabetu łacińskiego, zatem nie zawierają polskich znaków.
Pomiń kodowanie spacji w zdaniu.
Do oceny oddajesz:
plik wyniki_3.txt zawierający odpowiedź (zdania z pliku zdania.txt zaszyfrowane za pomocą słów kodowych z pliku listaSlow.txt; zaszyfrowane zdania powinny być zapisane w kolejnych liniach),
plik(i) z komputerową realizacją zadania (kodem programu).
W załączonym pliku listaSlow.txt znajduje się 27 wierszy. Każdy wiersz zawiera po jednym słowie kodowym, kolejność słów kodowych w pliku odpowiada kolejności liter w alfabecie (małe litery używane w kodzie ASCII, po kodzie znaku „z” znajduje się kod spacji). Maksymalna długość słowa kodowego w pliku wynosi 7 znaków.
Ważne!
Wzorując się na konwencji przyjętej w poprzedniej sekcji, zakładamy, że przy kodowaniu za pomocą algorytmu Huffmana znak „_” w kodzie oznacza przejście do prawego potomka rozważanego obecnie węzła (o ile węzeł nie jest liściem).
Rozwiąż zadanie dla danych wejściowych zawartych w załącznikach. Wykorzystaj w tym celu jeden z języków programowania: C++, Java lub Python. Odpowiedź do zadania znajdziesz w pliku wynik_4.txt, pod sekcją ćwiczeń.
Przetestuj działanie programu dla następujących danych:
Linia 1. cudzysłów baza zblizamy sie do portu docelowego cudzysłów.
"baza zblizamy sie do portu docelowego"
11
Pokaż ćwiczenia:
21
Ćwiczenie 1
RXzlnVu09UgoT
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Przykładowe rozwiązanie zadania:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. string zakodujLitere otwórz nawias okrągły int litera przecinek string listaSlow otwórz nawias kwadratowy zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 6. otwórz nawias klamrowy.
Linia 7. if otwórz nawias okrągły litera otwórz nawias ostrokątny 0 zamknij nawias okrągły.
Linia 8. otwórz nawias klamrowy.
Linia 9. return listaSlow otwórz nawias kwadratowy 26 zamknij nawias kwadratowy średnik.
Linia 10. zamknij nawias klamrowy.
Linia 11. else.
Linia 12. otwórz nawias klamrowy.
Linia 13. return listaSlow otwórz nawias kwadratowy litera zamknij nawias kwadratowy średnik.
Linia 14. zamknij nawias klamrowy.
Linia 15. zamknij nawias klamrowy.
Linia 17. int main otwórz nawias okrągły zamknij nawias okrągły.
Linia 18. otwórz nawias klamrowy.
Linia 19. int n znak równości 27 średnik.
Linia 20. string listaSlow otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy cudzysłów podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka podkreślnik cudzysłów zamknij nawias klamrowy średnik.
Linia 21. string tekst znak równości cudzysłów baza zblizamy sie do portu docelowego cudzysłów średnik.
Linia 22. int dlugosc znak równości tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 24. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny dlugosc średnik i plus plus zamknij nawias okrągły.
Linia 25. otwórz nawias klamrowy.
Linia 26. cout otwórz nawias ostrokątny otwórz nawias ostrokątny zakodujLitere otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus apostrof a apostrof przecinek listaSlow zamknij nawias okrągły średnik.
Linia 27. zamknij nawias klamrowy.
Linia 29. return 0 średnik.
Linia 30. zamknij nawias klamrowy.
#include <iostream>
using namespace std;
string zakodujLitere(int litera, string listaSlow[])
{
if (litera < 0)
{
return listaSlow[26];
}
else
{
return listaSlow[litera];
}
}
int main()
{
int n = 27;
string listaSlow[] = { "___",".__...","._.._",".__._","..._","__._.__",".__.._","._____","....","__.._",".___.","__...","_..._","_._.","._._","_....","__._..","..___","..__.","._...","__.__",".____.",".._..","__._._.",".._._","_.__", "_.._" };
string tekst = "baza zblizamy sie do portu docelowego";
int dlugosc = tekst.length();
for (int i = 0; i < dlugosc; i++)
{
cout << zakodujLitere(tekst[i] - 'a', listaSlow);
}
return 0;
}
21
Ćwiczenie 2
RHWxAUCP1YznZ
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Przykładowe rozwiązanie zadania:
Linia 1. public class Main otwórz nawias klamrowy.
Linia 3. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. int n znak równości 27 średnik.
Linia 5. String listaSlow otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy cudzysłów podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka podkreślnik cudzysłów zamknij nawias klamrowy średnik.
Linia 6. String tekst znak równości cudzysłów baza zblizamy sie do portu docelowego cudzysłów średnik.
Linia 7. int dlugosc znak równości tekst kropka length otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 9. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny dlugosc średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. System kropka out kropka print otwórz nawias okrągły zakodujLitere otwórz nawias okrągły tekst kropka charAt otwórz nawias okrągły i zamknij nawias okrągły minus apostrof a apostrof przecinek listaSlow zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. zamknij nawias klamrowy.
Linia 14. static String zakodujLitere otwórz nawias okrągły int litera przecinek String otwórz nawias kwadratowy zamknij nawias kwadratowy listaSlow zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. if otwórz nawias okrągły litera otwórz nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. return listaSlow otwórz nawias kwadratowy 26 zamknij nawias kwadratowy średnik.
Linia 17. zamknij nawias klamrowy else.
Linia 18. return listaSlow otwórz nawias kwadratowy litera zamknij nawias kwadratowy średnik.
Linia 19. zamknij nawias klamrowy.
Linia 20. zamknij nawias klamrowy.
public class Main {
public static void main(String[] args) {
int n = 27;
String listaSlow[] = {"___",".__...","._.._",".__._","..._","__._.__",".__.._","._____","....","__.._",".___.","__...","_..._","_._.","._._","_....","__._..","..___","..__.","._...","__.__",".____.",".._..","__._._.",".._._","_.__", "_.._"};
String tekst = "baza zblizamy sie do portu docelowego";
int dlugosc = tekst.length();
for(int i = 0; i<dlugosc; i++){
System.out.print(zakodujLitere(tekst.charAt(i) - 'a', listaSlow));
}
}
static String zakodujLitere(int litera, String[] listaSlow) {
if(litera < 0){
return listaSlow[26];
} else
return listaSlow[litera];
}
}
31
Ćwiczenie 3
RI6NYLru9SUo6
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Przykładowe rozwiązanie zadania:
Linia 1. def zakodujLitere otwórz nawias okrągły litera przecinek listaSlow zamknij nawias okrągły dwukropek.
Linia 2. if litera otwórz nawias ostrokątny 0 dwukropek.
Linia 3. return listaSlow otwórz nawias kwadratowy 26 zamknij nawias kwadratowy.
Linia 4. else dwukropek.
Linia 5. return listaSlow otwórz nawias kwadratowy litera zamknij nawias kwadratowy.
Linia 7. n znak równości 27.
Linia 8. listaSlow znak równości otwórz nawias kwadratowy cudzysłów podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka kropka podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka podkreślnik kropka kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów kropka podkreślnik podkreślnik podkreślnik podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka kropka cudzysłów przecinek cudzysłów podkreślnik podkreślnik kropka podkreślnik kropka podkreślnik kropka cudzysłów przecinek cudzysłów kropka kropka podkreślnik kropka podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka podkreślnik podkreślnik cudzysłów przecinek cudzysłów podkreślnik kropka kropka podkreślnik cudzysłów zamknij nawias kwadratowy.
Linia 9. tekst znak równości cudzysłów baza zblizamy sie do portu docelowego cudzysłów.
Linia 10. m znak równości len otwórz nawias okrągły tekst zamknij nawias okrągły.
Linia 12. for x in tekst dwukropek.
Linia 13. print otwórz nawias okrągły zakodujLitere otwórz nawias okrągły ord otwórz nawias okrągły x zamknij nawias okrągły minus ord otwórz nawias okrągły apostrof a apostrof zamknij nawias okrągły przecinek listaSlow zamknij nawias okrągły przecinek end znak równości cudzysłów cudzysłów zamknij nawias okrągły.
def zakodujLitere(litera, listaSlow):
if litera<0:
return listaSlow[26]
else:
return listaSlow[litera]
n = 27
listaSlow = ["___",".__...","._.._",".__._","..._","__._.__",".__.._","._____","....","__.._",".___.","__...","_..._","_._.","._._","_....","__._..","..___","..__.","._...","__.__",".____.",".._..","__._._.",".._._","_.__", "_.._"]
tekst = "baza zblizamy sie do portu docelowego"
m = len(tekst)
for x in tekst:
print(zakodujLitere(ord(x)-ord('a'),listaSlow),end="")
Odpowiedź do zadania
W załączonym pliku wynik_4.txt znajdują się poprawne wyniki dla danych zawartych w udostępnionych plikach zdania.txt oraz listaSlow.txt:
R6NWsJFljTerW
Przycisk do pobrania TXT z poprawnymi rozwiązaniami zadań.