[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!



Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 16 | 1 | 8
Назад Вниз Каталог Обновить

Чтение массива абстрактных объектов из файла Аноним 14/12/16 Срд 03:31:29  894000  
147369781216838[...].jpg (128Кб, 1600x1048)
Здравствуйте, к вам пришла студентота которая делает лабы за деньги людям из других универов и у неё (меня) проблемы надеюсь сосач их решит

Задача:
Абстрактный класс Person,
потомки Student, Teacher, Applicant
в Person объявлены три поля - имя, дата рождения, факультет
в Teacher два поля - стаж и должность,
в Student одно - курс,
в Applicant дополнительных полей не объявляется.

Насколько я понял, экземпляр Teacher к примеру будет содержать пять полей - три из класса Person и два своих.
Задача стоит реализовать чтение из файла массива структур, я не вполне понимаю как выделять под это память.
В файле формат записи таков - пять строк (по числу максимального количества полей), пустая строка, следующие пять строк (следующая запись). Если на месте одной из записей к примеру данные объекта класса Applicant, то у него три поля заполнены, а еще два являются строками "n/a".

Варианты решения:

1) Выделить память под массив Person. Код отказывается собираться, т.к. родительский класс не содержит некоторых полей потомков (ну когда я пытаюсь записать значение курса в поле объекта Person, оказывается что оно необязательно там будет).

2) Выделить память под массив Teacher. Должно работать, но вроде бы так неправильно.

3) Я не понял, как это должно работать, вот код, найденный в гугле:
>Teacher[] arrPtr = new Person[allocCnt]
>{
>new Student(),
>new Applicant(),
>new Teacher()
> };

Не компилируется поскольку allocCnt должна быть константой (у меня это счетчик, в который заносится информация о количестве записей в файле, ну один проход по файлу чтобы посчитать строки, второй чтобы позаносить в созданный массив данные)

4) Считать отдельно количество записей каждого дочернего класса, заведя три счетчика, и выделить три массива. Так данные перемешиваются в памяти относительно того что было в файле а еще это муторно работать с тремя массивами. Хочется сделать красиво, а дедлайн был вчера вечером близок.

Как сделать задачу "правильно"? Есть ли варианты? В какую сторону копать?
Аноним 14/12/16 Срд 03:36:02  894002
Забыл сказать, на чем все это делается - C#.
Аноним 14/12/16 Срд 10:15:17  894062
>>894000 (OP)
Сделаю за $100.
Аноним 14/12/16 Срд 11:09:05  894074
Зачем берешь раз не умеешь? Person[] arr = new Person[<забронированное место>] теперь в arr ты можешь добавлять любой класс-потомок Person'a. Но лучше используй списки, так как не знаешь сколько объектов в файле.
Аноним 14/12/16 Срд 14:15:39  894174
>>894062
Не слушай его, сделаю за 85$.
Аноним 14/12/16 Срд 16:33:58  894231
>>894174
Акция, специальная цена, действует час: 84,95
Аноним 14/12/16 Срд 23:12:33  894421
>>894074
Вот именно что я НЕ могу добавлять в arr любой потомок. Ошибка на этапе компиляции, мол в классе Person не объявлено одно из полей потомка, с которым я пытаюсь где-то в цикле работать.
Аноним 15/12/16 Чтв 01:20:45  894485
>>894421
Лолка, конечно так нельзя. У Person нет поля, ты сначала должен привести к нужному типу и тогда использовать.
Аноним 15/12/16 Чтв 01:30:29  894488
Пиздец блядь, это хуйло еще и бабки берет за "выполнение" лаб.
Аноним 15/12/16 Чтв 02:07:12  894503
>>894485
Большое спасибо, привел к потомку и все заработало.
Аноним 15/12/16 Чтв 02:08:04  894505
>>894488
За что хочу за то бабки и беру, законом не запрещено, а ещё это на 20% круче чем называть человека в интернетах хуйлом, хуйло.
Аноним 15/12/16 Чтв 05:04:27  894525
http://pastebin.com/w2guB5D0

Что-то у меня не получается. "Ссылка на объект не указывает на экземпляр объекта" при попытке записывать в массив объектов. Попробовал создавать массив Teacher - всё то же самое.
Аноним 15/12/16 Чтв 06:17:46  894529
Очень здравая идея насчет списков, но по словам заказчика сделать нужно используя массивы.
Аноним 15/12/16 Чтв 09:51:58  894552
>>894000 (OP)
Лол и такой жалкий мусор как ты умудряется наебывать людей на бабло? Еще и местную школоту хочешь прокинуть?
Ты охуенен, парень.
Аноним 15/12/16 Чтв 15:07:12  894683
>>894552
Не знаю где тут наебка, я морочу себе голову вместо заказчика, решая его задачу, вот и все.
В общем разобрался я что к чему, местной школоте тоже спасибо, но если бы даже тут мне подсказали как надо, разве это было бы "прокинуть"? Хз почему у тебя с меня так бомбит.
Аноним 15/12/16 Чтв 15:29:24  894700
В общем нихуя я не разобрался и тот код по-прежнему не работает.
Аноним 15/12/16 Чтв 15:52:58  894707
http://pastebin.com/4K0VRLsb
А вот этот работает. Интересно, каким образом new выделяет память для массива arrPtr? Пусть это будет черная магия.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 16 | 1 | 8
Назад Вверх Каталог Обновить

Топ тредов
Избранное