Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Alexandr A. Rakunov
Статус: 8-й класс
Рейтинг: 83
∙ повысить рейтинг >>
realbustard
Статус: 6-й класс
Рейтинг: 65
∙ повысить рейтинг >>
Verena
Статус: Практикант
Рейтинг: 64
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1155
от 09.11.2008, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 426, Экспертов: 42
В номере:Вопросов: 4, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 149367: Здравствуйте уважаемые эксперты! Помогите пожалуйста решить задачу на С: <b>Разработать программу формирования стека с последующим его преобразованием в двунаправленную очередь.</b> Заранее благодарен....


Вопрос № 149428: Здраствуйте уважаемые господа эксперты! Помогите пожайлуста в написании программы: 1. Имеется файл «Продажа квартир», содержащий адрес, тип дома и число комнат. В режиме диалога с ЭВМ покупатель вводит тип дома и число комнат. Необходимо вывес...
Вопрос № 149439: Здравствуйте уважаемые эксперты. Я только начинаю изучать C++ Builder... Проблема в следующем - имеется строка AnsiString. Нужно из этой строки в формате AnsiString скопировать подстроку. Тыкните пожалуйста в функцию. Всем ответившим заран...
Вопрос № 149442: Добрый день уважаемые эксперты. Помогите пожалуйст а решить такую задачу: объект класса CMap заполняется объектами CString в качестве ключей и пользовательскими объектами MyClass в качестве значений. Для этого я использую CMapStringToPtr. CMapS...

Вопрос № 149.367
Здравствуйте уважаемые эксперты!
Помогите пожалуйста решить задачу на С:
Разработать программу формирования стека с последующим его преобразованием в двунаправленную очередь.
Заранее благодарен.
Отправлен: 03.11.2008, 13:05
Вопрос задал: михайлов, александр, витальевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Arct
Здравствуйте, михайлов, александр, витальевич!
В чем проблема Александр?
Базовые понятия:
Стек:
Можно представить как калоду карт т.е.
Кладём карту, поверх неё ещё и ещё - это мы помещаем некие данные в стек
Если нужно взять данные, мы берем верхнюю карту...
Так называемый принцип FIFO - первым вошёл - последним вышел.
Очередь(однонаправленная):
Реализует другой принцип, Первым вошёл, первым вышел.
Можно представить себе очередь как ту-же колоду карт, только если надо взять данные берем, не верхнюю карту а нижнюю.

