| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Помогите найти ошибку. Указатели, Структура |
| Автор: Samuele 23.11.2010, 12:14 | ||
| В общем суть программы я думаю поймете из кода, если что-то будет не понятно конечно уточню. Беда в том что перечитал уже много тем и пару книжек по данной теме и вроде бы правильно все сделал, но как обычно это бывает на начальном уровне работает не верно. А точнее говорю вместе вводимых в струтуру данных выводится какая-то ерунда
заранее благодарю. |
| Автор: A5uKa 23.11.2010, 12:18 |
| struct cars Больше похожа на struct car , то есть немного не понимаю как вы тут хотите работать с массивом таких структур. хотя может конеяно это я чего-то не понимаю. Добавлено через 1 минуту и 20 секунд по крайней мере я в таких случаях использую векторы typedef std::vector<car*> cars; |
| Автор: Samuele 23.11.2010, 12:25 |
| а какая разница назвать структуру cars или car?? думаю это не столь принципиально..суть в том что мне через указатель надо заполнять массив типа car с его полями..надеюсь правильно и понятно все объяснил... |
| Автор: A5uKa 23.11.2010, 12:36 | ||
Разницы никакой ... Но твоя структура описывает одну машину. Это путает немного. а где у тебя массив типа кар ? cars *p_car = new cars [n]; - это я вообще, честно говоря, не знаю что такое. даже если сделать cars ** поучится своеобразный бред (хотя у меня были попытки), но всё же мне кажется векторы тут приминимы как минимум Добавлено через 2 минуты и 44 секунды Это ведь тупилдер ? |
| Автор: Samuele 23.11.2010, 12:39 |
| векторы мне не известны...и к ним пока не хочу прикасаться... cars *p_car= new cars [n]; //выделение динамической памяти под массив потому что я не знаю сколько машин будет описано в итоге. |
| Автор: Crafty 23.11.2010, 12:54 | ||||||
Что это за строчка такая
Должно быть так
Добавлено @ 12:56 ну и
А чтобы не было мусора используйте string, или если используете строки в стиле Си, то считывайте их через cin.get(p_car->year, 30); |
| Автор: Samuele 23.11.2010, 13:07 |
| Crafty, это для того что бы помнить начала динамического массива. вот в общем текст самой задачи... 6. Разработайте структуру под названием саr, в которой хранится следующая информация об автомобиле: его марка в виде строки в символьном массиве, а также год его выпуска в виде целого числа. Напишите программу, которая запрашивает пользователя, сколько автомашин следует ввести в каталог. Затем программа должна использовать метод new для создания нового динамического массива в соответствии с указанным количеством структур саr. Далее она должна выдать приглашение на ввод со стороны пользователя марки (которая может состоять из нескольких слов) и года выпуска автомашины для каждой структуры. Следует заметить, что этот процесс требует некоторого внимания, поскольку при этом поочередно осуществляется чтение строковых и числовых данных. И наконец, программа должна отображать содержимое каждой структуры. Результат выполнения такой программы должен выглядеть следующим образом: How many cars do you wish to catalog? 2 Car #1: Please enter the make: Hudson Hornet Please enter the year made: 1952 Car #2: Please enter the make: Kaiser Please enter the year made: 1951 Here is your collection: 1952 Hudson Hornetu 1951 Kaiser |
| Автор: Crafty 23.11.2010, 13:10 |
| это понятно, но почему ты хранишь его не в указателе? |
| Автор: Samuele 23.11.2010, 13:18 | ||
хорошо, исправил на
но это явно не конец моих мучений с этой прогой...я чувствую что где то допустил тупую ошибку но понять где опыта не хватает...(( |
| Автор: Crafty 23.11.2010, 13:37 | ||
Добавлено @ 13:38 Тут можно про ф-ции почитать http://www.cplusplus.com/reference/iostream/istream/ignore/ http://www.cplusplus.com/reference/iostream/istream/getline/ |
| Автор: Samuele 23.11.2010, 13:48 |
| может вопрос покажется странным...но вы пробовали у себя данный код? просто я его тупо скопипастил а толку ноль... |
| Автор: Crafty 23.11.2010, 13:58 | ||
| Samuele, да у меня работает всё, у вас просто компилятор старый. Добавлено через 1 минуту и 8 секунд как-то так в старом
|
| Автор: Samuele 23.11.2010, 14:06 |
| не думаю что CodeGear 2007 можно назвать старым компилятором)) спасибо за помощь. |
| Автор: Crafty 23.11.2010, 14:21 |
Можно если он не переваривает код последнего стандарта (2003 года). |
| Автор: Samuele 23.11.2010, 14:29 |
| код он переваривает, ошибок не выдает. но вот результат не верный выдает. и кто бы знал в чем причина... |
| Автор: Crafty 23.11.2010, 14:59 | ||
Вот так попробуйте
|