1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
1

Индекс массива символьного типа

01.12.2015, 00:50. Показов 1629. Ответов 20
Метки нет (Все метки)

Как создать массив, индекс которого будет символьного типа, то есть

C
1
2
a[первый]
a[второй]
и так далее...
И что бы была возможность задавать название индексов
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2015, 00:50
Ответы с готовыми решениями:

Взаимодействие символьного типа данных и оператора switch
Я занимался изучением директивы define и наткнулся на проблему: при вводе команды 'quit' или 'help'...

как записать в переменную символьного типа (думерный массив) несколько строк, после инициализации этой переменной?
как записать в переменную символьного типа (думерный массив) несколько строк, после инициализации...

Заполнение массива значениями из символьного массива
есть массив символов char z;есть целочисленный массив int b;каждый символ z это цифра 0-9 нужно в...

Сортировка символьного массива
Данная программа, по идее, должна сортировать символьный массив пузырьком. Но почему-то не...

20
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
01.12.2015, 06:04 2
C++
1
2
3
4
5
6
enum
{
one = 1,
two
....
}
0
9 / 8 / 9
Регистрация: 29.11.2015
Сообщений: 30
01.12.2015, 08:55 3
используй map

C++
1
2
3
4
5
6
7
#include<map>
#include<string>
using namespace std;
/*----------------------------------*/
map a<string,int>;
a["ваша строка"] = 8248;
/*----------------------------------*/
0
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
01.12.2015, 09:02 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <map>
#include <iostream>
 
using namespace std; 
 
int main()
{
  map<string,int> s;
  s["first"] = 1;
  s["two"] = 2;
 
  std::cout << s["first"] << '\n';
  
}
1
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 12:23  [ТС] 5
а как тогда записать циклом вывод массива?
0
9 / 8 / 9
Регистрация: 29.11.2015
Сообщений: 30
02.12.2015, 12:25 6
ну либо ты используешь перечисления как в первом ответе, либо обычную индексацию числами, по другому никак
0
2548 / 1207 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.12.2015, 12:29 7
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
#include <map>
#include <iostream>
 
using namespace std;
 
int main()
{
    typedef map<string, int> MyMap;
 
    MyMap s;
    s["first"] = 1;
    s["two"] = 2;
 
    
    // 1
    cout << endl << " --- 1 ---- " << endl;
    for(const auto& it : s)
    {
        cout << it.first.c_str() << " : " << it.second << endl;
    }
 
    // 2
    cout << endl << " --- 2 ---- " << endl;
    for(MyMap::iterator it = s.begin(); it != s.end(); ++it)
    {
        cout << it->first.c_str() << " : " << it->second << endl;
    }
 
}
1
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 12:55  [ТС] 8
Добавлено через 4 минуты
Т_И_М_У_Р,
а как тогда задавать не в самой программе а через консоль?

Добавлено через 2 минуты
rikimaru2013,
In function 'int main()':
[Error] range-based 'for' loops are not allowed in C++98 mode
[Error] request for member 'first' in 'it', which is of non-class type 'const int'
[Error] request for member 'second' in 'it', which is of non-class type 'const int'
0
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
02.12.2015, 12:56 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <map>
#include <iostream>
 
using namespace std;
 
int main()
{
  map<string,int> arr;
  arr["first"] = 1;
  arr["two"] = 2;
 
  map<string,int>::iterator it;
 
  for (it = arr.begin(); it!=arr.end(); it++){
    cout << it->first << " "; //cout << it->second << " ";
  }
 
}
0
2548 / 1207 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.12.2015, 13:11 10
Цитата Сообщение от reflection_mp3 Посмотреть сообщение
[Error] range-based 'for' loops are not allowed in C++98 mode
не читайте, что пишут в Error list там вечно какой-то бред. Ниразу не видел описании проблемы... Эх.
0
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 13:17  [ТС] 11
daslex,
error C2784: bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &): не удалось вывести аргумент шаблон для "const std::_Tree<_Traits> &" из "const std::string"
microsoft visual studio 10.0\vc\include\xtree(1885): см. объявление "std::operator <"
microsoft visual studio 10.0\vc\include\xfunctional(124): при компиляции функции-члена "bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const" класса шаблон
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,775
02.12.2015, 13:20 12
reflection_mp3, Забыли
C++
1
#include <string>
1
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 13:23  [ТС] 13
rikimaru2013,
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <map>
#include <iostream>
using namespace std;
int main()
{
* * typedef map<string, int> MyMap;
MyMap s;
* * s["first"] = 1;
* * s["two"] = 2;
// 1
* * cout << endl << " --- 1 ---- " << endl;
* * for(const auto& it : s)
* * {
* * * * cout << it.first.c_str() << " : " << it.second << endl;
* * }
// 2
* * cout << endl << " --- 2 ---- " << endl;
* * for(MyMap::iterator it = s.begin(); it != s.end(); ++it)
* * {
* * * * cout << it->first.c_str() << " : " << it->second << endl;
* * }
}

error C2143: синтаксическая ошибка: отсутствие "," перед ":"
error C2530: it: ссылки должны быть инициализированы
error C3531: it: символ, тип которого содержит спецификатор "auto" должен иметь инициализатор
error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
error C2228: выражение слева от ".first" должно представлять класс, структуру или объединение
error C2228: выражение слева от ".c_str" должно представлять класс, структуру или объединение
error C2228: выражение слева от ".second" должно представлять класс, структуру или объединение

Добавлено через 1 минуту
zss, спасибо
1
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,775
02.12.2015, 13:25 14
reflection_mp3, Ваш компилятор не поддерживает auto.
Используйте второй вариант - через итератор.
И вставьте, наконец, #include <string>
0
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 13:33  [ТС] 15
zss,

подскажите как сделать цикл для ввода индексов массива через консоль?

C++
1
2
3
4
5
6
7
8
9
10
map<string,int> arr;
  arr["Первый"] = 1;
  arr["Второй"] = 2;
  arr["Третий"] = 3;
 
  map<string,int>::iterator it;
 
  for (it = arr.begin(); it!=arr.end(); it++){
    cout <<"arr[" << it->first <<"]"<<endl; 
  }
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,775
02.12.2015, 13:49 16
reflection_mp3,а разве это не очевидно:
C++
1
2
3
4
5
cout<<"введите текст:";
string s;cin>>s;
cout<<"введите число:";
int n;cin>>n;
arr[s]=n;
1
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 14:07  [ТС] 17
zss,
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
cout<<"введите текст:";
string s;cin>>s;
cout<<"введите число:";
int n;cin>>n;
arr[s]=n;

Спасибо большое!

и последний вопрос)

например мне нужно удалить определенный элемент массива индекс которого нужно указать через консоль, а сам индекс я указываю символьного типа.
Как такое осуществить?
Заранее благодарен!
0
Модератор
Эксперт С++
12437 / 10003 / 6022
Регистрация: 18.12.2011
Сообщений: 26,775
02.12.2015, 14:18 18
C++
1
2
string  needdel="first";
arr.erase(needdel);
0
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 15:32  [ТС] 19
zss,

появился еще один вопрос....

при таком выводе
C++
1
2
3
  for (it = arr.begin(); it!=arr.end(); it++){
    cout <<"arr[" << it->first <<"]"<<endl; 
  }
выводит по алфавиту

то есть если введу
arr[b]=1
arr[a]=2
arr[c]=3
то при выводе получу
arr[a]=2
arr[b]=1
arr[c]=3

как убрать сортировку по алфавиту?!
0
9 / 8 / 9
Регистрация: 29.11.2015
Сообщений: 30
02.12.2015, 19:03 20
никак, <map> всегда сортирует свои элементы, это его специфика
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2015, 19:03
Помогаю со студенческими работами здесь

Обработка символьного массива
Итак, задание: Без использования конструкции string написать программу ввода и вывода необходимого...

Удалить * из символьного массива
Надо проверить текст из Edit1 и удалить из него * void __fastcall TForm1::Button1Click(TObject...

Сортировка символьного массива
Помогите пожалуйста написать прогу на C++!!! Нужно отортировать матрицу из симовлов по первому...

Размер символьного массива
Всех приветствую! Прошу простить, что тревожу столь банальными вопросами, но сам додумать не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru