Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lazariev_V
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 55
#1

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

06.10.2016, 02:34. Просмотров 172. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать функцию, конвертирующую обычные буквы в буквы азбуки Морзе (C++):

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

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

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

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

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

В текстовом файле после каждой 2 буквы вставлять буквы из слова - C++
Подскажите, пожалуйста как на C++ в текстовом файле после, к примеру, каждой 2 буквы вставлять по очереди буквы из слова, например...

1
nd2
2444 / 2033 / 716
Регистрация: 29.01.2016
Сообщений: 6,674
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
Привет! Вот еще темы с ответами:

С экрана вводятся любые буквы. Подсчитать и вывести на печать количество вводов буквы А - C++
Разработка алгоритма с использованием оператора do/while, while 1. С экрана вводятся любые буквы. Подсчитать и вывести на печать...

C (СИ) - Ввести строку символов.И После каждой 2 Буквы ( Именно буквы ) Вставить слово - C++
Огромное Спасибо Darkrduk за эту программу ( программа вставляет MAU ) после каждого 2 символа ** .. Нужно умудриться сделать ! Именно...

Очереди: одна должна содержать гласные буквы, другая - согласные буквы; чтение из файла - C++
помогите написать программу. я понимаю как ее сделать, но не могу реализовать:( В файле записано несколько предложений, которые могут...

в заданном тексте после каждой буквы «b» добавляет буквы «ak». - C++
Составить программу, которая в заданном тексте после каждой буквы «b» добавляет буквы «ak». #include&lt;iostream.h&gt; #include&lt;math.h&gt; ...


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

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

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