Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
1

Заполнение массива с букв указанного альфавита

15.04.2016, 17:55. Просмотров 246. Ответов 14
Метки нет (Все метки)

Пусть имеем альфавит из 2-х элементов N = {a, b}, и имеем массив из 4-х элементов, как можно заполнить массив состоящий только элементов из этого альфавита? В нашем случае получается 2^4 вариантов (aaaa, aaab, aaba, ... bbbb).
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2016, 17:55
Ответы с готовыми решениями:

Выдать список всех свойств указанного при вводе объекта указанного фрейма
Выдать список всех свойств указанного при вводе объекта указанного фрейма Добавлено через 19...

Программа должна выводить все числа кратные трём, в промежутке от указанного минимума до указанного максимума
Всем доброе время суток! Задали задание, банальное, но есть одна проблема. Помогите найти решение...

Нормирование массива до указанного диапазона
У нас есть массив чисел, изначально их количество, значение и интервал неизвестны (числа взяты с...

Найти сумму элементов указанного массива
Дан двумерный массив, содержащий З строки и 4 столбца. Элементами массива являются целые числа. ,...

Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200
Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива...

14
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 18:01 2
Циклами, например. 4 вложенных по 2 итерации.
0
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 18:06  [ТС] 3
nmcf, А если в общем случае ? если алфавит состоит из n элементов, и надо заполнить массив из n^2 элементов?
0
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 19:03 4
Рекурсия, например.
0
15.04.2016, 19:03
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 19:12  [ТС] 5
nmcf, С индексами не могу разобраться, если кто то может напишите код пожалуйста.
0
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 19:15 6
4 цикла не можешь изобразить? Показывай свой вариант.
0
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 19:26  [ТС] 7
nmcf, Это ваш вариант, а как с индексами?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
 int alphabet[] = {0,1};
    int* Arr = malloc(4*sizeof(int));
    
    int i = 0;
    int j = 0;
    int k = 0;
    int q = 0;
    
    for(; q<2; ++q)
        for(; k<2; ++k)
        for(; j<2; ++j)
        for(; i<2; ++i)
        Arr[/* ??? */ ] = alphabet[/* ??? */]
0
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 19:37 8
Так, только индексы в циклы вставь. Почему они отдельно-то? И что за malloc() в C++? По древним книжкам учишься?
C++
1
2
3
4
Arr[0] = alphabet[q];
Arr[1] = alphabet[k];
Arr[2] = alphabet[j];
Arr[3] = alphabet[i];
Если ты хочешь хранить все эти комбинации, то Arr нужен двумерный. Если просто вывести, то можно вообще не сохранять.
1
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 19:44  [ТС] 9
nmcf, Я над C работаю, мой компилятор не позволяет объявлении внутри for. Спасибо.

Добавлено через 1 минуту
nmcf,
Цитата Сообщение от nmcf Посмотреть сообщение
Если ты хочешь хранить все эти комбинации, то Arr нужен двумерный.
Ага в матрицах буду хранить.
0
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 19:57 10
Ну а зачем ты взял такой отсталый компилятор? "Препод" сказал?
0
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 20:34  [ТС] 11
nmcf, Просто привык уже, и не менял с того момента )
Вообще то у меня другая, не тривиальная задача по алгебре, просто надо решить программированием, если интересует могу сказать )

Добавлено через 33 минуты
Но для общего случая вопрос остается в силе.
0
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,492
15.04.2016, 21:14 12
Рекурсия. Каждый цикл в своём вызове.
0
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 21:30  [ТС] 13
nmcf, А сколько циклов? если не трудно напиши пожалуйста, а то видимо я не смогу, завтра у меня deadline

Добавлено через 5 минут
nmcf, Ну хоть то псевдокод.
0
RQdan
65 / 65 / 37
Регистрация: 26.10.2013
Сообщений: 198
15.04.2016, 21:41 14
DavidTs, построение матриц через рекурсию. Честно говоря, реализация несколько кривовата вышла, но работает
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
#include <iostream>
#include <vector>
 
using namespace std;
 
void GenerateMatrixs(vector <char*>*, char*, int);
void GenerateMatrix(vector <char*>*, char *, char*, int, int);
void DisplayMatrixs(vector <char*>*, int);
 
void main () {
    int matrixSize;
    vector <char*> matrixs;
    char* ABC = new char[256];
 
    cin>>matrixSize;//размерность матрицы
    cin.ignore();
    cin.getline(ABC, 256);//алфавит
 
    GenerateMatrixs(&matrixs, ABC, matrixSize);
 
    DisplayMatrixs(&matrixs, matrixSize);
 
    int v_len = matrixs.size();
    for(int i = 0; i < v_len; i++) delete []matrixs[i];
}
 
void GenerateMatrixs(vector <char*>* matrixs, char* ABC, int matrixSize) {
    char* matrix = new char[matrixSize];
    GenerateMatrix(matrixs, matrix, ABC, matrixSize, 0);
    delete []matrix;
}
 
void GenerateMatrix(vector <char*>* matrixs, char* matrix, char* ABC, int matrixSize, int pos) {
    if(pos == matrixSize) {
        char* tmp = new char[matrixSize];
        for(int i = 0; i < matrixSize; i++) {
            tmp[i] = matrix[i];
        }
        (*matrixs).push_back(tmp);
        return;
    }
 
    int ABCLen = strlen(ABC);
    for(int i = 0; i < ABCLen; i++) {
        matrix[pos] = ABC[i];
        GenerateMatrix(matrixs, matrix, ABC, matrixSize, pos + 1);
    }
}
 
void DisplayMatrixs(vector <char*>* matrixs, int matrixSize) {
    int v_len = (*matrixs).size();
    for(int i = 0; i < v_len; i++) {
        for(int j = 0; j < matrixSize; j++) {
            cout<<(*matrixs)[i][j]<<" ";
        }
        cout<<endl;
    }
}
1
DavidTs
3 / 3 / 8
Регистрация: 25.11.2015
Сообщений: 127
15.04.2016, 22:09  [ТС] 15
RQdan, Спасибо. : )
0
15.04.2016, 22:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2016, 22:09

Определите индекс указанного пользователями элемента массива
Определите индекс указанного пользователями элемента массива.Если такого элемента нет,сообщите об...

Найти произведение элементов массива из указанного диапазона
Ввести одномерный массив А из 12 элементов. Определить в нём произведение тех элементов, чей...

Вычислить количество элементов массива, больших указанного числа
Вычислить количество элементов массива, больших c для каждого из трех одномерных массивов


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

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

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