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

Обращение к элементу динамического массива структур

06.11.2013, 17:54. Показов 2401. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Само задание: http://cs412722.vk.me/v4127223... 3u2HDE.jpg
пока написал только это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
struct car
{
    char * nazvanie_proizvoditelya;
    int god_vipuska;
};
 
int main(void)
{
    int kol_vo_avto;
    cout << "Сколько автомобилей поместить в каталог? ";
    cin >> kol_vo_avto;
    car * avto = new car[kol_vo_avto];
    for (int i = 0; i<kol_vo_avto; i++)
    {
        cout << "Автомобиль #" << i+1 << ":\n" <<"Введите производителя: ";
        cin.getline(avto[i]->nazvanie_proizvoditelya);
        cout << "Укажите год выпуска: ";
        cin >> avto[i]->god_vipuska;
    };
    return 0;
}
проблемы со строками:
C++
1
2
cin.getline(avto[i]->nazvanie_proizvoditelya);
cin >> avto[i]->god_vipuska;
myfirst0.cpp:19:22: ошибка: base operand of «->» has non-pointer type «car»
Объясните, пожалуйста *_*
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2013, 17:54
Ответы с готовыми решениями:

Ошибка (access violation) при обращении к элементу динамического массива структур
Добрый день! Все прекрасно работает если в структуре статические массивы. Но так уж получилось, что есть необходимость задавать размерность...

Обращение к элементу списка структур
Привет всем! Начал изучать списки в С++. Создал список структур, но не знаю как правильно обращаться к n-му элементу структуры в списке....

Что быстрее? Обращение к элементу массива или к элементу структуры?
Обращение к элементу массива или к элементу структуры? Экспериментирую с кодом и получается примерно одинаково. Что интересно, время на...

5
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
06.11.2013, 17:59
nazvanie_proizvoditelya - это указатель на тип char. Чтобы этот указатель куда-то указывал, надо выделять память. все точно так же, как Вы делали для car * avto =....
1
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 18:02
C++
1
avto[i].god_vipuska
Добавлено через 1 минуту
и с памятью для nazvanie_proizvoditelya проблема, да. Для строк лучше подходит std::string
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.11.2013, 18:08
Kiyoshi,
Цитата Сообщение от Kiyoshi Посмотреть сообщение
char * nazvanie_proizvoditelya;
это только указатель. Для ввода с консоли это неудачная идея. Лучше импользовать std::string.
Но если хотите использовать указатель, то придётся повозиться. Можно принять ввод в временный буфер :
chat tmp_buf[256]={'\0'};//
забросить в него строку, получить ее длину strlen(tmp_buf), выделить память на единичку больше установив на неё указатель (если он указывает на что-то - освободить сначала, не забыть). Потом скопировать буфер по указателю... Написать конструкторы и деструктор с корректным выделением и освобождением, - само собой.
1
 Аватар для Kiyoshi
0 / 0 / 0
Регистрация: 04.11.2013
Сообщений: 6
06.11.2013, 18:14  [ТС]
Ммм.. а не подскажите тогда способ выделения памяти для "nazvanie_proizvoditelya"?

Цитата Сообщение от I.M. Посмотреть сообщение
Для строк лучше подходит std::string
Со стрингом действительно проще
Хочется потренироваться на чаре т.к. этот нюанс понял никак хуже.

Добавлено через 3 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
Kiyoshi,

это только указатель. Для ввода с консоли это неудачная идея. Лучше импользовать std::string.
Но если хотите использовать указатель, то придётся повозиться. Можно принять ввод в временный буфер :
chat tmp_buf[256]={'\0'};//
забросить в него строку, получить ее длину strlen(tmp_buf), выделить память на единичку больше установив на неё указатель (если он указывает на что-то - освободить сначала, не забыть). Потом скопировать буфер по указателю... Написать конструкторы и деструктор с корректным выделением и освобождением, - само собой.
О, нет. О буферах я пока не знаю.
Посижу пока ни стринге/массивах чара.
Благодарю за разъяснения
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.11.2013, 18:16
Цитата Сообщение от Kiyoshi Посмотреть сообщение
Хочется потренироваться на чаре
Дык... Лучше же тогда потренироваться просто написав свободную функцию, которая принимает ввод с консоли, выделяет и инициализирует... А потом уже - конструкторы, методы и пр. Это две разные темы.
ps буфер в данном раскладе, это массив char и всё. Если использовать strcpy она сама ноль в конце напишет, так что можно и не инициализировать вначале.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.11.2013, 18:16
Помогаю со студенческими работами здесь

Обращение к пустому элементу динамического массива
Здравствуйте меня интересует теоритический вопрос. Создавался динамический массив n*n. И всё вроде работало. Но мне понадобились...

Для динамического массива подсчитать количество его элементов, равных наименьшему элементу массива
Для динамического массива подсчитать количество его элементов, равных наименьшему элементу массива.

Обращение к элементу массива
Доброго вечера! Напомните, пожалуйста, как правильно обращаться к элементу массива ? Часть кода: for (I=0; I&lt;mas.get_size();...

Обращение к элементу массива
Есть массив, который приходит мне в формате json, как мне обратиться к примеру ко второму элементу, к полю name? &quot;games&quot;:

Обращение к элементу массива
Объясните пожалуйста, что происходит в строке помеченной *** void main(){ char str; char ptr; cin &gt;&gt; str; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru