Kod morse'a

0

Witajcie, mam do zrobienia program, który będzie pikał kodem morse'a i mam problem na samym początku. Mam plik main, którego nie wolno mi zmieniać i muszę dopisać morse.h i np morse.cpp.

int main()
{
	morse m;
	m.setFrequency(1000);
	m.setPause(100);
	m.setSpacePause(1000);
//itd 

W jaki sposób mogę zrobić to, żeby ustawiać wszystko tak jak mi każe main? Najlepiej jakbym używał windows.h i funkcji Beep(F,T);. Koledzy proszę o jakieś podpowiedzi.

0
struct morse {
    void setFrequency(int) {}
    void setPause(int) {}
    void setSpacePause(int) {}
}
0

A dlaczego stuct? Nie mogę stworzyć klasy morse i tam wszystko zrobić? Bardziej też mi chodziło jak je później powiązać, żeby to wszystko działało bo od tej strony właśnie nie wiem jak do tego podejść.

0

Łatwiej będzie jeśli poza setterami wrzucisz coś jeszcze. Ach ten poziom studentów informatyki -.-

2

Na dobrą sprawę potrzeba tylko długości czasu trwania pauzy/kropki, bo:
Kropka = czas trwania kropki
Kreska = 3czas trwania kropki
Pauza = czas trwania kropki
Pauza między słowami (spacePause) = 7
czas trwania kropki

No ale niech będzie:

struct morse {
    int frequency;
    int pause;
    int spacePause;

    int dotTime, dashTime;

    void setFrequency(int f) {
         frequency = f;
    }
    void setPause(int p) {
         pause = p;
         dotTime = pause;
         dashTime = 3*pause;
    }

    void setSpacePause(int p) {
        spacePause = p; // ale ja bym to wstawił do set pause jako spacePause = 7*pause;
    }

    void beepDot() {
        Beep(frequency, dotTime);
        Beep(0, pause);
    }

    void beepDash() {
        Beep(frequency, dashTime);
        Beep(0, pause);
    }

    void beepSpacePause() {
        Beep(0, spacePause)
    }
    
    void morseMsg(std::string msg) {
        for(int character = 0; character < msg.length(); ++character) {
            switch(character) {
                case '.' : beepDot();
                               break;
                case '-' : beepDash();
                               break;               
                case ' ' : beepSpacePause();
                               break;       
                default : break;
            }
        } 
    }
}
1

Twórca tematu przesłał mi taki oto kod:

	
int main()
{
 
    morse m;
    m.setFrequency(1000);
    m.setPause(100);
    m.setSpacePause(1000);
    m.setCharPause(200);
    m.setDotTime(200);
    m.setDashTime(400);
    m << "Ala ma kota";
    long i = 0xA5A5A5A;
    double d = 1.23456789;
    //m << i<<pause << d;
    return 0;
}

Tylko nie wiem czemu w wiadomości prywatnej a nie tu :p
Więc na początku masz settery z wartościami. Więc ustawiasz sobie to w programie.
Następnie masz przekształcić wyraz Ala ma kota więc zrób sobie tablice litera => kod morsa,
następnie podziel cały otrzymany string na pojedyńcze znaki i poleć po nich w jakiejś pętli. W pętli pobierz kod morsa dla danego znaku i znów podziel go na znaki, i zależnie od znaku odegraj dzwięk o częstotliwości i długości podanej w seterze robiąc między nimi odpowiednie przerwy. I ot masz wszystko ładnie działające :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1