Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как ввести данные в динамический массив структур? 
:(
    Опции темы
dapto
Дата 30.4.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.4.2010

Репутация: нет
Всего: нет



Подскажите пожалуйста, можно ли вводить данные в динамический массив структур c помощью cin >> следующим образом:

Код

#include <iostream>
using namespace std;
const int Arsize = 20;

struct sponsor 
{
    char name[Arsize];
    double money;
};

int main()
{
    int number;
    cout << "Введите количество спонсоров: ";
    cin >> number;
    sponsor *pt = new sponsor[number];
sponsor one =
{
   cin.get(pt[0]->name, Arsize),
   cin >> pt[0]->money
};


А если нельзя. то как это можно сделать? 

PM MAIL   Вверх
Ozerich
Дата 30.4.2010, 22:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



Код

#include <iostream>
using namespace std;
const int Arsize = 20;
struct sponsor 
{
    char name[Arsize];
    double money;
};
int main()
{
    int number;
    cout << "Введите количество спонсоров: ";
    cin >> number;
    sponsor *pt = new sponsor[number];
    for(int i = 0; i < number; i++)
        cin >> pt[i].name >> pt[i].money;
    return 0;
};

--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
dapto
Дата 30.4.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.4.2010

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
ИванМ
Дата 1.5.2010, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



dapto, грамотнее перегрузить оператор >> для данной структуры.
PM MAIL   Вверх
mes
Дата 1.5.2010, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(ИванМ @  30.4.2010,  23:00 Найти цитируемый пост)
грамотнее перегрузить оператор >> 

не совсем так.. мож оператор >> и нужен, но только не для ввода информации в удобном для пользователя виде,
как в примере :
Цитата(Ozerich @  30.4.2010,  21:41 Найти цитируемый пост)
 cout << "Введите количество спонсоров: ";



Это сообщение отредактировал(а) mes - 1.5.2010, 02:49


--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



mes

так количество спонсоров нужно только для выделения памяти? и никак к перегрузке >> не относится или как...
Код

cout << "Введите количество спонсоров: ";
cin >> number;
sponsor *pt = new sponsor[number];


А удобства можно в функции самой сделать..
PM MAIL   Вверх
mes
Дата 1.5.2010, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  00:55 Найти цитируемый пост)
так количество спонсоров нужно только для выделения памяти? и никак к перегрузке >> не относится или как...

сорри, я даже не читал, ни код, ни то что в кавычках написано.. ориентировался на интуцию.. 
в любом случае основная часть цитаты верна :

Цитата(mes @  1.5.2010,  00:43 Найти цитируемый пост)
. мож оператор >> и нужен, но только не для ввода информации в удобном для пользователя виде

а там напрашивается именно удобный для пользователя вид smile

Добавлено @ 02:48
Цитата(toxx @  1.5.2010,  00:55 Найти цитируемый пост)

А удобства можно в функции самой сделать.. 


в самой функции,  это в операторе >> ? 

Это сообщение отредактировал(а) mes - 1.5.2010, 02:53


--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

в самой функции,  это в операторе >> ? 

ага, ну что-то типа такого я имел ввиду =)

Код

cout<<"Имя спонсора "<<endl;
stream>>sponsor.name;
cout<<"Деньги его "<<endl;
stream>>sponsor.money;


Добавлено @ 03:08
думал я один не сплю тут=)

Это сообщение отредактировал(а) toxx - 1.5.2010, 03:09
PM MAIL   Вверх
mes
Дата 1.5.2010, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  02:07 Найти цитируемый пост)
ну что-то типа такого я имел ввиду

ну так о том речь, что, как минимум, использовать  cout в >> некрасиво..
 хотя это лишь проявление,а причина зарыта несколько глубже..



--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



mes
Ну по моему мнению так в структуре с таким кол-вом данных вообще ненужно ничего перегружать. 
Преподаватели не смотрят на красоту ввода/вывода, им главное научить пользоваться структурами поэтому думаю простой cin>> cout<< подойдет тут =)
Но знать, что такое возможно думаю нужно...
PM MAIL   Вверх
mes
Дата 1.5.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  02:34 Найти цитируемый пост)
mes
Ну по моему мнению так в структуре с таким кол-вом данных вообще ненужно ничего перегружать. 

1. для перегрузки оператора >> не нужно  перегружать его внутри структуры. лучше делать его как свободную функцию.
2. количество данных не характеризует нужность перегрузки

Цитата(toxx @  1.5.2010,  02:34 Найти цитируемый пост)
Преподаватели не смотрят на красоту ввода/вывода

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

Цитата(toxx @  1.5.2010,  02:34 Найти цитируемый пост)
Но знать, что такое возможно думаю нужно... 

вот поэтому и обсуждаем 
smile


--------------------
PM MAIL WWW   Вверх
ИванМ
Дата 3.5.2010, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(mes @  1.5.2010,  03:14 Найти цитируемый пост)
ну так о том речь, что, как минимум, использовать  cout в >> некрасиво..
 хотя это лишь проявление,а причина зарыта несколько глубже..

Можете объяснить в чем зарыта причина? Я лично иногда использую cout внутри >>. Причина в том, что cout может быть не только вводом с клавиатуры, а и еще вводом из другого источника?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.