Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lazariev_V
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 55
1

Реализовать функцию, конвертирующую обычные буквы в буквы азбуки Морзе

06.10.2016, 02:34. Просмотров 222. Ответов 1
Метки нет (Все метки)

Доброго времени суток,у меня задача написать программу,которая будет конвертировать буквы в буквы азбуки Морзе,все получилось,но вот в чем беда,нужно чтобы выдавало звук точки и тире,я прописал в каждом else if звуки,но из-за этого код выглядит сильно громоздким , я подумал сделать функцию , для звуков,но она не правильно работает,почему-то выводит только звуки " - " ,вот с какой проблемой я столкнулся,прошу объяснить мою ошибку.
Спасибо заранее



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
class morse
{
private:
    char *latinPhrase;
 
public:
    morse();
    morse(int size);
    morse(const char *morseConvert);
    ~morse();
    int length();
    friend ostream & operator<<(ostream &os, morse &m);
    friend istream & operator>>(istream &is, morse &m);
    void convertToMorse();
    void sound();
    char& operator[](int index);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
#include "stdafx.h"
#include "morse.h"
 
 
morse::morse()
{
    latinPhrase = nullptr;
}
 
int morse::length()
{
    return strlen(latinPhrase);
}
morse::morse(int size)
{
    this->latinPhrase = new char[size];
    latinPhrase[0] = 0;
}
 
morse::morse(const char * morseConvert)
{
    int size = strlen(morseConvert);
    this->latinPhrase = new char[size + 1];
    strcpy(this->latinPhrase, morseConvert);
}
morse::~morse()
{
    if (latinPhrase != nullptr)
    {
        delete[]latinPhrase;
    }
}
[CPP]void morse::convertToMorse()
{
    for (int  i = 0; i < length(); i++)
    {
                if (toupper(latinPhrase[i]) == 'A')
        {
            cout << ".-" << endl;
            /*Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'B')
        {
            cout << "-..." << endl;
        /*  Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'C')
        {
            cout << "-.-." << endl;
            /*Beep(600, 800);
            Beep(600, 400);
            Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'D')
        {
            cout << "-.." << endl;
            /*Beep(600, 800);
            Beep(600, 400);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'E' )
        {
            cout << "." << endl;
        /*  Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'F' )
        {
            cout << "..-." << endl;
            /*Beep(600, 400);
            Beep(600, 400);
            Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'G' )
        {
            cout << "--." << endl;
            /*Beep(600, 800);
            Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'H' )
        {
            cout << "...." << endl;
            /*Beep(600, 400);
            Beep(600, 400);
            Beep(600, 400);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'I' )
        {
            cout << ".." << endl;
            /*Beep(600, 400);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'J' )
        {
            cout << ".---" << endl;
        /*  Beep(600, 400);
            Beep(600, 800);
            Beep(600, 800);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'K' )
        {
            cout << "-.-" << endl;
        /*  Beep(600, 800);
            Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'L' )
        {
            cout << ".-.." << endl;
            /*Beep(600, 400);
            Beep(600, 800);
            Beep(600, 400);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'M' )
        {
            cout << "--" << endl;
            /*Beep(600, 800);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'N' )
        {
            cout << "-." << endl;
            /*Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'O' )
        {
            cout << "---" << endl;
            /*Beep(600, 800);
            Beep(600, 800);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'P' )
        {
            cout << ".--." << endl;
        /*  Beep(600, 400);
            Beep(600, 800);
            Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'Q' )
        {
            cout << "--.-" << endl;
        /*  Beep(600, 800);
            Beep(600, 800);
            Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'R' )
        {
            cout << ".-." << endl;
        /*  Beep(600, 400);
            Beep(600, 800);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'S' )
        {
            cout << "..." << endl;
            /*Beep(600, 400);
            Beep(600, 400);
            Beep(600, 400);*/
        }
        else if (toupper(latinPhrase[i]) == 'T' )
        {
            cout << "-" << endl;
        /*  Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'U' )
        {
            cout << "..-" << endl;
            /*Beep(600, 400);
            Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'V' )
        {
            cout << "...-" << endl;
            /*Beep(600, 400);
            Beep(600, 400);
            Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'W' )
        {
            cout << ".--" << endl;
        /*  Beep(600, 400);
            Beep(600, 800);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'X' )
        {
            cout << "-..-" << endl;
        /*  Beep(600, 800);
            Beep(600, 400);
            Beep(600, 400);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'Y' )
        {
            cout << "-.--" << endl;
            /*Beep(600, 800);
            Beep(600, 400);
            Beep(600, 800);
            Beep(600, 800);*/
        }
        else if (toupper(latinPhrase[i]) == 'Z')
        {
            cout << "--.." << endl;
            /*Beep(600, 800);
            Beep(600, 800);
            Beep(600, 400);
            Beep(600, 400);*/
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Функция в которая озвучивает азбуку морзе
void morse::sound()
{
    for (char i = 0; i < length(); i++)
    {
        if (latinPhrase[i] == '.')
        {
            Beep(600, 400);
        }
        else  
        {
            Beep(600, 800);
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char& morse::operator[](int index)
{
    return latinPhrase[index];
}
ostream & operator<<(ostream &  os, morse & m)
{
    os << m.latinPhrase << endl;
    return os;
}
istream & operator>>(istream & is, morse & m)
{
    for (int i = 0; i < m.length(); i++)
    {
        is >> m[i];
    }
    return is;
}
[/CPP]

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
 
 
int main()
{
    morse m1,m("HELLO");
    cout << m;
    m.convertToMorse();
    m.sound();
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2016, 02:34
Ответы с готовыми решениями:

Реализовать функцию смены регистра заданной буквы
Заменить все буквы &quot;o&quot; на &quot;O&quot;. нужно реализовать с помощью отдельной...

Кодовое дерево азбуки Морзе. Кодирование
Есть описанный класс Stack, элементами которого являются узлы бинарного дерева....

Морзянка. Вводимый с клавиатуры текст перевести в последовательность точек и тире с помощью азбуки Морзе.
Народ, помогите плз решить 2 задачки на С оч надо... 1)Морзянка. Вводимый с ...

Написать функцию конвертирующую число в строку
Написать собственные функции реализующие следующий функционал: 1.char *...

Из текста удалить все буквы в, которые стоят сразу после буквы с
Подскажите, как решить задание(текст должен вводится пользователем на русском)

1
nd2
2835 / 2403 / 1057
Регистрация: 29.01.2016
Сообщений: 8,045
06.10.2016, 03:04 2
Цитата Сообщение от Lazariev_V Посмотреть сообщение
прошу объяснить мою ошибку.
После конвертации, у тебя как было в строке "HELLO", так и осталось. Что, собственно, озвучивать?

Цитата Сообщение от Lazariev_V Посмотреть сообщение
почему-то выводит только звуки " - "
Выводит звуки не "-", а когда не ".", что не одно и то же.
Так сделай, и увидишь, что у тебя там ни точек нет, ни тире:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void morse::sound()
{
    for (char i = 0; i < length(); i++)
    {
        if (latinPhrase[i] == '.')
        {
            Beep(600, 400);
        }
        else if (latinPhrase[i] == '-')
        {
            Beep(600, 800);
        }
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2016, 03:04

Заменить все малые буквы латинского алфавита на соответствующие большие буквы
Добрый вечер. Помогите, пожалуйста, исправить программу. Задание: Заменить...

Напечатать уникальные буквы заданного текста (буквы, встречающиеся один раз)
Помогите пожалуйста с программой. Задан текст.Напечатать буквы этого...

Переставить все входящие буквы «а» в начало слова, а буквы «я» – в конец
Привет! Нужно во всех словах строки S переставить все входящие буквы «а» в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru