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

музыкальный плеер, ревизия кода, советы и - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напечатать слова, в которых первая буква входит в него еще раз http://www.cyberforum.ru/cpp-beginners/thread1029980.html
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать слова, в которых первая буква входит в него еще раз. #include <conio.h> #include "stdafx.h" #include <iostream> #include <cmath>
C++ Не могу понять ошибку Помогите получить правильный ответ #include<iostream> using namespace std; int main() { int j, i, n; http://www.cyberforum.ru/cpp-beginners/thread1029975.html
C++ Битовая арифметика
Почему при: int myVar = 15, mask = 0x00 00 00 01; //выделил разряды printf("%d", myVar & mask); Я получаю -1? Конечно, я мог бы вывести через %u, но мне интересен сам факт "-1". Разве после этой операции не должно было получиться число 000....001 = 1?
C++ Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов
Здравствуйте, дорогие форумчане. Не могли бы вы мне помочь? Мне нужно составить программу с таким условием: "Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов." Способ ввода значений элементов массива: с клавиатуры. Добавлено через 4 часа 44 минуты Форумчане, выручайте пожалуйста, эту тему по болезни пропустил, теперь понять не...
SFML Редактор карт на C++, SFML http://www.cyberforum.ru/cpp-beginners/thread1029953.html
Помогите написать редактор карт на C++,SFML!!!Ну или скиньте документацию(желательно на русском)!
C++ Сортировка) как отсортировать по убыванию результат которые находиться в файле text #include <iostream> #include <fstream> using namespace std; int main() { unsigned m={0}; ifstream text("text.txt");//для ввода (чтения) данных из файла; подробнее

Показать сообщение отдельно
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
05.12.2013, 19:17     музыкальный плеер, ревизия кода, советы и
Добрый день форумчане.

Скука меня одолела сегодня и я подумал чего же мне не хватает для счастья, ответы был прост как 2^31 - 1. Без музыки мы серы, унылы и грустные. Поэтому я решил решил накатать свой простенький mp3 плеер аки winamp, только с сокращённым набором команд =)

Итак взяв листок бумаги, я подумал какие функции в моём плеере мне нужны:

- load // несомненно, нет файла - нет бодрячкового музончика
- play // надо же как-то запускать загруженный файл
- set_volume // чтобы соседи не вызвали милицию
- pause // на тот случай если во время любимого трека приспичит по маленькой
- quit // чтобы таки не висела в памяти без пользы. =)

Решил накидать костяк программы и вот что получилось, кидаю код на вашу критику и обозрение. Плеер ещё ничего не умеет, только вызывать функции с параметрами, которые я передаю в них. Воспроизведение музончика я ещё буду луркать в гугле, но буду рад если вы посоветуете какие-нибудь кошерные методы.

Тут в коде закралась ошибка, если я закрываю консольку мышой, а не командой -halt прога виснет, у меня есть смутные догадки, что это происходит из-за того что память не освобождается - но хотелось бы услышать мнение экспертов.

По поводу структуры MainCmd, да я знаю, что если поля содержать ссылки, то я должен задатьт конструктор копирования и оператор присваивания или запретить их, я это сделаю, чесслово, только попозже =) в остальном жду комментов, и в данной ситуации мне очень хочется процитировать слова великого мыслителя, композитора и поэта современности "Не надо стесняться" (с) И. Дорн.

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
#include <iostream>
#include <string>
#include <cstdlib>
 
using namespace std;
 
const string STRING_MASK_SET_VOLUME = "-s_v";
const string STRING_MASK_PAUSE      = "-p";
const string STRING_MASK_LOAD       = "-ld";
const string STRING_MASK_PLAY       = "-pl";
const string STRING_MASK_QUIT       = "-halt";
 
enum Main_cmd_ID
{
    MCMD_UNKNOWN    = 0,
    MCMD_LOAD       = 1,
    MCMD_PLAY       = 2,
    MCMD_SET_VOLUME = 3,
    MCMD_PAUSE      = 4,
    MCMD_QUIT       = 5
};
 
typedef void (*MainFunctions)(char *);
 
 
struct MainCmd
{
    Main_cmd_ID id;
    char* params;
 
    MainCmd()
    {
        id = MCMD_UNKNOWN;
        params = NULL;
    }
 
    ~MainCmd()
    {
        delete params;
    }
};
// ---------------------------------------------------
 
bool on_cycle = true;
// ---------------------------------------------------
 
void unknown(char*);
void load(char*);
void play(char*);
void set_volume(char*);
void pause(char*);
void quit(char*);
 
MainFunctions main_function[6] = { unknown,
                                    load,
                                    play,
                                    set_volume, 
                                    pause,
                                    quit
};
 
// ---------------------------------------------------
MainCmd parse_cmd(string);
// ---------------------------------------------------
int main()
{
    string cmd_line = "";
 
    while(on_cycle)
    {
        MainCmd cur_cmd;
        getline(cin, cmd_line);
        cur_cmd = parse_cmd(cmd_line);
 
        main_function[cur_cmd.id](cur_cmd.params);
    }
 
    return 0;
}
// ----------------------------------------------------
void unknown(char* params)
{
    string s_param = (params == NULL) ? "" : string(params);
    cout << "cmd : unknown\nparams : " << s_param << endl;
}
 
void load(char* params)
{
    string s_param = (params == NULL) ? "" : string(params);
    cout << "cmd : load\nparams :" << s_param << endl;
}
 
void play(char* params)
{
    string s_param = (params == NULL) ? "" : string(params);
    cout << "cmd : play\nparams :" << s_param << endl;
}
 
void set_volume(char* params)
{
    string s_param = (params == NULL) ? "" : string(params);
    cout << "cmd : set_volume\nparams :" << s_param << endl;
}
 
void pause(char* params)
{
    string s_param = (params == NULL) ? "" : string(params);
    cout << "cmd : pause\nparams :" << s_param << endl;
}
 
void quit(char* params)
{
    //string s_param = (params == NULL) ? "" : string(params);
    //cout << "cmd : quit\nparams :" << s_param << endl;
    on_cycle = false;
}
//------------------------------------------------------
 
MainCmd parse_cmd(string line)
{
    MainCmd res;
    string cmd_line_id = "";
    string cmd_line_params = "";
    char *p;
 
    if(line.find("-") == string::npos)
    {
        res.id = MCMD_UNKNOWN;
 
        return res;
    } else 
    {
        size_t len = line.find("-");
 
        if(len)
            line.erase(line.begin()+len);
        
        cmd_line_id = (line.find(" ") != string::npos) ? line.substr(0, line.find(" ")) : line;
        cmd_line_params = (line.find(" ") != string::npos) ? line.substr(line.find(" ") + 1) : "";
 
        if(cmd_line_params.size())
        {
            p = new char[cmd_line_params.size()];
            strcpy(p, cmd_line_params.c_str());
        }
    }
 
    res.id = (cmd_line_id == STRING_MASK_LOAD) ? MCMD_LOAD :
                (cmd_line_id == STRING_MASK_PLAY) ? MCMD_PLAY :
                (cmd_line_id == STRING_MASK_SET_VOLUME) ? MCMD_SET_VOLUME :
                (cmd_line_id == STRING_MASK_PAUSE) ? MCMD_PAUSE : 
                (cmd_line_id == STRING_MASK_QUIT) ? MCMD_QUIT : MCMD_UNKNOWN;
    
    res.params = p;
 
    return res; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru