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

Нужно получить массив - C++

Восстановить пароль Регистрация
 
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 22:19     Нужно получить массив #1
Ребят, вы уже видели мой пост, в котором я написал белиберду, которую никто не понял. Вот нарисовал небольшую схемку. Нужно получить массив key, когда есть массив d и r. Часть кода есть, никак не могу написать код, чтобы получился массив key. на рисунке в "Кол-во пов..." 4 обозначает номер клавиши в данном случаете
Миниатюры
Нужно получить массив  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 22:19     Нужно получить массив
Посмотрите здесь:

Нужно записать массив в файл, а потом из этого файла считать этот же массив C++
C++ Массив: Получить новый массив В по следующему правилу: В1=А1+А10
Массив: Получить массив, который содержит все элементы исходного массива, кратные трем C++
C++ 2)Дан массив из N целых чисел. Получить из него массив отрицательных чисел и отсортировать его по возрастанию методом выбора
Задан Массив из N и M Чисел соответственно. Получить объединенный массив, включив в него сначала элементы первого массива, а затем второго C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 22:27     Нужно получить массив #2
2 массива d и r мы вводим с клавиатуры или указанны условием? Их размер фиксирован или задается в программе? Последний элемент массива key равен количеству четверок в массиве d, а элементы до него?
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 22:37  [ТС]     Нужно получить массив #3
Цитата Сообщение от Alex566 Посмотреть сообщение
2 массива d и r мы вводим с клавиатуры или указанны условием? Их размер фиксирован или задается в программе?
Там в общем так, сначала человек задает кол-во клавиш. Потом создается массив b, в котором записывается макс. кол-во нажатий каждой клавиши пользователем. Соответственно, если пользователь задал 4 клавиши, то и массив b будет состоять из 4 ячеек. Потом все значения из массива b складываются и получается кол-во всего нажатий. Потом создается массив d, размер которого зависит как раз таки от кол-во всех нажатий(например, 10). Все значения массива d вводит пользователь. Размер массива r зависит от кол-ва клавиш(в данном случае - 4).
Цитата Сообщение от Alex566 Посмотреть сообщение
Последний элемент массива key равен количеству четверок в массиве d, а элементы до него?
1 элемент - коло-во 1 в массиве d. 2 элемент - кол-во 2, 3 элемент - кол-во 3
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 22:49     Нужно получить массив #4
Формирование массива key.
C++
1
2
for(int i = 0; i<n; i++)
        key[D[i]-1]++;
Где:
D - собственно массив d.
n - количество элементов массива D;
key - массив, изначально заполненный нулями.
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 22:54  [ТС]     Нужно получить массив #5
Цитата Сообщение от Alex566 Посмотреть сообщение
Формирование массива key.
C++
1
2
for(int i = 0; i<n; i++)
        key[D[i]-1]++;
Где:
D - собственно массив d.
n - количество элементов массива D;
key - массив, изначально заполненный нулями.
Когда я ввел значения в массив d, то сразу вылетаю и вот ошибка: Unhandled exception at 0x0033465e in keyboard.exe: 0xC0000005: Access violation reading location 0x374f7ee0.

Вот код(может корявый, извини, начинающий в области c++):
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
#include <iostream>
#include <Windows.h>
#include <conio.h>
 
using namespace std;
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    // Кол-во клавишь
    int a = 0;
    cout << "Введите кол-во клавишь на клавиатуре: ";
    cin >> a;
 
    // Кол-во нажатий
    int *b = new int[a];
    int p;
    for(int i = 1; i <= a; i++) {
        cout << "Введите кол-во нажатий, выдерживаемых клавишой " << i << ": ";
        cin >> p;
        b[i] = p;
    }
 
    // Всего нажатий
    int c = 0;
    for(int j = 1; j <= a; j++)
        c = c + b[j];
    cout << "Всего нажатий: " << c << endl;
 
    // Порядок нажатий
    int *d = new int [c];
    int k;
    for(int l = 1; l <= c; l++) {
        cout << "Введите номер клавиши, которую вы нажали: ";
        cin >> k;
        d[l] = k;
    }
 
    int *key = new int [a];
    for(int i1 = 0; i1 < c; i1++)
        key[d[i1]-1]++; 
 
    for(int i2 = 0; i2 < a; i2++)
        cout << key[i2] << endl;
 
    getche();
    return 0;
}
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 23:14     Нужно получить массив #6
1. После выхода из цикла for созданная при вхождении в функцию переменная пропадает по этому не нужно каждый раз использовать i с новым индексом.
2. Массив нужно инициализировать нулями.
C++
1
for(int i=0;i<a;i++) key[i]=0;
после объявления массива.
3. После выполнения программы созданные динамические массивы нужно удалять.
C++
1
delete key;
Добавлено через 14 минут
Так?
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
#include <iostream>
#include <Windows.h>
#include <conio.h>
 
