Форум программистов, компьютерный форум CyberForum.ru

Регулировка скорости - C++

Восстановить пароль Регистрация
 
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 19:40     Регулировка скорости #1
Надо составить прогу, которая позволяет текст, содержащийся в файле, воспроизвести сигналами азбуки Морзе. При этом текст должен посимвольно выводиться на экран. Предусмотреть возможность плавной регулировки скорости воспроизведения.

Справился, наконец-то, не без помощи, с выводом из файла на экран, все отлично работает. Но вот скорость регулировки как сделать не знаю. Нужна ваша помощь, господа!
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
#include "stdafx.h"
  #include <fstream>
 #include "iostream"
 using namespace std;
 
 int main ()
{
char en;
fstream F;
F.open(L"C:\\Users\\Андрей\\Desktop\\123.txt");
 
if (!F.is_open())
cout << "error";
else 
{
 while (F >> en)
 
 switch (en)
{
case 'A': case 'a':cout<< ".-1"; break;
case 'B': case 'b':cout<< "-...2"; break;
case 'C': case 'c':cout<< "-.-.3"; break;
case 'D': case 'd':cout<< "-..4"; break;
case 'E': case 'e':cout<< ".5"; break;
case 'F': case 'f':cout<< "..-.6"; break;
case 'G': case 'g':cout<< "--.7"; break;
case 'H': case 'h':cout<< "....8"; break;
case 'I': case 'i':cout<< "..9"; break;
case 'J': case 'j':cout<< ".---10"; break;
case 'K': case 'k':cout<< "-.-11"; break;
case 'L': case 'l':cout<< ".-..12"; break;
case 'M': case 'm':cout<< "--13"; break;
case 'N': case 'n':cout<< "-.14"; break;
case 'O': case 'o':cout<< "---15"; break;
case 'P': case 'p':cout<< ".--.16"; break;
case 'Q': case 'q':cout<< "--.-17"; break;
case 'R': case 'r':cout<< ".-.18"; break;
case 'S': case 's':cout<< "...19"; break;
case 'T': case 't':cout<< "-20"; break;
case 'U': case 'u':cout<< "..-21"; break;
case 'V': case 'v':cout<< "...-22"; break;
case 'W': case 'w':cout<< ".--23"; break;
case 'X': case 'x':cout<< "-..-24"; break;
case 'Y': case 'y':cout<< "-.--25"; break;
case 'Z': case 'z':cout<< "--..26"; break;
case '1':cout<< ".----"; break;
case '2':cout<< "..---"; break;
case '3':cout<< "...--"; break;
case '4':cout<< "....-"; break;
case '5':cout<< "....."; break;
case '6':cout<< "-...."; break;
case '7':cout<< "--..."; break;
case '8':cout<< "---.."; break;
case '9':cout<< "----."; break;
case '0':cout<< "-----"; break;
case '.':cout<< "......"; break;
case ',':cout<< ".-.-.-"; break;
case '!':cout<< "--..--"; break;
case '?':cout<< "..--.."; break;
 
 } 
}
  system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 19:40     Регулировка скорости
Посмотрите здесь:

результат запуска ракеты в зависимости от скорости C++
вопрос по скорости ком порта C++
Сравнение скорости C++
C++ Фикс скорости Игры
Программа замера скорости C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 19:47     Регулировка скорости #2
Это пример задержки на 5 секунд. Измени время задержки и встать её в цикл до switch, или после (в зависимости от потребности).
C++
1
2
3
4
5
6
7
#include <thread>
 
int main()
{
    std::this_thread::sleep_for( std::chrono::milliseconds( 5000 ) );
    return 0;
}
Sn1p3rOk
 Аватар для Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,078
Завершенные тесты: 2
30.06.2015, 19:55     Регулировка скорости #3
C++
1
2
3
4
#include <Windows.h>
 
// Функция воспроизводит звуковой сигнал
Beep(/* Частота */, /* Длительность */)
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 19:58  [ТС]     Регулировка скорости #4
castaway, Спасибо. сейчас возможности нет просмотреть работоспособность. Но нужно не в программе секунды задавать, а прописать так, чтобы был выбор. Хотя бы 3 выбора скорости. Медленно, средне, быстро. Ну или задавать число. В общем, чтобы у юзера был выбор

Добавлено через 51 секунду
Sn1p3rOk, Зачем мне звуковой сигнал?
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 20:05     Регулировка скорости #5
Цитата Сообщение от Milan2266 Посмотреть сообщение
Но нужно не в программе секунды задавать, а прописать так, чтобы был выбор.
Ты написал такую здоровенную программу, не думаю что тебе составит труда ввести задержку с клавиатуры. Если всё-таки составит - показывай как пробовал.

Не по теме:

Говори сразу что еще потом понадобится. Делать за тебя не буду, просто интересно.

Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 20:29  [ТС]     Регулировка скорости #6
castaway, Ну пожалуйста Ладно, шутки в сторону, сейчас выдам что нить, посмотрите.

Добавлено через 10 минут
castaway, для начала вот проблема: fatal error C1083: Не удается открыть файл include: thread: No such file or directory
VS 2008
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 20:33     Регулировка скорости #7
Milan2266, это из стандарта C++11. Я не в курсе, поддерживает ли его VS 2008..
В ОС Windows можешь воспользоваться альтернативным вариантом:
C++
1
Sleep( 5000 /* количество миллисекунд */ );
Разница лишь в том, что вариант из второго поста - кросплатформенный.
Sn1p3rOk
 Аватар для Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,078
Завершенные тесты: 2
30.06.2015, 20:38     Регулировка скорости #8
Цитата Сообщение от Milan2266 Посмотреть сообщение
castaway, Спасибо. сейчас возможности нет просмотреть работоспособность. Но нужно не в программе секунды задавать, а прописать так, чтобы был выбор. Хотя бы 3 выбора скорости. Медленно, средне, быстро. Ну или задавать число. В общем, чтобы у юзера был выбор

Добавлено через 51 секунду
Sn1p3rOk, Зачем мне звуковой сигнал?
Забавно, для вывода звукового сигнала точки и тире...или ты решил просто текстом вываливать? В том числе есть регулировка скорости воспроизведения.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 20:43     Регулировка скорости #9
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
или ты решил просто текстом вываливать?
На самом деле именно это он и решил. По коду же понятно.
Sn1p3rOk
 Аватар для Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,078
Завершенные тесты: 2
30.06.2015, 20:45     Регулировка скорости #10
Цитата Сообщение от castaway Посмотреть сообщение
На самом деле именно это он и решил. По коду же понятно.
Ну тогда извините, не буду навязывать свой метод решения.
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 20:53  [ТС]     Регулировка скорости #11
Вставил sleep до switch, выводится в консоль только последний символ. Почему?

Добавлено через 1 минуту
Sn1p3rOk, я понял для чего ты мне про сигналы написал, спасибо) вот только в аудиториях, на компьютерах, у нас звук не выведется, так что только текст.

Добавлено через 1 минуту
Хехе! все работает!) спасибо ребятки, все исправил))

Добавлено через 59 секунд
Теперь доделаю, с выбором, и выложу, может полезно будет кому. castaway, если есть возможность, загляни через пол часа ко мне на огонек, может что опять не получится?
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 20:56     Регулировка скорости #12
Цитата Сообщение от Milan2266 Посмотреть сообщение
castaway, если есть возможность, загляни через пол часа ко мне на огонек, может что опять не получится?
А ты где географически находишься? Пиво будет?
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 21:07  [ТС]     Регулировка скорости #13
castaway, Хехе) Я в Казани нахожусь)
Программ с морзянкой много было на сайте, но ни одной работающей. Пригодится кому:
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
#include "stdafx.h"
#include <fstream>
#include "iostream"
#include <Windows.h.>
using namespace std;
 
int main ()
{
    char en;
    int n;
cout<<"Vvedite skorost regulirovki n=";cin>>n;
ifstream F;
    F.open(L"C:\\Users\\Андрей\\Desktop\\123.txt");
 
if (!F.is_open())
    cout << "error";
else 
{
while (F >> en)
{
Sleep (n);
 
     switch (en)
    {
    case 'A': case 'a':cout<< ".-1"; break;
    case 'B': case 'b':cout<< "-...2"; break;
    case 'C': case 'c':cout<< "-.-.3"; break;
    case 'D': case 'd':cout<< "-..4"; break;
    case 'E': case 'e':cout<< ".5"; break;
    case 'F': case 'f':cout<< "..-.6"; break;
    case 'G': case 'g':cout<< "--.7"; break;
    case 'H': case 'h':cout<< "....8"; break;
    case 'I': case 'i':cout<< "..9"; break;
    case 'J': case 'j':cout<< ".---10"; break;
    case 'K': case 'k':cout<< "-.-11"; break;
    case 'L': case 'l':cout<< ".-..12"; break;
    case 'M': case 'm':cout<< "--13"; break;
    case 'N': case 'n':cout<< "-.14"; break;
    case 'O': case 'o':cout<< "---15"; break;
    case 'P': case 'p':cout<< ".--.16"; break;
    case 'Q': case 'q':cout<< "--.-17"; break;
    case 'R': case 'r':cout<< ".-.18"; break;
    case 'S': case 's':cout<< "...19"; break;
    case 'T': case 't':cout<< "-20"; break;
    case 'U': case 'u':cout<< "..-21"; break;
    case 'V': case 'v':cout<< "...-22"; break;
    case 'W': case 'w':cout<< ".--23"; break;
    case 'X': case 'x':cout<< "-..-24"; break;
    case 'Y': case 'y':cout<< "-.--25"; break;
    case 'Z': case 'z':cout<< "--..26"; break;
    case '1':cout<< ".----"; break;
    case '2':cout<< "..---"; break;
    case '3':cout<< "...--"; break;
    case '4':cout<< "....-"; break;
    case '5':cout<< "....."; break;
    case '6':cout<< "-...."; break;
    case '7':cout<< "--..."; break;
    case '8':cout<< "---.."; break;
    case '9':cout<< "----."; break;
    case '0':cout<< "-----"; break;
    case '.':cout<< "......"; break;
    case ',':cout<< ".-.-.-"; break;
    case '!':cout<< "--..--"; break;
    case '?':cout<< "..--.."; break;
 
    } 
}
}
    system ("pause");
}
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 21:12     Регулировка скорости #14
C++
1
#include <Windows.h.>
последняя точка не нужна.
Milan2266, я так понял проблема решена? (в Казань не поеду)
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 21:24  [ТС]     Регулировка скорости #15
castaway, Ну вот, так быстро нашел и потерял... ) castaway, К чему можно придраться по коду?

Добавлено через 6 минут
castaway, А так да, проблема решена быстрее, чем я думал. Спасибо большое, добрый человек))
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 21:31     Регулировка скорости #16
Цитата Сообщение от Milan2266 Посмотреть сообщение
castaway, К чему можно придраться по коду?
Ты имеешь в виду то, к чему может придраться тот человек, который дал тебе это задание?

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Milan2266 Посмотреть сообщение
castaway, А так да, проблема решена быстрее, чем я думал.
Передай всем своим, что проблема решается намного легче и быстрее, если автор прикладывает руку к её решению. Т.е. так, как сделал это ты.

Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 21:32  [ТС]     Регулировка скорости #17
Да. К чему например может придраться преподаватель. Или ты.
Я вот С++ изучаю очень не давно, а ты, видимо, давно? Есть места в коде, где у тебя кровь из глаз пошла?
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
30.06.2015, 21:39     Регулировка скорости #18
Цитата Сообщение от Milan2266 Посмотреть сообщение
Есть места в коде, где у тебя кровь из глаз пошла?
Если честно, то кровь из глаз идёт гладя на каждую строку.
Всё можно улучшить, начиная от форматирования, кончая заменой switch на массив кодов.
Просто, если всё сделать идеально, то преподаватель тебе не поверит.
Milan2266
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 28
30.06.2015, 21:50  [ТС]     Регулировка скорости #19
Надеюсь, со временем все придет)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2016, 11:31     Регулировка скорости
Еще ссылки по теме:

C++ Обмен данными по COM порту на нестандартной скорости
C++ разница в скорости выполнения, итератры
Регулировка скорости вывода символа на экран C++

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

Или воспользуйтесь поиском по форуму:
zetroks
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 1
04.10.2016, 11:31     Регулировка скорости #20
Я в свое время решал это как-то так.
Если еще актуально, могу расписать что и как тут.
Кликните здесь для просмотра всего текста

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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
 
bool load_morze(char **morze){
    
    for(int i = 0; i < 256; i++){
        morze[i] = new char[1];
        morze[i][0] = '\0';
    }
    FILE *pFile = fopen ("morze.txt","rb");
    if (pFile==NULL) perror ("Error opening file");
    else{
        fseek (pFile, 0, SEEK_END);   // non-portable
        long size=ftell (pFile);
        fseek (pFile, 0, SEEK_SET);   // non-portable
    
        char *list = new char[size];
        fread(list,1,size,pFile);
        fclose (pFile);
        int start_pos = 0 ;
        for(int i = 0; i < size; i++){
            if(list[i] == '\r'){
                morze[list[start_pos]] = new char[i-start_pos-1];
                for(int pos = 0;pos < i-start_pos-1;pos++){
                    morze[list[start_pos]][pos] = list[start_pos + 1 + pos];
                }
                morze[list[start_pos]][i-1] = '\0';
                printf("%c - %d - %s\r\n",list[start_pos],list[start_pos],morze[list[start_pos]]);
                start_pos = i+2;
                i = start_pos;
            }
        }
    }
}
 
int main (){
    
    char *morze[256];
    if (load_morze(morze)){
        FILE * pFile;
        long size;
 
        pFile = fopen ("myfile.txt","rb");
        if (pFile==NULL) perror ("Error opening file");
        else{
            fseek (pFile, 0, SEEK_END);
            size=ftell (pFile);
            fseek (pFile, 0, SEEK_SET);
    
            char *list = new char[size];
            fread(list,1,size,pFile);
            fclose (pFile);
    
            for(int i = 0; i < size; i++){
                if(list[i] >= 'A' && list[i] <= 'Z'){
                    list[i]-=char('A'-'a');
                }
                printf("%s ",morze[list[i]]);
                int duration = 500;
                for(int b = 0; morze[list[i]][b] != '\0';b++){
                    if(morze[list[i]][b] == '.'){
                        Beep(1000,200);
                        Sleep(200);
                    }
                    else {
                        Beep(1000,500); 
                        Sleep(500);
                    }
                }
            }
        }
    }
    getch();
    return 0;
}
Файл "morze.txt"
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
a.-
b-...
c-.-.
d-..
e.
f..-.
g--.
h....
i..
j.---
k-.-
l.-..
m--
n-.
o---
p.--.
q--.-
r.-.
s...
t-
u..-
v...-
w.--
x-..-
y-.--
z--..
1.----
2..---
3...--
4....-
5.....
6-....
7--...
8---..
9----.
0-----
Если надо увеличить количетво распозноваемых символов, их надо просто дописать в этот файл, не открывая компилятора. Так же с помощью этого можно быстро зашифровать любую букву любой последовательностью
И файл "myfile.txt"
C++
1
Hello World

Результат работы:
И звук на фоне
http://prntscr.com/cpm47o
Yandex
Объявления
04.10.2016, 11:31     Регулировка скорости
Ответ Создать тему
Опции темы

Текущее время: 13:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru