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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nik_Bar
2 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 50
#1

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

23.11.2013, 22:19. Просмотров 350. Ответов 12
Метки нет (Все метки)

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

Массив: Получить массив из максимальных значений каждого из входных массивов. - C++
Найти максимальное значение в массиве. Результат операции – массив с максимальных значений каждого из входных массивов. Я нашёл...

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

Нужно записать массив в файл, а потом из этого файла считать этот же массив - C++
Помогите, пожалуйста, никогда с файлами делов не имела. Нужно записать массив в файл, а потом из этого файла считать этот же массив. ...

Массив: Получить массив, который содержит все элементы исходного массива, кратные трем - C++
Дан двумерный массив размером n*n, заполненный целыми числами. а) Все его элементы, кратные трем записать в одномерный массив. б) Все...

Задан массив и матрица, получить другой массив по правилу - C++
Здравствуйте,Помогите решить пожалуйста:swoon: Буду очень благодарен) Задан массив B=\left и матрица ...

Массив: Получить новый массив В по следующему правилу: В1=А1+А10 - C++
помогите пож-та.Дан массив А(10). Получить новый массив В по следующему правилу: В1=А1+А10 В2=А2+А9 и так далее. Вывести на экран ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 22:27 #2
2 массива d и r мы вводим с клавиатуры или указанны условием? Их размер фиксирован или задается в программе? Последний элемент массива key равен количеству четверок в массиве d, а элементы до него?
0
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
0
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 - массив, изначально заполненный нулями.
0
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;
}
0
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;
}
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 минуты


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

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

Добавлено через 1 минуту
Цитата Сообщение от Alex566 Посмотреть сообщение
Ну текст - это другой тип данных. Если вам нужно присвоить элементу массива текст то и массив должен быть текстовый а не целочисленный int как в данном случае. В C++ текст - это и есть массив из символов по этому чтобы создать массив из текста нужно создавать двумерный массив из символов.
А string и что-то в этом роде прописывать не надо? Можешь показать пример массива?
0
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"};
0
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 -..."
0
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 23:55 #12
Цитата Сообщение от Nik_Bar Посмотреть сообщение
И вот почему-то, когда я дописал программу, удалил твой добавленный вывод "key - ", начинаю компилировать, появляется окно, просит согласится или нет, я нажал yes, программу скомпилирвоал, ввожу значения, и в конце программа выдает твой вывод "key -..."
1. Я не знаю какую среду разработки вы используете. В Visual studio проблем никаких не испытываю.
2. Я не знаю содержимое окна.
3. Скорее всего при удалении была внесена какая-то ошибка и в окне вам было предложено запустить старый вариант до изменения.
0
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,818
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;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 00:14
Привет! Вот еще темы с ответами:

Нужно в массив А записать числители, а в массив В знаменатели - C++
Подскажите что не так! Вот файл Его содержимое : 3/4 5/18 6/3 9/4 2/3 12/7 6/9 12/16 9/10 1/5 Нужно в массив А записать...

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

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

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> - C++
Слова английского текста рассортировать по возрастанию количества заданной буквы в слове. Слова с одинаковым количеством такой буквы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.11.2013, 00:14
Ответ Создать тему
Опции темы

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