Если этой информации мало, извеняйте. Как задан вопрос...
Уточните данные, какой тип данных используется?
int? double? char?
Размер предпологаемого стекаочереди(хотя это не так важно)
Каким образом преобрзовывать?
Ответ отправил: Arct (статус: 1-й класс)
Ответ отправлен: 04.11.2008, 00:16

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 149367 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 149.428
    Здраствуйте уважаемые господа эксперты!
    Помогите пожайлуста в написании программы:
    1. Имеется файл «Продажа квартир», содержащий адрес, тип дома и число комнат. В режиме диалога с ЭВМ покупатель вводит тип дома и число комнат. Необходимо вывести на экран дисплея адреса трех квартир данного типа, цена на которые минимальна.
    Отправлен: 04.11.2008, 09:06
    Вопрос задал: Dragonlio (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Dr_Andrew
    Здравствуйте, Dragonlio!
    Вашу задачу можно разбить на три этапа: 1) Написание класса, где будет храниться информация о конкретном доме; 2) Написание синтаксического анализатора, который будет разбирать строки, загруженные из файла и 3) Выбор домов на основании данных, введённых пользователем, и сортировка их по цене.

    1) Объявим класс THouse (см. файлы THouse.h и THouse.cpp); для упрощения задачи объявим все члены класса открытыми (public). Для хранения информации о типе дома объявим перечислимый тип: enum THouseType {UnknownType = 0, CottageType = 1, MultistoriedType = 2};
    Соответственно, класс THouse будет содержать следующие члены:
    string sAddress; // Строка для хранения адреса
    THouseType htHouse; // Тип дома
    short nFlatsNumber; // Число комнат
    unsigned int uiPrice; // Цена дома

    2) Объявим класс синтаксического анализатора THouseParser (см. файлы THouseParser.h и THouseParser.cpp), который в качестве члена будет содержать вект ор строк для хранения информции из файла: vector<string> sStrings;
    Предполагается, что файл будет следующего типа: информация о каждом доме содержится в отдельной строке; пустых строк нет; разделительным символом, отграничивающим значащие части (адрес, тип дома, число комнат, цена) является символ табуляции.
    Кроме того, класс содержит следующие функции-члены:
    bool bLoadStrings(string); // Загружает строки из файла и сохраняет их в векторе sStrings; в качестве аргумента принимает путь к файлу.
    THouse ParseString(int); // Функция, проводящая собственно синтаксический разбор строки с заданным номером, который принимает как аргумент.
    Последняя функция возвращает объект класса THouse, значения членов которого присвоены на основании синтаксического разбора строки

    3) Реализация основой логики работы программы отражена в файле main.cpp. Объект класса THouseParser пытается загрузить файл и, если это не удаётся, то программа завершает работу:
    Код:

    THouseParser Parser;
    if(Parser.bLoadStrings("Продажа_квартир.txt") == false) return 1;

    В векторе домов (THouse) vector<THouse> HouseNumber; сохраним информацию, полученную на основании разбора строк синтаксическим анализатором:
    Код:

    vector<THouse> HouseNumber;
    for(unsigned int i = 0; i <= (Parser.sStrings.size() - 1); i++)
    {
    HouseNumber.push_back(Parser.ParseString(i));
    }

    Нам понадобятся ещё несколько объектов: THouse Se lectedHouse; - для хранения информации о предпочтениях, указанных пользователем (тип дома и число комнат, согласно условиям задачи) и вектор vector<THouse> SelectedHouseNumber; для хранения информации о всех домах, которые соответствуют заявленным требованиям.
    Сигналом о нахождении одходящего дома служит булевая переменная (bool bIsFound = false; // по-умолчанию - подходящие дома ещё не найдены), хотя вместо неё можно было бы использовать размер массива отобранных домов (SelectedHouseNumber.size()). В том случае, если подходящих домов не найдено (bIsFound == false), то программа сообщает об этом и завершает работу. В противном случае именно среди отобранных домов, мы проведём сортировку по наименьшей цене:
    Код:

    if(SelectedHouseNumber.size () > 1) // Если найдено больше одного дома
    {
    THouse Buffer;
    for(unsigned int i = 0; i <= (SelectedHouseNumber.size() - 1); i++)
    {
    for(unsigned int j = 0; j <= (SelectedHouseNumber.size() - 1); j++)
    {
    if(SelectedHouseNumber[j].uiPrice > SelectedHouseNumber[j + 1].uiPrice)
    {
    Buffer = SelectedHouseNumber[j];
    SelectedHouseNumber[j] = SelectedHouseNumber[j + 1];
    SelectedHouseNumber[j + 1] = Buffer;
    }
    }
    }
    }

    Подробнее - см. в приложении. Удачи!

    Приложение:

    Ответ отправил: Dr_Andrew (статус: Студент)
    Ответ отправлен: 05.11.2008, 12:21

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 149428 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 149.439
    Здравствуйте уважаемые эксперты.
    Я только начинаю изучать C++ Builder... Проблема в следующем - имеется строка AnsiString. Нужно из этой строки в формате AnsiString скопировать подстроку.
    Тыкните пожалуйста в функцию.
    Всем ответившим заранее благодарен.
    Отправлен: 04.11.2008, 11:33
    Вопрос задал: DismalGhost (статус: 1-й класс)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Dr_Andrew
    Здравствуйте, DismalGhost!
    Строковый класс AnsiString содержит функции-члены для работы с фрагментами строки: поиcка (Pos), вставки (Insert), удаления (Delete) и получения копии (SubString) фрагмента текста в строке.
    В Вашем случае необходима последняя:
    AnsiString __fastcall SubString(int StartPosition, int HowManyChars) const;
    где StartPosition - позиция первого символа подстроки, а HowManyChars - последнего.
    Например,
    AnsiString S1 = "Строка";
    AnsiString S2 = S1.SubString(1, 3);
    Ответ отправил: Dr_Andrew (статус: Студент)
    Ответ отправлен: 04.11.2008, 11:53

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 149439 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 149.442
    Добрый день уважаемые эксперты. Помогите пожалуйста решить такую задачу:
    объект класса CMap заполняется объектами CString в качестве ключей и пользовательскими объектами MyClass в качестве значений. Для этого я использую CMapStringToPtr.
    CMapStringToPtr map;
    CString key;
    MyClass man;
    for (int i = 0; i < 10; i++) {
    map.SetAt(key, &man);
    }
    заполняется нормально. Но при попытке получить из словаря map значения с помощью
    POSITION pos;
    CString tmp;
    MyClass man1;
    pos = map.GetStartPosition();
    map.GetNextAssoc(pos, key, &man1);
    выдает ошибку:
    cannot convert parameter 3 from 'MyClass *__w64 ' to 'void *&'
    Я так понимаю что нужно как-то преобразовать к указателю void*, но как это сделать не знаю. Подскажите пожалуйста.
    Отправлен: 04.11.2008, 12:30
    Вопрос задал: Uran23 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Ashotn
    Здравствуйте, Uran23!
    Нужно преобразовать в
    *&CObject
    Ответ отправил: Ashotn (статус: 1-й класс)
    Ответ отправлен: 05.11.2008, 09:28

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 149442 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.10 от 5.11.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное