Форум программистов, компьютерный форум CyberForum.ru

класс-шаблон для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Villya
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 32
13.03.2011, 22:00     класс-шаблон для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода #1
Создать класс-шаблон, содержащий поля для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода элементов массива на экран, а так же для подсчета суммы элементов массива, расположенных между первым и последним отрицательными элементами. Продемонстрировать работу методов класса

Вроде бы успешно откомпелировал, но не работает, запращивает:
"Невозможно найти или открыть файл PDB"
HELP

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
#include <numeric>
#include <functional>
#include <algorithm>
#include <limits>
/*
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
    сумму элементов массива с нечетными номерами;
*/
float accumulate_odd(float* arr, size_t N)
{
    struct Op : public std::binary_function<float, float, float>
    {
        Op() : pos_(0) {}
        result_type operator()(const first_argument_type& res, const second_argument_type& val)
        { return res + ((pos_++ & 1) ? val : 0); }
        int pos_;
    };
    return std::accumulate(arr, arr + N, float(0), Op());
}
/*
4)    сумму элементов массива, расположенных между первым и последним отрицательными элементами.    
Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Ос¬вободившиеся в конце массива элементы заполнить нулями.
*/
float sum_and_shrink(float* arr, size_t N)
{
    typedef float* iterator;
    // поиск первого и последнего отрицательного элемента
    std::binder2nd<std::less<float> > less0 = std::bind2nd(std::less<float>(), float(0));
    iterator first = std::find_if(arr, arr+N, less0);
    if (first == arr+N) // нет отрицательных элементов
        return std::numeric_limits<float>::quiet_NaN();
    iterator tmp = first+1, last = arr+N;
    while ((tmp = std::find_if(tmp, arr+N, less0)) != arr+N)
        last = tmp++;
    if (last == arr+N) // только один отрицательный элеммент
        return std::numeric_limits<float>::quiet_NaN();
    
    // вычисление суммы
    float sum = std::accumulate(first+1, last, float(0));
    struct less_fabs : public std::unary_function<float, bool>
    {
        less_fabs(float limit) : limit_(limit) {}
        result_type operator()(const argument_type& val) const
        { return std::fabs(val) <= limit_; }
        float limit_;
    };
    // Сжать массив
    last = std::remove_if(arr, arr+N, less_fabs(1));
    std::fill(last, arr+N, float(0));
    
    return (sum);
}
int main()
{
    float arr[] = {1,3,-6,3,4,7,5,-3,7,-2,1,5};
    const size_t N = sizeof(arr) / sizeof(arr[0]);
    accumulate_odd(arr, N);
    sum_and_shrink(arr, N);
    system("PAUSE");
    return (0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2011, 22:00     класс-шаблон для хранения одномерного массива и количества элементов в массиве. Описать методы для инициализации и вывода
Посмотрите здесь:

C++ Описать класс,содержащий переменную для хранения текстовой строки.
C++ описать класс для хранения строк
Создать класс-шаблон, содержащий поля для хранения одномерного массива C++
C++ Описать функции ввода с клавы элементов одномерного массива и определения количества 0 в этом массиве
Описать абстрактный класс для хранения информации геометрических фигурах. C++
C++ Описать класс для вычисления суммы непарных элементов массива
Класс для хранения массива данных C++
C++ Шаблон функции для поиска произведения всех элементов одномерного массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 05:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru