Вопрос № 174438: Добрый день, уважаемые эксперты! Прошу у вас помощи в написании программы. определены следующие требования к программе: В ходе работы для всех вариантов необходимо написать подпрограмму создания в оперативной памяти связанного однона...
Вопрос № 174441: Здравствуйте эксперты, надо написать курсовую Все это могу спокойно написать на C++ Builder и писал уже не раз подобные вещи, но вот с VC 6 не могу разобрать что там и к чему, помогите по...
Вопрос № 174438:
Добрый день, уважаемые эксперты! Прошу у вас помощи в написании программы. определены следующие требования к программе: В ходе работы для всех вариантов необходимо написать подпрограмму создания в оперативной памяти связанного однонаправленного списка содержащего данные согласно варианта задания. В программах всех вариантов должна быть подпрограмма вывода на экран всего списка по адресу его первого элемента. Используя эту подпрограмму необходимо вывести в наглядной форме исходный
список (непосредственно после его создания) и список после модификации. Основное содержимое программы должно соответствовать варианту. Примечание: В конце программы необходимо освободить всю захваченную память. Задание заключается в следующем: В элементе списка содержатся данные о ноутбуке-наименование,цена,тактовая частота,размер ОП.Удалить из списка элемент с максимальной ценой. Я написал программу, но она выводит список не в том порядке, в како
м я заносил данные.и не получается удалить требуемый элемент.ПОМОГИТЕ!
//
Оператор вывода для class nout template<class Elem,class Traits> std::basic_ostream<Elem,Traits>& operator<<(std::basic_ostream<Elem,Traits>& stream,const nout& right) { stream<<"\""<<right.name()<<"\"("<<right.price()<<"$,"<<right.frequency()<<"GHz,"<<right.memory()<<"Mb)"; return stream; } // Оператор вывода для template<> class list<Ty> template<class Ty,class Elem,class Traits> std::basic_ostre
am<Elem,Traits>& operator<<(std::basic_ostream<Elem,Traits>& stream,const list<Ty>& right) { const node<Ty>* nodePtr=right.begin(); while (nodePtr) { stream<<nodePtr->data()<<std::endl; nodePtr=right.next(nodePtr); } return stream; }
// Ф-я для ввода различных данных template<class Ty> Ty input(std::string message) { while (true) { std::cout<<message; Ty result;
std::cin>>result; if (std::cin.fail()) { std::cout<<"Ошибочный ввод"<<std::endl; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); } else { std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); return result; } } }
// Меню int menu() { while (true) {
std::cout<<"----------------------------------------------------"<<std::endl <<"Сделайте выбор:"<<std::endl <<"1-Ввод списка"<<std::endl <<"2-Вывод списка на экран"<<std::endl <<"3-Удаление элемента с максимальной ценой"<<std::endl <<"0-Выход"<<std::endl <<"Ваш выбор:";
char choice; std::cin.get(choice); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); switch (choice) { case '0': case '1': case '2': case '3': return choice-'0'; default: std::cout<<"Будьте внимательней"<<std::endl; } } }
typedef list<nout> noutList;
//
Добавляет элементы в список void addInList(noutList& lst) { while (true) { std::cout<<"Наименование модели(пустая строка для завершения):"; std::string name; std::getline(std::cin,name); if (name.empty()) { return; } double price=input<double>("Цена:"); double freq=input<double>("Частота процессора(GHz):"); size_t mem=input<size_t>("Объем памяти:"); lst.add_last(nout(name,price,freq,mem));
} }
// Удаляет элемент с максимальной ценой void removeMaxPrice(noutList& lst) { if (lst.count()) { const noutList::node_type* cur=lst.begin(); const noutList::node_type* max=cur; while (cur) { if (max->
;data().price()<cur->data().price()) { max=cur; } cur=lst.next(cur); } lst.remove(max); } else { std::cout<<"Список не содержит элементов"<<std::endl; } }
int main(int argc, char **argv) { noutList lst; while (true) { switch (menu()) { case 0: return 0; case 1: addInList(lst); break; case 2: printList(lst);
break; case 3: removeMaxPrice(lst); break; } } }
Пример вывода:
Код:
micren@localhost:~/projects/174438/build> ./174438
---------------------------------------------------- Сдела
йте выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход
Ваш выбор:1 Наименование модели(пустая строка для завершения):Acer Aspire One D250-0Bp Цена:367 Частота процессора(
GHz):1.6 Объем памяти:1024 Наименование модели(пустая строка для завершения):ASUS Eee PC 701 4G Цена:244 Частота процессора(GHz):0.9
Объем памяти:512 Наименование модели(пустая строка для завершения):ASUS K50C Цена:495 Частота процессора(GHz):1.2
Объем памяти:4096 Наименование модели(пустая строка для завершения):HP Presario CQ60-211 Цена:500 Частота процессора(GHz):2.167
Объем памяти:2048 Наименование модели(пустая строка для завершения):Lenovo IdeaPad S10 plus2 Цена:409 Частота процессора(GHz):1.66
Объем памяти:1024 Наименование модели(пустая строка для завершения): ---------------------------------------------------- Сделайте выбор:
1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход
Ваш выбор:2
Наш список: "Acer Aspire One D250-0Bp"(367$,1.6GHz,1024Mb) "ASUS Eee PC 701 4G"(244$,0.9GHz,512Mb) "ASUS K50C"(495$,1.2GHz,4096Mb)
"HP Presario CQ60-211"(500$,2.167GHz,2048Mb) "Lenovo IdeaPad S10 plus2"(409$,1.66GHz,1024Mb) ---------------------------------------------------- Сделайте выбор:
1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход
Ваш выбор:3 ---------------------------------------------------- Сделайте выбор: 1-Ввод списка
2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:2
Наш список: "Acer Aspire One D250-0Bp"(367$,1.6GHz,1024Mb) "ASUS Eee PC 701 4G"(244$,0.9GHz,512Mb) "ASUS K50C"(495$,1.2GHz,4096Mb)
"Lenovo IdeaPad S10 plus2"(409$,1.66GHz,1024Mb) ---------------------------------------------------- Сделайте выбор: 1-Ввод списка
2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:3
----------------------------------------------------
Сделайте выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой
0-Выход Ваш выбор:2 Наш список: "Acer Aspire One D250-0Bp"(367$,1.6GHz,1024Mb)
"ASUS Eee PC 701 4G"(244$,0.9GHz,512Mb) "Lenovo IdeaPad S10 plus2"(409$,1.66GHz,1024Mb) ---------------------------------------------------- Сделайте выбор:
1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход
Ваш выбор:3 ---------------------------------------------------- Сделайте выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:2 Наш список: "Acer Aspire One D250-0Bp"(367$,1.6GHz,1024Mb) "ASUS Eee PC 701 4G"(244$,0.9GHz,512Mb) ---------------------------------------------------- Сделайте
выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:3 ---------------------------------------------------- Сделайте выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:2 Наш список: "ASUS Eee PC 701 4G"(244$,0.9GHz,512Mb) --------------------------------
-------------------- Сделайте выбор: 1-Ввод списка 2-Вывод списка на экран 3-Удаление элемента с максимальной ценой 0-Выход Ваш выбор:0 micren@localhost:~/projects/174438/build>
Ответ отправил: Micren, Бакалавр
Ответ отправлен: 22.11.2009, 19:00
Оценка ответа: 5 Комментарий к оценке: Просто на отлично!Не ожидал, что так быстро ответ будет.
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256814
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 174441:
Здравствуйте эксперты, надо написать курсовую Все это могу спокойно написать на C++ Builder и писал уже не раз подобные вещи, но вот с VC 6 не могу разобрать что там и к чему, помогите пожалуйста адаптироваться, я не надеюсь что это не сложно. Заранее спасибо
Отвечает Dr_Andrew, Старший модератор :
Здравствуйте, Tribak. Если в Borland C++ Builder графический интерфейс пользователя строится с помощью "обёртки" над WinAPI, классов VCL, то в MS Visual C++ 6 - с помощью MFC. Следовательно, Вам сюда: MFC шаг за шагом.
Ответ отправил: Dr_Andrew, Старший модератор
Ответ отправлен: 24.11.2009, 08:43 Казахстан, Алма-Ата Организация: Казахский научный центр карантинных и зоонозных инфекций Адрес сайта:Медицинские программы для Linux ICQ # 256452186
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256886
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.