Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

произведения элементов массива с нечетными номерами

45K
05 апреля 2011 года
botasa
45 / / 31.12.2010
Написать шаблон функции для вычисления произведения элементов массива с нечетными номерами

мои набросы

 
Код:
template <typename Any>
Any dob_nep(Any *mas, int size)
{
        Any dob = 1;
        for (int i=0; i<size; i++)
        {
                // а дальше хз
        }
}


поправьте или переделайте плиз ...
45K
05 апреля 2011 года
botasa
45 / / 31.12.2010
спс уже не надо сам решил
если кто-то хочет даю ответ, не знаю ли правильно но по подсчетам вручную и программою всё сходиться вот пример

t
Код:
emplate <typename Any>
Any dob_nep(Any *mas, int size)
{
        Any dob = 1;
        for (int i=0; i<size; i++)
                if (mas%2)
                {
                        dob*=mas;
                }
                return dob;
}
 
 
int mas[8]={1,2,3,4,5,6,7};
        int rez =  dob_nep(mas,8);
        cout <<rez;
244
05 апреля 2011 года
UAS
2.0K / / 19.07.2006
Так-то надо i%2
87
05 апреля 2011 года
Kogrom
2.7K / / 02.02.2008
Немного изменил код.
Код:
template <typename T, int size>
T mul_odd(T(& mas)[size])
{
    T res = 1;
    for (int i = 0; i < size; i++)
        if (i % 2)
        {
            res *= mas;
        }
    return res;
}

int main()
{
    int mas[] = {1,2,3,4,5,6,7};
    cout << mul_odd(mas) << endl;
    return 0;
}


Почти ничего нового, лишь некоторые особенности работы с шаблонами.
2.1K
05 апреля 2011 года
Norgat
452 / / 12.08.2009
Цитата:
Так-то надо i%2



Лучше вместо i++ поставить i+=2. Тогда:

Код:
void main()
{
    int mas[] = { 1,2,3,4,5,7 };   
    int sum = 0;

    for(int i = 1; i < 6; i+= 2)
        sum += mas;

    cout << sum << endl;
    _getch();
}


На выходе:
1. Итераций цикла в 2 раза меньше
2. Нету лишней проверки и деления на каждой итерации
87
05 апреля 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Norgat
а не проще вместо i++ поставить i+=2 ?



Проще, конечно. И лучше.

87
05 апреля 2011 года
Kogrom
2.7K / / 02.02.2008
Norgat, я думаю, что ты занимаешься ерундой, объясняя очевидные вещи. Изначально botasa пытался перемножать только нечётные элементы массива - там подход с % 2 оправдан. Предполагаю, что никто бы не стал изначально применять такое решение, если бы сразу было ясно, что требуются элементы с нечётными индексами. Короче, тут лишь пример недостатка очень маленьких шажков при рефакторинге.
2.1K
05 апреля 2011 года
Norgat
452 / / 12.08.2009
Цитата:
Изначально botasa пытался перемножать только нечётные элементы массива - там подход с % 2 оправдан.



В каком месте он оправдан? Лишними N операциями вычисления % и N операциями сравнения с нулём, где N - длина массива?

Цитата:
Предполагаю, что никто бы не стал изначально применять такое решение, если бы сразу было ясно, что требуются элементы с нечётными индексами.



Я щитаю, что лучше указать на такую вещь, чем пропустить её мимо, т.к. человек пишет на C++ очевидно предполагая использовать такое преимущество C++, как скорость исполнения кода (по мне так больше там преимуществ нету).

87
05 апреля 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Norgat
В каком месте он оправдан? Лишними N операциями вычисления % и N операциями сравнения с нулём, где N - длина массива?


Элементов с нечетными значениями в массиве может быть от 0 до N. Что непонятно?

Цитата: Norgat
Я щитаю, что лучше указать на такую вещь, чем пропустить её мимо, т.к. человек пишет на C++ очевидно предполагая использовать такое преимущество C++, как скорость исполнения кода (по мне так больше там преимуществ нету).


Ну так несовершенный код использовал не botasa, а я. И я с первого твоего намёка согласился, что остались недоработки. Разжёвывать не требовалось.

Например, ты в своем примере рассчитываешь не произведение, а сумму. То есть решаешь какую-то левую задачу. Но есть ли смысл к этому придираться, если общий смысл твоих рассуждений ясен?

242
05 апреля 2011 года
Оlga
2.2K / / 04.02.2006
Цитата: Kogrom
Norgat, я думаю, что ты занимаешься ерундой, объясняя очевидные вещи. Изначально botasa пытался перемножать только нечётные элементы массива - там подход с % 2 оправдан....


и зачем хуливар устраивать? общалки мало? тем более что для автора топика вещи не очевидные, раз он написал то что написал. ему показали более правильное решение и это хорошо, особенно после того, как человек сам что то сделал. а вы тут его рефакторингом каким то пугаете и отвлекаете от сути примера даного Norgat'ом.

Цитата:
Элементов с нечетными значениями в массиве может быть от 0 до N. Что непонятно?


не понятно то, вам уважаемый, что речь о нечетных индексах. перечитайте первое сообщение топика.

87
05 апреля 2011 года
Kogrom
2.7K / / 02.02.2008
Цитата: Оlga
и зачем хуливар устраивать?


Между Norgat-ом и мной вышло недопонимание. Мы его решаем. Мы ничем не меряемся. Вывод: вопрос в цитате не имеет смысла в этом конкретном случае.

Цитата: Оlga
не понятно то, вам уважаемый, что речь о нечетных индексах. перечитайте первое сообщение топика.


Я читал не только первое, но и второе. И третье.

242
05 апреля 2011 года
Оlga
2.2K / / 04.02.2006
Цитата:
Я читал не только первое, но и второе. И третье.


отлично, но думаю стоит ориентироваться на первоначальное задание, а не на путаницу в голове топикастартера.

зы любите вы, уважаемый, поспорить. прям хлебом не корми )

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог