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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

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

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

Гаряка Асмик
Статус: Бакалавр
Рейтинг: 2369
∙ повысить рейтинг »
lamed
Статус: Практикант
Рейтинг: 2151
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1794
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / C/C++

Номер выпуска:1491
Дата выхода:26.02.2010, 15:00
Администратор рассылки:Товарищ Бородин, Модератор
Подписчиков / экспертов:640 / 188
Вопросов / ответов:2 / 2
IRC-канал по теме:#C

Вопрос № 176795: Вычислить число Фибоначчи Fi по запрошенному с клавиатуры целому неотрицательному индексу i. F0 = 0, F1 = 1, ..., Fi + 2 = Fi + Fi + 1. Определить границы i при условии использования в программе переменных типа integer....


Вопрос № 176905: Здравствуйте, уважаемые эксперты! Пишу программу с использованием Qt 4.4.0 в связке с g++ 4.1. Задача: функция получает в качестве параметра содержание некоей книги в виде списка строк (QStringList) и отображает этот список в объекте класса QTr...

Вопрос № 176795:

Вычислить число Фибоначчи Fi по запрошенному с клавиатуры целому неотрицательному индексу i. F0 = 0, F1 = 1, ..., Fi + 2 = Fi + Fi + 1. Определить границы i при условии использования в программе переменных типа integer.

Отправлен: 20.02.2010, 14:46
Вопрос задал: nasya_koshenka, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает coremaster1, 5-й класс :
Здравствуйте, nasya_koshenka.
Границу можно определить из условия Fn = round(fi^n/sqrt(5)), где round - функция округления до ближайщего целого, fi = 1.618... - золотое сечение.
Итоговое выражение: n <= floor[log((2^m - 1)*sqrt(5))/log(fi)], где m - разрядность типа целого числа. Обычно unsigned int имеет 32 разряда, для которых формула даёт максимальный индекс 47.
В программе расчёт этого значения обозначен комментариями, его можно заменить на константу.

Приложение:

Ответ отправил: coremaster1, 5-й класс
Ответ отправлен: 20.02.2010, 15:42
Номер ответа: 259606

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

  • Вопрос № 176905:

    Здравствуйте, уважаемые эксперты!
    Пишу программу с использованием Qt 4.4.0 в связке с g++ 4.1.
    Задача: функция получает в качестве параметра содержание некоей книги в виде списка строк (QStringList) и отображает этот список в объекте класса QTreeWidget. Необходимо, чтобы виджет очищался при каждом новом вызове функции, т.е. чтобы каждый раз отображалось содержание новой книги, а не добавлялось к предыдущему (как реально происходит):



    Элементы объекта QTreeWidget (QTreeWidget* pContentsWidget;) хранятся в списке QList<QTreeWidgetItem*> ContentsItems;
    Попытки очищать список элементов и сам виджет перед вставкой нового содержания ни к чему не привели:

    Код:

    void TNavigationWidget::SetNewContents(QStringList sContents)
    {
    ContentsItems.clear(); // Очищаем старый список
    pContentsWidget->clear(); // Удаляем старые элементы

    for(int i = 0; i < sContents.size(); ++i) // Добавляем новое содержание
    {
    QStringList sString;
    sString << sContents[i];
    ContentsItems.append(new QTreeWidgetItem((QTreeWidget*)0, sString));
    }
    pContentsWidget->insertTopLevelItems(0, ContentsItems);
    }


    Пытался проходить по элементам в цикле (включая виджеты QTreeWidget, отвечающие за отображение QTreeWidgetItem*) с тем же результатом:

    Код:

    void TNaviga tionWidget::SetNewContents(QStringList sContents)
    {
    for(int i = 0; i < pContentsWidget->topLevelItemCount(); ++i)
    {
    pContentsWidget->removeItemWidget(ContentsItems[i], 0);
    }

    while(!ContentsItems.isEmpty()) delete ContentsItems.takeFirst();

    for(int i = 0; i < sContents.size(); ++i)
    {
    QStringList sString;
    sString << sContents[i];
    ContentsItems.append(new QTreeWidgetItem((QTreeWidget*)0, sString));
    }
    pContentsWidget->insertTopLevelItems(0, ContentsItems);
    }


    Вопрос: как очистить QTreeWidget от старых элементов?

    Отправлен: 25.02.2010, 14:06
    Вопрос задал: Dr_Andrew, Старший модератор
    Всего ответов: 1
    Страница вопроса »


    Отвечает Хватов Сергей, Практикант :
    Здравствуйте, Dr_Andrew.

    void QTreeWidget::clear ()
    Это slot, поэтому в документации в списке методов он упомянут в другом месте.
    Список указателей очищать, естественно, бесполезно. Этот список вообще бесполезен - items всегда можно извлечь из самого QTreeWidget.
    Доступ к items можно осуществлять либо через topLevelItem(index) либо извлечь invisibleRootItem() и уже через его child(index), что удобно для "настоящих" деревьев. Я изначально создаю TreeWidgetItem(parent,...), а не добавляю его потом.
    Ответ дополнен полезными уточнениями автора из мини-форума.
    -----
    ∙ Отредактировал: Dr_Andrew, Старший модератор
    ∙ Дата редактирования: 25.02.2010, 16:36 (время московское)

    Ответ отправил: Хватов Сергей, Практикант
    Ответ отправлен: 25.02.2010, 12:30
    Номер ответа: 259733

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо за ценные замечания, которые позволили оптимизировать код!

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

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

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

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

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

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

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

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


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.02.2010

    В избранное