using namespace std;
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // Кол-во клавишь
    int a = 0;
    cout << "Введите кол-во клавишь на клавиатуре: ";
    cin >> a;
 
    // Кол-во нажатий
    int *b = new int[a];
    int p;
    for(int i = 0; i < a; i++) {
        cout << "Введите кол-во нажатий, выдерживаемых клавишой " << i+1 << ": ";
        cin >> p;
        b[i] = p;
    }
 
    // Всего нажатий
    int c = 0;
    for(int j = 0; j < a; j++)
        c = c + b[j];
    cout << "Всего нажатий: " << c << endl;
 
    // Порядок нажатий
    int *d = new int [c];
    for(int i = 0; i < c; i++) 
    {
        cout << "Введите номер клавиши, которую вы нажали: ";
        cin >> d[i];
    }
 
    int *key = new int [a];
    for(int i=0;i<a;i++) 
        key[i]=0;
    for(int i = 0; i < c; i++)
        key[d[i]-1]++;
    cout<<"key - ";
    for(int i = 0; i < a; i++)
        cout << key[i] << " ";
    delete b;
    delete d;
    delete key;
    getche();
    return 0;
}
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 23:25  [ТС]     Нужно получить массив #7
Цитата Сообщение от Alex566 Посмотреть сообщение
1. После выхода из цикла for созданная при вхождении в функцию переменная пропадает по этому не нужно каждый раз использовать i с новым индексом.
2. Массив нужно инициализировать нулями.
C++
1
for(int i=0;i<a;i++) key[i]=0;
после объявления массива.
3. После выполнения программы созданные динамические массивы нужно удалять.
C++
1
delete key;
Добавлено через 14 минут
Так?
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
#include <iostream>
#include <Windows.h>
#include <conio.h>
 
using namespace std;
 
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    // Кол-во клавишь
    int a = 0;
    cout << "Введите кол-во клавишь на клавиатуре: ";
    cin >> a;
 
    // Кол-во нажатий
    int *b = new int[a];
    int p;
    for(int i = 0; i < a; i++) {
        cout << "Введите кол-во нажатий, выдерживаемых клавишой " << i+1 << ": ";
        cin >> p;
        b[i] = p;
    }
 
    // Всего нажатий
    int c = 0;
    for(int j = 0; j < a; j++)
        c = c + b[j];
    cout << "Всего нажатий: " << c << endl;
 
    // Порядок нажатий
    int *d = new int [c];
    for(int i = 0; i < c; i++) 
    {
        cout << "Введите номер клавиши, которую вы нажали: ";
        cin >> d[i];
    }
 
    int *key = new int [a];
    for(int i=0;i<a;i++) 
        key[i]=0;
    for(int i = 0; i < c; i++)
        key[d[i]-1]++;
    cout<<"key - ";
    for(int i = 0; i < a; i++)
        cout << key[i] << " ";
    delete b;
    delete d;
    delete key;
    getche();
    return 0;
}
А можешь в код все это вставить? Я вставил, где-то ошибку выдает пр работе программы, исправил, в другом появилась

Добавлено через 27 секунд
Цитата Сообщение от Nik_Bar Посмотреть сообщение
А можешь в код все это вставить? Я вставил, где-то ошибку выдает пр работе программы, исправил, в другом появилась
Ой, вот увидел

Добавлено через 2 минуты
Цитата Сообщение от Nik_Bar Посмотреть сообщение
А можешь в код все это вставить? Я вставил, где-то ошибку выдает пр работе программы, исправил, в другом появилась

Добавлено через 27 секунд


Ой, вот увидел
Все правильно, спасибо огромное! Еще немножко осталось и программа закончина будет

Добавлено через 2 минуты
Цитата Сообщение от Nik_Bar Посмотреть сообщение
А можешь в код все это вставить? Я вставил, где-то ошибку выдает пр работе программы, исправил, в другом появилась

Добавлено через 27 секунд


Ой, вот увидел

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


Все правильно, спасибо огромное! Еще немножко осталось и программа закончина будет

А вот еще вопрос. Как присвоить элементу массива грубо говоря текст
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 23:30     Нужно получить массив #8
Цитата Сообщение от Nik_Bar Посмотреть сообщение
А вот еще вопрос. Как присвоить элементу массива грубо говоря текст
Ну текст - это другой тип данных. Если вам нужно присвоить элементу массива текст то и массив должен быть текстовый а не целочисленный int как в данном случае. В C++ текст - это и есть массив из символов по этому чтобы создать массив из текста нужно создавать двумерный массив из символов.
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 23:33  [ТС]     Нужно получить массив #9
А вот еще вопрос. Как присвоить элементу массива грубо говоря текст. И вот почему-то, когда я дописал программу, удалил твой добавленный вывод "key - ", начинаю компилировать, появляется окно, просит согласится или нет, я нажал yes, программу скомпилирвоал, ввожу значения, и в конце программа выдает твой вывод "key -..."

Добавлено через 1 минуту
Цитата Сообщение от Alex566 Посмотреть сообщение
Ну текст - это другой тип данных. Если вам нужно присвоить элементу массива текст то и массив должен быть текстовый а не целочисленный int как в данном случае. В C++ текст - это и есть массив из символов по этому чтобы создать массив из текста нужно создавать двумерный массив из символов.
А string и что-то в этом роде прописывать не надо? Можешь показать пример массива?
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 23:40     Нужно получить массив #10
Цитата Сообщение от Nik_Bar Посмотреть сообщение
А string и что-то в этом роде прописывать не надо? Можешь показать пример массива?
C++
1
char *text[3]={"Word1","Word2","Word3"};//Массив из 3х слов.
Или так с подключениме библиотеки string.h
C++
1
string text[3]={"Word1","Word2","Word3"};
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
23.11.2013, 23:50  [ТС]     Нужно получить массив #11
Цитата Сообщение от Alex566 Посмотреть сообщение
C++
1
char *text[3]={"Word1","Word2","Word3"};//Массив из 3х слов.
Или так с подключениме библиотеки string.h
C++
1
string text[3]={"Word1","Word2","Word3"};
И вот почему-то, когда я дописал программу, удалил твой добавленный вывод "key - ", начинаю компилировать, появляется окно, просит согласится или нет, я нажал yes, программу скомпилирвоал, ввожу значения, и в конце программа выдает твой вывод "key -..."
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 23:55     Нужно получить массив #12
Цитата Сообщение от Nik_Bar Посмотреть сообщение
И вот почему-то, когда я дописал программу, удалил твой добавленный вывод "key - ", начинаю компилировать, появляется окно, просит согласится или нет, я нажал yes, программу скомпилирвоал, ввожу значения, и в конце программа выдает твой вывод "key -..."
1. Я не знаю какую среду разработки вы используете. В Visual studio проблем никаких не испытываю.
2. Я не знаю содержимое окна.
3. Скорее всего при удалении была внесена какая-то ошибка и в окне вам было предложено запустить старый вариант до изменения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 00:14     Нужно получить массив
Еще ссылки по теме:

C++ Задан Массив из N и M Чисел соответственно. Получить объединенный массив, включив в него сначала элементы первого массива, а затем второго
Массивы и указатели (нужно передать массив I[10] в массив J[10] в обратной последовательности) C++
Задан массив и матрица, получить другой массив по правилу C++

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

Или воспользуйтесь поиском по форуму:
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
24.11.2013, 00:14     Нужно получить массив #13
Nik_Bar, Alex566,
Цитата Сообщение от Alex566 Посмотреть сообщение
После выполнения программы созданные динамические массивы нужно удалять.
C++
1
2
3
    delete b;
    delete d;
    delete key;
Для удаления массивов используется delete[] В чём разница использования delete и delete [] ?
delete и delete[]
C++
1
2
3
    delete[] b;
    delete[] d;
    delete[] key;
Yandex
Объявления
24.11.2013, 00:14     Нужно получить массив
Ответ Создать тему
Опции темы

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