Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2018, 18:45   #1
Yudin
Пользователь
 
Регистрация: 11.01.2018
Сообщений: 49
По умолчанию Как в один элемент массива char записать несколько букв?

Задача состоит в создании массива, который будет хранить название витаминов.

Если название витамина состоит из одной буквы, то проблемы нет:
char vitamins[20];
for (int i = 0; i < 20; i++)
cin >> vitamins[i];

А что делать, если витамин называется "PP" или "B1", как тогда создавать массив? Возможно ли задать размерность одному элементу массива?
Через строки нельзя, т.к. в дальнейшем надо будет выводить продукты, которые содержат витамины введенные пользователем (работа с массивами char).
Yudin вне форума Ответить с цитированием
Старый 02.04.2018, 19:36   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Yudin Посмотреть сообщение
в дальнейшем надо будет выводить продукты, которые содержат витамины введенные пользователем
И что?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.04.2018, 19:42   #3
Yudin
Пользователь
 
Регистрация: 11.01.2018
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И что?
Ну если я в строку введу A B C D и скажу, что это витамины допустим яблока, а пользователь потом введет C D A B, ему ведь не выдаст, что это яблоко
Yudin вне форума Ответить с цитированием
Старый 02.04.2018, 19:52   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А если без строк, то выдаст?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.04.2018, 20:07   #5
Yudin
Пользователь
 
Регистрация: 11.01.2018
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А если без строк, то выдаст?
Если массивом чар, то выдаст. Но я не могу заполнить массив элементами, которые состоят из двух символов (BB, B1)
Yudin вне форума Ответить с цитированием
Старый 02.04.2018, 20:16   #6
Yudin
Пользователь
 
Регистрация: 11.01.2018
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А если без строк, то выдаст?
Мне надо предварительно создать массивы, которые хранят витамины допустим трех продуктов. Например яблоко - А, Б, С, Д, картошка - С, Е, яйцо - С, Д. У меня вообще по условию витамины типа PP, B1, я из-за этого и спрашиваю как записать в один элемент несколько символов. Вот, а потом пользователь должен ввести любые витамины, и ему выдает продукты, содержащие эти витамины. Например, пользователь ввел витамины Д, С. Компилятор функциями сверяет массивы и выдает "яблоко" и "яйцо". Из-за этого я и не использую строки. У меня так-то задача получается, но как создать витамины типа B1, PP я не знаю.
Yudin вне форума Ответить с цитированием
Старый 02.04.2018, 20:19   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что вы с ним такое сделаете, что выдаст?

"два символа" это внезапно и есть строка.

У std::string есть функция для поиска символа.

Ну или более эффективные std::set/std::unordered_set, но для нескольких символов вряд ли есть смысл.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.04.2018, 20:31   #8
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

ТС, это делается через индексы.

char vitamins[n][5] = {"A", "B1", и другие};

А запоминаешь индексы для этого массива в другом массиве.

Если надо вывести, просто берёшь индексы и обращением к массиву получаешь нужные строчки.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 02.04.2018, 20:34   #9
Yudin
Пользователь
 
Регистрация: 11.01.2018
Сообщений: 49
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
ТС, это делается через индексы.

char vitamins[n][5] = {"A", "B1", и другие};

А запоминаешь индексы для этого массива в другом массиве.

Если надо вывести, просто берёшь индексы и обращением к массиву получаешь нужные строчки.
Да, хороший способ. Но я не могу заранее записать в код какие витамины будут в массиве, потому что они вводятся через cin.
Yudin вне форума Ответить с цитированием
Старый 02.04.2018, 21:18   #10
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Почему не можешь?

Код:
char vitamins[100][5];
for (i =0; i<n; ++i)
   std::cin>>vitamins[i];
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1. Задан двумерный целочисленный массив Х(6,6). Найти минимальный элемент каждой строки и максимальный элемент каждого столбца массива и записать их в одномерный массив А. Greeb S Фриланс 5 15.12.2016 10:48
Записать элементы массива X, удовлетворяющие условию Х[12], подряд в массив Y =. Определить минимальный элемент массива X. полин@ Общие вопросы C/C++ 0 03.10.2016 14:37
Как преобразовать элемент массива типа char в int? neonakaneya Общие вопросы C/C++ 20 04.01.2012 20:28
Записать несколько одинаковых типов в один файл Человек_Борща Общие вопросы Delphi 7 21.12.2010 22:39
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24