• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spoj nie akceptuje kodu na alfabet Morse'a

Object Storage Arubacloud
0 głosów
465 wizyt
pytanie zadane 21 sierpnia 2020 w SPOJ przez magda_19 Gaduła (3,080 p.)
zmienione kategorie 21 sierpnia 2020 przez ScriptyChris

Witam, 

Rozwiązuję zadanie ze spoja o alfabecie Morse'a. Wszystko w konsoli działa, podane przypadki też, a jednak spoj nie przyjmuje. Gdzie może tkwić błąd?

 

#include <iostream>
#include <map>
#include <string>

using namespace std;


int main() {
    string napisDoZaszyfrowania;

     const int liczbaWierszy = 100;
     const int dlugoscCiagu = 1000;

    map <char, string> alfabetMorsa;

    alfabetMorsa['A']=".-/";
    alfabetMorsa['a']=".-/";
    alfabetMorsa['B']="-.../";
    alfabetMorsa['b']="-.../";
    alfabetMorsa['C']="-.-./";
    alfabetMorsa['c']="-.-/";
    alfabetMorsa['D']="-../";
    alfabetMorsa['d']="-../";
    alfabetMorsa['E']="./";
    alfabetMorsa['e']="./";
    alfabetMorsa['F']=".-../";
    alfabetMorsa['f']=".-../";
    alfabetMorsa['G']="--./";
    alfabetMorsa['g']="--./";
    alfabetMorsa['H']="..../";
    alfabetMorsa['h']="..../";
    alfabetMorsa['I']="../";
    alfabetMorsa['i']="../";
    alfabetMorsa['J']=".---/";
    alfabetMorsa['j']=".---/";
    alfabetMorsa['K']="-.-/";
    alfabetMorsa['k']="-.-/";
    alfabetMorsa['L']="..-./";
    alfabetMorsa['l']="..-./";
    alfabetMorsa['M']="--/";
    alfabetMorsa['m']="--/";
    alfabetMorsa['N']="-./";
    alfabetMorsa['n']="-./";
    alfabetMorsa['O']="---/";
    alfabetMorsa['o']="---/";
    alfabetMorsa['P']=".--./";
    alfabetMorsa['p']=".--./";
    alfabetMorsa['Q']="--.-/";
    alfabetMorsa['q']="--.-/";
    alfabetMorsa['R']=".-./";
    alfabetMorsa['r']=".-./";
    alfabetMorsa['S']=".../";
    alfabetMorsa['s']=".../";
    alfabetMorsa['T']="-/";
    alfabetMorsa['t']="-/";
    alfabetMorsa['U']="..-/";
    alfabetMorsa['u']="..-/";
    alfabetMorsa['V']="...-/";
    alfabetMorsa['v']="...-/";
    alfabetMorsa['W']=".--/";
    alfabetMorsa['w']=".--/";
    alfabetMorsa['X']="-..-/";
    alfabetMorsa['x']="-..-/";
    alfabetMorsa['Y']="-.--/";
    alfabetMorsa['y']="-.--/";
    alfabetMorsa['Z']="--../";
    alfabetMorsa['z']="--../";
    alfabetMorsa[' ']="/";

    for (int i = 0; i < liczbaWierszy; i++) {
        getline(cin, napisDoZaszyfrowania);
        for (int j = 0; (j < napisDoZaszyfrowania.length()) && (j <= dlugoscCiagu); j++)  {
            map <char, string> :: iterator itr = alfabetMorsa.find(napisDoZaszyfrowania[j]);

            if (itr!= alfabetMorsa.end()) {
                cout << itr->second;
            }

        }
        cout << "\n";
    }
    return 0;

}

 

komentarz 21 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Przeczytaj jeszcze raz informację co do ilości danych. "(nie więcej niż 100)(...)", a nie "równo" i tak samo z długością.
komentarz 21 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)

Dzieki za odpowiedź.

Zmieniłam to na coś takiego: 

     int liczbaWierszy = 100;
      int dlugoscCiagu = 1000;

...


for (int i = 0; i < liczbaWierszy; i++) {
        getline(cin, napisDoZaszyfrowania);
        for (int j = 0; (j < napisDoZaszyfrowania.length()) && (j < dlugoscCiagu); j++)

i nadal nie działa

komentarz 21 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Nie to miałem na myśli. Usunięcie const nic nie da. Musisz wczytać te dane.
komentarz 21 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)
Co masz na myśli? Przecież wczytuję te dane getline'm...
komentarz 21 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Ale nie ilość danych.
komentarz 21 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)
Jak wczytać ilość danych skoro ich liczba jest ustalona z góry? Użyć jeszcze jednej pętli?
komentarz 21 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)

Z góry masz podaną ilość wyrazów oddzielonych enterem. Więc pierwsza pętla jest zbędna, bo nie wiesz ile ich jest, a Ty zakładasz, że sto. 

https://forum.pasja-informatyki.pl/385268/c-alfabet-morsea

komentarz 21 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)
Więc ilość danych to nie to samo, co ilość wyrazów? Jakie dane masz na myśli?
komentarz 21 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
#include <iostream>
#include <map>
#include <string>
 
using namespace std;
 
 
int main() {
    string napisDoZaszyfrowania;
 

     const int dlugoscCiagu = 1000;
 
    map <char, string> alfabetMorsa;
 
    alfabetMorsa['A']=".-/";
    alfabetMorsa['a']=".-/";
    alfabetMorsa['B']="-.../";
    alfabetMorsa['b']="-.../";
    alfabetMorsa['C']="-.-./";
    alfabetMorsa['c']="-.-/";
    alfabetMorsa['D']="-../";
    alfabetMorsa['d']="-../";
    alfabetMorsa['E']="./";
    alfabetMorsa['e']="./";
    alfabetMorsa['F']=".-../";
    alfabetMorsa['f']=".-../";
    alfabetMorsa['G']="--./";
    alfabetMorsa['g']="--./";
    alfabetMorsa['H']="..../";
    alfabetMorsa['h']="..../";
    alfabetMorsa['I']="../";
    alfabetMorsa['i']="../";
    alfabetMorsa['J']=".---/";
    alfabetMorsa['j']=".---/";
    alfabetMorsa['K']="-.-/";
    alfabetMorsa['k']="-.-/";
    alfabetMorsa['L']="..-./";
    alfabetMorsa['l']="..-./";
    alfabetMorsa['M']="--/";
    alfabetMorsa['m']="--/";
    alfabetMorsa['N']="-./";
    alfabetMorsa['n']="-./";
    alfabetMorsa['O']="---/";
    alfabetMorsa['o']="---/";
    alfabetMorsa['P']=".--./";
    alfabetMorsa['p']=".--./";
    alfabetMorsa['Q']="--.-/";
    alfabetMorsa['q']="--.-/";
    alfabetMorsa['R']=".-./";
    alfabetMorsa['r']=".-./";
    alfabetMorsa['S']=".../";
    alfabetMorsa['s']=".../";
    alfabetMorsa['T']="-/";
    alfabetMorsa['t']="-/";
    alfabetMorsa['U']="..-/";
    alfabetMorsa['u']="..-/";
    alfabetMorsa['V']="...-/";
    alfabetMorsa['v']="...-/";
    alfabetMorsa['W']=".--/";
    alfabetMorsa['w']=".--/";
    alfabetMorsa['X']="-..-/";
    alfabetMorsa['x']="-..-/";
    alfabetMorsa['Y']="-.--/";
    alfabetMorsa['y']="-.--/";
    alfabetMorsa['Z']="--../";
    alfabetMorsa['z']="--../";
    alfabetMorsa[' ']="/";
 
    do
    {
        getline(cin, napisDoZaszyfrowania);
        for (int j = 0; (j < napisDoZaszyfrowania.length()) && (j <= dlugoscCiagu); j++)  {
            map <char, string> :: iterator itr = alfabetMorsa.find(napisDoZaszyfrowania[j]);
 
            if (itr!= alfabetMorsa.end()) {
                cout << itr->second;
            }
        }
        cout << "\n";
    }while(napisDoZaszyfrowania.size()!=0);
    return 0;
 
}

 

komentarz 22 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)
Poprawiłam kod, ale nadal nie działa. Jesteś pewien, że pętla do ... while jest właściwa?
komentarz 22 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Nie. Nie mam spoja by sprawdzać swoje rozwiązania, więc wszystko to moje strzały, które wpasowują mi się w opis.
komentarz 22 sierpnia 2020 przez magda_19 Gaduła (3,080 p.)
Spoko, i tak dużo mi pomogłeś.
komentarz 22 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Masz błędy w mapie. Spójrz na 'C' i 'c'.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
2 odpowiedzi 4,152 wizyt
pytanie zadane 9 października 2018 w C i C++ przez lucelka Początkujący (260 p.)
0 głosów
2 odpowiedzi 13,424 wizyt
0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 10 kwietnia 2021 w SPOJ przez AizoOz Początkujący (490 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...