|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.08.2014, 20:42 | #11 | ||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Stilet, Цитата:
Последний раз редактировалось rrrFer; 28.08.2014 в 20:50. |
||
28.08.2014, 20:45 | #12 | |
Пользователь
Регистрация: 09.10.2011
Сообщений: 11
|
Цитата:
есть какие предположения, что нужно сделать для работоспособности данного кода? Последний раз редактировалось Stilet; 28.08.2014 в 21:56. |
|
28.08.2014, 20:55 | #13 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
GooderSteel
Если хочешь что-нибудь добавить к сообщению - используй кнопку "Edit" в сообщении, а не пиши новое. Тут сообщения не объединятся, модераторы ругаются. Цитата:
get считает символ перевода строки, а getline считает следующую строку. Все это не сработает если ты введешь 2 символа перевода строки подряд - если очень надо - вызывай cin.peek() и cin.get() в цикле до тех пор пока peek не вернет не пробельный символ. Что за задачу вообще решаешь? - мне код не нравится, я наверное решал бы иначе. Не проверял, но примерно так: Код:
|
|
28.08.2014, 21:14 | #14 |
Пользователь
Регистрация: 09.10.2011
Сообщений: 11
|
Да, спасибо) вставил функцию cin.get(); и вроде программа перестала перескакивать) Задача имеет следующий вид, если сильно интересно: Создайте класс employee, который содержит имя(объект класса string) и номер (типа long) служащего. Включите в него метод getdata(), предназначенный для получения данных от пользователя и помещения их в объект, и метод putdata(), для вывода данных. Предполагаем, что имя может иметь внутренние пробелы.
Напишите функцию main(), использующую этот класс. Вам нужно будет создать массив типа employee, а затем предложить пользователю ввести данные до 100 служащих. Наконец, вам нужно будет вывести данные всех служащих. Получилось следующее: Код:
Последний раз редактировалось GooderSteel; 28.08.2014 в 21:28. |
28.08.2014, 21:36 | #15 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Не знаю где ты взял это задание, но оно плохое.
Классы, как и любые другие штуки должны иметь как можно меньше побочных эффектов. Ввод данных с клавы - это побочный эффект (данные из буфера клавиатуры исчезают). Тестировать код с побочными эффектами очень тяжело. Классы должны как можно меньше работать с девайсами (типа клавиатуры). Классу служащего должно быть глубоко фиолетово откуда поступают данные- с файла, с клавы, из сети, или через микрофон или.... Он не должен работать с клавиатурой. Метод getdata НЕ должен получать данные, а должен их возвращать. Когда я вызываю метод getdata я ожидаю что объект ОТДАСТ мне данные. Ввод данных в твоем случае должен находиться в main(). Конструктор служащего должен принимать имя и номер (ну я так думаю, ты не должен иметь возможность создать безымянного служащего, иначе это чем-то грозит). Ну если очень хочется - можешь добавить методы rename и changeId. А еще методы getId и getName, которые возвращают имя и id соотвественно. Ну это я типа новую задачу тебе придумал )) ------------ Простой пример. Прикинь, если у тебя где-то будет набор сотрудников и программа должна будет следить за тем, чтобы не появилось 2 сотрудника с одинаковым номером? - твой код нельзя будет номрально поправить, а требование весьма логичное. Почему твой код этого не может? - да птамушта сотрудник НЕ должен сам проверять свой номер. Если внезапно предъявляется требование к уникальности номера - то в проверкой номеров должен заниматься другой объект. Оно и в жизни так. Ты приходишь в ГИБДД и не сам придумываешь уникальный номер, а тебе его присваивает специально обученный сотрудник )) Короче не надо на сотрудника навешивать придумывание (ввод) номера. Последний раз редактировалось rrrFer; 28.08.2014 в 21:40. |
28.08.2014, 22:23 | #16 |
Пользователь
Регистрация: 09.10.2011
Сообщений: 11
|
Ну это же задание для новичков) Взял я его из книги "Объектно-ориентированное программирование в С++" Р. Лафоре.. насколько мне известно, по этой книге программистов в университете обучают..) сейчас всего лишь прочитана 1/3 всей книжки я еще только что познакомился с классами.. а здесь не задал конструктор, так как просто не уследил) в этой главе рассказывалось про массивы, как строковые, так и обычные.. Я-то просто в свое время в универе выучился на инженера-радиотехника(собственно им и работаю), пишу немного другие программки для микроконтроллеров и ПЛИС. А все что касается более углубленного в компьютер я не шибко знаю, поэтому решил выполнить абсолютно все упражнения из книги сам и прочитать ее абсолютно полностью.. для меня тут в каждой главе много нового.. я у себя на работе подобное не применяю за ненадобностью) Да и работаю я там в основном с "параллельными" языками программирования..(С++ является последовательным). Поэтому, конечно, могу на данный момент писать всяческие глупости) Но вроде как в конце книги все будет рассказано более подробно, как можно и нужно применять классы..)
Может после того, как прочитаю книжку, смогу найти применение своим знаниям и на работе) Правда у нас там не сильно нужны настолько сложные языки..пока вроде как обычного С хватало.. Ну а для программирования на ПЛИС, наверное, самым лучшим языком является System Verilog..(собственно там на С++ уже совсем ничего толком написать нельзя, только если на микроконтроллерах). Последний раз редактировалось GooderSteel; 28.08.2014 в 22:32. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
функция счётесли работает некорректно | Pavelasd | Microsoft Office Excel | 2 | 04.05.2014 02:05 |
Функция ВПР работает некорректно | Витальян | Microsoft Office Excel | 4 | 06.12.2013 00:20 |
Не работает с первого раза getline | AxenicX | Помощь студентам | 2 | 28.11.2009 23:43 |
Функция С++ getline() | Golovastik | Общие вопросы C/C++ | 8 | 30.07.2009 00:20 |