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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скотт Мейерс - Эффективное использование C++. 55 верных советов ... http://www.cyberforum.ru/cpp-beginners/thread166824.html
Где найти книгу в элетронном виде??
C++ Выражение Подскажите пожалуйста что обозначают эти два выражения: image->origin = frame->origin status = (char*)cvAlloc(MAX_COUNT) http://www.cyberforum.ru/cpp-beginners/thread166823.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);
Сортировка C++
Помогите связать сортировку "sort" и индекс элемента "ind". Задание: отсортировать элементы массива, находящиеся слева от найденной позиции по убыванию, а элементы массива, находящиеся справа от найденной позиции по возрастанию. #include <windows.h> #include <iostream> #include<time.h> #include<stdlib.h> using namespace std;
C++ Нет кодировки?! http://www.cyberforum.ru/cpp-beginners/thread166780.html
в общем я немного изменил функцию со справки под свои нужды(функция была аналогом dir'a).. вот код: #include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe.h> #include <iostream> #include <fstream> #include "files.h"
C++ День недели зравствуйте! помогите, пожалуйст решить задачи по С++. вот текст:1. Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" ИЛИ "Воскресенье". 2. Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово "рубль" в правильной форме.... подробнее

Показать сообщение отдельно
PointsEqual
ниначмуроФ
834 / 518 / 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru