Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109

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

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

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

C
1
2
a[первый]
a[второй]
и так далее...
И что бы была возможность задавать название индексов
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2015, 00:50
Ответы с готовыми решениями:

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

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

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

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

C++
1
2
3
4
5
6
7
#include<map>
#include<string>
using namespace std;
/*----------------------------------*/
map a<string,int>;
a["ваша строка"] = 8248;
/*----------------------------------*/
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
01.12.2015, 09:02
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  [ТС]
а как тогда записать циклом вывод массива?
0
9 / 8 / 9
Регистрация: 29.11.2015
Сообщений: 30
02.12.2015, 12:25
ну либо ты используешь перечисления как в первом ответе, либо обычную индексацию числами, по другому никак
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.12.2015, 12:29
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  [ТС]
Добавлено через 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
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
02.12.2015, 12:56
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
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
02.12.2015, 13:11
Цитата Сообщение от 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  [ТС]
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
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
02.12.2015, 13:20
reflection_mp3, Забыли
C++
1
#include <string>
1
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 13:23  [ТС]
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
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
02.12.2015, 13:25
reflection_mp3, Ваш компилятор не поддерживает auto.
Используйте второй вариант - через итератор.
И вставьте, наконец, #include <string>
0
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 13:33  [ТС]
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
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
02.12.2015, 13:49
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  [ТС]
zss,
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
cout<<"введите текст:";
string s;cin>>s;
cout<<"введите число:";
int n;cin>>n;
arr[s]=n;

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

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

например мне нужно удалить определенный элемент массива индекс которого нужно указать через консоль, а сам индекс я указываю символьного типа.
Как такое осуществить?
Заранее благодарен!
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,245
02.12.2015, 14:18
C++
1
2
string  needdel="first";
arr.erase(needdel);
0
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 109
02.12.2015, 15:32  [ТС]
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
никак, <map> всегда сортирует свои элементы, это его специфика
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2015, 19:03
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru