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

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


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

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

Гаряка Асмик
Статус: Специалист
Рейтинг: 4113
∙ повысить рейтинг »
lamed
Статус: Профессионал
Рейтинг: 2754
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2457
∙ повысить рейтинг »

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

Номер выпуска:1546
Дата выхода:05.06.2010, 19:00
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:393 / 167
Вопросов / ответов:2 / 3
IRC-канал по теме:#C

Вопрос № 178765: Написать две функции вычисления i-го числа Фибоначчи - рекурсивную и нерекурсивную - и напечатать таблицу для сравнения времен вычисления i-го числа Фибоначчи для i=4, 6, 8, 10, 12 с помощью этих функций. Используйте для этого стандартную функцию CLO...


Вопрос № 178769: Уважаемые эксперты, помогите написать программу: Сформировать динамический одномерный или двумерный массив, выполнить: Удалить элемент равный среднему арифметическому элементов массива. У меня нелепо написанная прога, не могу чехлы отбить ка...

Вопрос № 178765:

Написать две функции вычисления i-го числа Фибоначчи - рекурсивную и нерекурсивную - и напечатать таблицу для сравнения времен вычисления i-го числа Фибоначчи для i=4, 6, 8, 10, 12 с помощью этих функций. Используйте для этого стандартную функцию CLOCK- функцию без параметров, которая выдает целое число, равное времени (в миллисекундах) центрального процессора, уже использованного Basic-программой.

Отправлен: 31.05.2010, 00:31
Вопрос задал: гаврилова анастасия вячеславовна, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Verena, Профессионал :
Здравствуйте, гаврилова анастасия вячеславовна.
Вот Ваша программа. Правда, на таких маленьких числах на моём компьютере время выполнения каждой функции - 0 мс. Если хотите увидеть разницу, продлите выполнение цикла хотя бы до 31, или до 51.
Описание алгоритмов можете посмотреть здесь, функции я взяла оттуда.
Проверено на Visual Studio 2005.
Удачи!

Приложение:

-----
Эта история - не для истории, понимаешь?

Ответ отправил: Verena, Профессионал
Ответ отправлен: 04.06.2010, 19:53
Номер ответа: 261884

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

  • Вопрос № 178769:

    Уважаемые эксперты, помогите написать программу:
    Сформировать динамический одномерный или двумерный массив, выполнить:
    Удалить элемент равный среднему арифметическому элементов массива.
    У меня нелепо написанная прога, не могу чехлы отбить как правильно записать ср. арифметическое и соединить его с динамическим массивом, удалить элемент вроде ж delete()?

    Отправлен: 31.05.2010, 01:31
    Вопрос задал: Колотин Валерий Анатолиевич, Посетитель
    Всего ответов: 2
    Страница вопроса »


    Отвечает Verena, Профессионал :
    Здравствуйте, Колотин Валерий Анатолиевич.
    В Вашей программе много ошибок. Во-первых, Вы постоянно пытаетесь использовать какие-то загадочные переменные, которые даже не объявлены. Если Вы передаёте в функцию размерность массива size, то и в цикле использовать надо именно эту переменную. В функции вычисления среднего у Вас все действия в цикле, который только один раз и выполнится, учитывая, что Вы в него return вложили. Удаление элемента из массива происходит путём сдвига элементов, которые расположены после него, на одну позицию назад. Например, удалим 3 из массива 1 3 4 5. Для этого поместим 4 на место 3, а 5 на место 4, в результате получится массив 1 4 5, а размерность его надо уменьшить на 1. Через delete удалять будем уже весь массив в конце программы, чтобы освободить память. Разумеется, можно уменьшить размер выделенной памяти во время удаления элемента: для этого надо выделить память под массив N-1, переписать туда все элементы прежнего массива, кроме удаляем ого, а потом удалить старый массив.
    Первый вариант и Ваша исправленная програма в приложении.
    Удачи!

    Приложение:

    -----
    Эта история - не для истории, понимаешь?

    Ответ отправил: Verena, Профессионал
    Ответ отправлен: 01.06.2010, 15:07
    Номер ответа: 261803

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

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

  • Отвечает Иванов Андрей Владимирович, 4-й класс :
    Здравствуйте, Колотин Валерий Анатолиевич.

    Для динамического массива лучше использовать тип данных vector.
    Мой вариант:

    Средний элемент вычисляется без дробной части.
    Если элемент из введенного массива равен этому среднему, то он удаляется. Иначе, массив не меняется.

    Код программы. Проверено в GCC 4.5

    #include <iostream>
    #include <vector>
    #include <cstdlib>
    #include <ctime>
    using namespace std;

    int main()
    {
    int size;
    cout << "Enter array size: ";
    cin >> size;

    vector <int> numbers(size);
    int temp;

    // Filling array with numbers:
    for(int i=0; i<size; i++)
    {
    cout << "Enter " << i+1 << " number: ";
    cin >> temp;
    numbers[i] = temp;
    }

    int sum = 0;
    // Finding average value:
    for(int i=0; i<size; i++)
    sum += numbers[i];

    int average = sum / size;

    // Deleting average number:
    for(int i=0; i<size; i++)
    if(numbers[i] == average)
    {
    numbers.erase(numbers.begin()+i);
    break;
    }

    // Printing result array:
    for(int i=0; i<numbers.size(); i++)
    cout << numbers[i] << " ";

    return 0;
    }

    Ответ отправил: Иванов Андрей Владимирович, 4-й класс
    Ответ отправлен: 01.06.2010, 16:02
    Номер ответа: 261806

    Оценка ответа: 4

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

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

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

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

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

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

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

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


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

    В избранное