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

Построить вектор из элементов матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi? http://www.cyberforum.ru/cpp-beginners/thread151705.html
можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi?
C++ Функция _atold встал вопрос о функции _atold(_atoldbl) Дело в том, что функция _atold не существует(была указана в учебнике), а _atoldbl просит в качестве первого аргумента числа типа _LDOUBLE*, а компилятор, естественно, ругается на указанный long double. Как же все-таки использовать данную функцию? Не удержался и написал свою :) void main( void ) { char* omg = "1234.54233"; cout.setf(ios::fixed);... http://www.cyberforum.ru/cpp-beginners/thread151682.html
Найти три максимальных и три минимальных значения 10 случайных чисел C++
помогите написать программку.
Вывести слова, которые начинаются и оканчиваются одной и той же буквой C++
дана непустая последовательность непустых слов из латинских букв,соседне слова отделены друг от друга запятой,за последним словом записана точка.определить колличество слов,которые-1.оканчиваются буквой "w"2.начмнаются и оканчиваются одной и той же буквой
C++ шаблонный класс "бинарное дерево" http://www.cyberforum.ru/cpp-beginners/thread151654.html
Всем привет! не могу решить задачу: написать игру на С++ с использованием шаблонного класса "бинарное дерево" суть игры : есть файл с русскими словами dictionary.txt выбирается случайным способом слово, игрок должен составить из букв, входящих в это случайное слово из dictionary.txt, как можно больше своих слов, все они должны быть в dictionary.txt Так вот, у меня постоянно ошибка :"HEAP...
C++ Для чего в коде нужна строка "using namespace std"? у меня возникла проблема при удалении "using namespace std;" перестает работать cout точнее пишет Build FAILED. File2.cpp(11,6): Error error 2451: E2451 Undefined symbol 'cout' File2.cpp(11,10): Error error 2451: E2451 Undefined symbol 'endl' для чего в коде нужна эта строка? using namespace std; код в котором используется #include <vcl.h> #pragma hdrstop #include <iostream> подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
05.07.2010, 17:18     Построить вектор из элементов матрицы
Вот с классами и динамическим выделением памяти:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <ctime>
#include <cassert>
#include <cmath>
 
class matrix_vector
{
public:
    matrix_vector(size_t sz); //Формирует матрицу со значениями из отрезка [0, default_value-1]
    matrix_vector(size_t sz, int lval, int rval); //Формирует матрицу со значениями из отрезка [lval, rval]
    ~matrix_vector();
    void print_matrix(); //Печать матрицы
    void print_vector(); //Печать вектора
private:
    void alloc_matrix(); //Выделение памяти для матрицы
    void make_vector(); //Создание и заполнение вектора
    int** _matrix; //Матрица
    int* _vector; //Вектор
    size_t _sz; //Размер матрицы
    static const size_t default_value=10; //Значение по умолчанию для генерации элементов матрицы
};
 
matrix_vector::matrix_vector(size_t sz)
    :_sz(sz)
{
    alloc_matrix();
    srand(static_cast<size_t>(time(NULL)));
    for(size_t i=0; i<_sz; ++i)
        for(size_t j=0; j<_sz; ++j)
            _matrix[i][j]=rand()%default_value;
    make_vector();
}
 
matrix_vector::matrix_vector(size_t sz, int lval, int rval)
    :_sz(sz)
{
    assert(rval>lval); //Проверка корректности границ отрезка
    alloc_matrix();
    srand(static_cast<size_t>(time(NULL)));
    for(size_t i=0; i<_sz; ++i)
        for(size_t j=0; j<_sz; ++j)
            _matrix[i][j]=rand()%(rval-lval+1)+lval;
    make_vector();
}
 
void matrix_vector::print_matrix()
{
    for(size_t i=0; i<_sz; ++i)
    {
        for(size_t j=0; j<_sz; ++j)
            std::cout << _matrix[i][j] << "\t";
        std::cout << std::endl;
    }
}
 
void matrix_vector::print_vector()
{
    std::cout << "(  ";
    for(size_t i=0; i<(2*_sz-1); ++i)
        std::cout << _vector[i] << "  ";
    std::cout << ")" << std::endl;
}
 
matrix_vector::~matrix_vector()
{
    for(size_t i=0; i<_sz; ++i)
        delete[] _matrix[i];
    delete[] _matrix;
    delete[] _vector;
}
 
void matrix_vector::alloc_matrix()
{
    _matrix=new int*[_sz];
    for(size_t i=0; i<_sz; ++i)
        _matrix[i]=new int [_sz];
}
 
void matrix_vector::make_vector()
{
    const size_t n=2*_sz-1;
    _vector=new int[n];
    for(size_t m=0; m<n; ++m)
    {
        size_t h=_sz-abs(static_cast<int>(_sz-m-1));
        size_t temp=abs(static_cast<int>(_sz-h));
        size_t index=(_sz*_sz-1)-temp*(m<_sz?1:_sz);
        int max=_matrix[index/_sz][index%_sz];
        index-=(_sz+1);
        for(size_t i=0; i<h-1; ++i, index-=(_sz+1))
            if(_matrix[index/_sz][index%_sz]>max)
                max=_matrix[index/_sz][index%_sz];
        _vector[m]=max;
    }
}
 
int main()
{
    matrix_vector mv(5, -5, 5);
    std::cout << "Initial matrix:" << std::endl;
    mv.print_matrix();
    std::cout << "Resulting vector:" << std::endl;
    mv.print_vector();
    system("pause");
    return EXIT_SUCCESS;
}
 
Текущее время: 06:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru