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

Массив: В матрице из действительных чисел найти сумму элементов в каждом столбике. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамический массив и функции пользователя (замена элементов по условию) http://www.cyberforum.ru/cpp-beginners/thread893859.html
Помогите с этой задачей плз. Если в заданном массиве хотя бы одно значение элементов принадлежит промежутку , то все элементы, которые не принадлежат данному промежутку заменить на z. Значение x,y,z пользователь вводит с клавиатуры. Использовать динамический массив и функции пользователя. Массив может заполняться рандомом. Ключевое тут, это чтобы в массиве обязательно были функции пользователя....
C++ Различные версии с++ в виде VS и наборы исходников Я как абсолютный нелюбитель с++ итд столкнулся со следующей забавной штукой - есть исходники ID Software - quake, quake2 и их форков на тех же движках. В них уровень предельный - VC2005, собирается со стандартом C99(это на примере Q2) и не выше. Суть идеи - прикрутить wrapper музыки из wave-alac-ape-flac файлов, но тут начинается реальный гемор, потому, что любой компонент реализующий обёртки... http://www.cyberforum.ru/cpp-beginners/thread893848.html
C++ Найти самую большую цепочку возрастающих элементов последовательности
# include <iostream> # include <math.h> # include <time.h> using namespace std; int vout(int* q, int w) { for (int i=0; i<w; i++) { cout<<q<<" "; }
Даны два натуральных числа a, b. Вычислить C++
Даны два натуральных числа a, b. Вычислить Функция х!! Определяется следующим образом: х!! = 1*3*5*...*х, если х нечетно, х!! = 2*4*6*...*х, если х четно.
C++ Отредактировать предложение, удаляя из него лишние пробелы http://www.cyberforum.ru/cpp-beginners/thread893805.html
Составить программу, в которой с клавиатуры вводится строка символов и отредактировать предложение, удаляя из него лишние пробелы оставляя только по одному пробелу между словами.
C++ Поставить строки в обратном порядке Поставить строки в обратном порядке, используя двухмерный массив. Размер массива задается самостоятельно. Сделать три варианты программы. В первом элементы массива определяются в программе, во втором задаются пользователем, в третьем заполняются с помощью генератора случайных чисел. Исходный и конечный массивы вывести на экран. подробнее

Показать сообщение отдельно
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
07.06.2013, 03:26     Массив: В матрице из действительных чисел найти сумму элементов в каждом столбике.
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
//============================================================================
// Name        : matrix_col_sum.cpp
// Author      : UranFlex
// Version     : 0.1 alpha
// Copyright   : GNU GPL
// Description : Динамические массивы. В матрице из действительных чисел найти сумму элементов в каждом столбике.
//               Результат записать в одномерный массив. Вывести начальную матрицу и полученный одномерный массив на экран.
//               C++, Ansi-style
//============================================================================
 
#include <iostream>
#include <ctime>
#include <cmath>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
// функция заполняет динамический двумерный массив псевдослучайными данными
void FillArray( double** array, const int rows, const int cols, const unsigned randRange = 101, const double shift = -50,
        const double koef = 10 );
// функция выводит на экран динамический двумерный массив
void PrintArray( double** array, const int rows, const int cols );
// функция выводит на экран одномерный массив
void PrintRow( double* row, const int sz );
// функция считает сумму элементов каждого столбца двумерного динамического массива
// и сохраняет результат в одномерный массив
void CalcSumCol( double** array, double* row, const int rows, const int cols );
 
int main() {
 
    srand( time( 0 ) ); // засеять генератор случайных чисел
 
    int rows, cols; // переменные для хранения количества строк и столбцов матрицы соответсвенно
    // получаем от пользователя данные матрицы
    cout << "Введите количество строк и количество столбцов матрицы" << endl;
    cin >> rows >> cols;
 
    // создаем матрицу
    // организация двумерного динамического массива производится в два этапа
    // сначала создаётся одномерный массив указателей, а затем в цикле каждому элементу этого массива присваивается адрес одномерного массива
    double** matrix = new double*[ rows ];
    for ( int i = 0; i < rows; ++i )
        matrix[ i ] = new double[ cols ];
 
    // заполняем матрицу псевдослучайными значениями типа int
    FillArray( matrix, rows, cols );
 
    // выводим матрицу на экран
    cout << "Исходная матрица:" << endl;
    PrintArray( matrix, rows, cols );
 
    // создаем одномерный массив для записи в него результатов суммы элементов каждого столбца.
    // соответсвенно размер нового массива будет равен количеству столбцов матрицы.
    double* arrSum = new double[ cols ];
 
    // считаем сумму элементов каждого столбца двумерного динамического массива и сохраняем результат в одномерный массив
    CalcSumCol( matrix, arrSum, rows, cols );
 
    // выводим массив с суммами на экран
    cout << "Суммы столбцов матрицы:" << endl;
    PrintRow( arrSum, cols );
 
    // уничтожаем одномерный массив.
    delete[] arrSum;
 
    // последовательное уничтожение двумерного массива происходит в обратном порядке
    // сначала в цикле уничтожаются одномерные массивы ( непосредственно сами строки двумерного ),
    // а затем уничтожается массив указателей на строки.
    for ( int i = 0; i < rows; ++i )
        delete[] matrix[ i ];
    delete[] matrix;
 
    return 0;
}
 
void FillArray( double** array, const int rows, const int cols, const unsigned randRange, const double shift, const double koef ) {
    for ( int i = 0; i < rows; ++i )
        for ( int j = 0; j < cols; ++j )
            // заполняем двумерный массив псевдослучайными данными.
            // shift - начальное значение диапазона данных
            // randRange - ширина диапазона
            // koef - делитель для псевдослучаного значения, так как у нас действительные числа.
            array[ i ][ j ] = ( shift + rand() % randRange ) / koef;
}
 
void PrintArray( double** array, const int rows, const int cols ) {
    for ( int i = 0; i < rows; ++i )
        PrintRow( ( array[ i ] ), cols );
}
 
void PrintRow( double* row, const int sz ) {
    for ( int j = 0; j < sz; ++j )
        cout << setw( 6 ) << setprecision( 2 ) << ( row[ j ] );
 
    cout << endl;
 
}
 
void CalcSumCol( double** array, double* row, const int rows, const int cols ) {
    for ( int j = 0; j < cols; ++j ){
        row[ j ] = 0;
        for ( int i = 0; i < rows; ++i )
            row[ j ] += array[ i ][ j ];
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru