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

Написать функцию, которая принимает строку звуков, а возвращает звук - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Скотт Мейерс - Эффективное использование C++. 55 верных советов ... http://www.cyberforum.ru/cpp-beginners/thread166824.html
Где найти книгу в элетронном виде??
C++ Комментарии Помогите пожалуйста прокомментировать часть программы: image = cvCreateImage( cvGetSize(frame), 8, 3 ); image->origin = frame->origin; grey = cvCreateImage( cvGetSize(frame), 8, 1 ); prev_grey = cvCreateImage( cvGetSize(frame), 8, 1 ); status = (char*)cvAlloc(MAX_COUNT); http://www.cyberforum.ru/cpp-beginners/thread166794.html
Сортировка C++
Помогите связать сортировку "sort" и индекс элемента "ind". Задание: отсортировать элементы массива, находящиеся слева от найденной позиции по убыванию, а элементы массива, находящиеся справа от найденной позиции по возрастанию. #include <windows.h> #include <iostream> #include<time.h> #include<stdlib.h> using namespace std;
C++ Нет кодировки?!
в общем я немного изменил функцию со справки под свои нужды(функция была аналогом dir'a).. вот код: #include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe.h> #include <iostream> #include <fstream> #include "files.h"
C++ Координаты точки http://www.cyberforum.ru/cpp-beginners/thread166755.html
Здравствуйте! У меня такой вопрос: Как мне расчитать координаты точки лазера на экране ? У меня задание, сделать так чтобы можно было управлять мышкой при помощи лазерной указки. Я не могу понять как расчитывать координаты её и потом достаточно расчитать координаты центра Где находится точка или полностью всю область экрана расчитывать нужно ? Разрешение моего экрана 1920х1080. Подскажите...
C++ Для заданного x найти значение функции Для данного x найти значение следующей функции f, принимающей значения целого типа: 0, если x < 0, f(x) = 1, если x принадлежит [0, 1), [2, 3), … , –1, если x принадлежит [1, 2), [3, 4). подробнее

Показать сообщение отдельно
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.09.2010, 15:59     Написать функцию, которая принимает строку звуков, а возвращает звук
Цитата Сообщение от amfisat Посмотреть сообщение
а возвращает звук (строка в 1 символ).
наверно букву а не звук.

Идея с массивом:

количество перестановок всех звуков будет равна (количество звуков)! для n=5 думаю кейсами долговато будит(уже 120).
предлагаю сделать:
Массив
C++
1
mas[len]
куда будут записыватся перестановки [ len = (количество_звуков)! ]
Функцию
C++
1
2
3
4
5
6
7
void permutation(char* str, mas, len){
    int i =0;
    ....
    mas[i] = очередная перестановка
    ...
    ++i;
}
в которой будут генерироватся перестановки и записыватся в mas[];


и саму главную функцию
C++
1
char get_sound(char* str, mas, len)
в которую передаётся уже заполненный перестановками массив , его размер , и искомая строка , в которой ищется соответствие.


а лучше использовать STL: map, pair или тому подобное

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

Не по теме:

а мне понравился мой алгоритм )



Добавлено через 18 часов 19 минут
amfisat, создал в виде класса:

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
#include <iostream>
#include <map>
#include <algorithm>
#include <iterator>
#include <vector>
 
class notes{
        std::map <std::string, int> list_sound; //список звуков
 
        void permutation(std::string str){ //получаем все перестановки звуков и заносим их в список звуков
            int cnt_permut = 0;
            std::vector<char> v;
            for (int i=0; i < str.size(); ++i)
                v.push_back(str[i]);
            list_sound.insert(std::pair<std::string, int>(str, ++cnt_permut));
            while (next_permutation(v.begin(), v.end() ) ) {
                std::vector<char>::iterator st=v.begin();
                str.clear();
                while(st != v.end()){
                    str += *st;
                    ++st;
                }
                list_sound.insert(std::pair<std::string, int>(str, ++cnt_permut));
            }
        };
 
    public:
        explicit notes( std::string str) {permutation(str);}; // конструктор - инициализирует  список звуков
 
        int find_sound(std::string key) const{ // поиск звука
            std::map<std::string, int>::const_iterator p;
            p = list_sound.find(key);
            if (p != list_sound.end() )
                return p -> second;
            else
                return -1;
        }
 
        void show() const{
            std::map<std::string, int>::const_iterator p = list_sound.begin();
            while (p != list_sound.end() ){
                std::cout << (p->first) << " ---> " << (p->second) << std::endl;
                ++p;
            }
        }
};
 
 
 
int main(){
 
    notes albom("ABCD"); //создать
 
    albom.show();  //показать
 
    std::cout << "Звук DABC соответствует: " << albom.find_sound("DABC"); //найти
 
    return 0;
}
только я сделал чтобы выводилась не буква а цифра

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