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

Замена елементов в матрице - C++

Восстановить пароль Регистрация
 
Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
11.04.2012, 23:28     Замена елементов в матрице #1
Всем привет, можете помочь с заданием ?
Нужно заменить самый большой элемент каждой строки матрицы, суммой элементов размещенных до нее. Матрица генерируется из случайных чисел, размерность мы вводим.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
11.04.2012, 23:41     Замена елементов в матрице #2
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
#include <iostream>
#include <ctime>
#include <iomanip>
 
int main()
{
    size_t size;
    std::cout << "Size of matrix: ";
    std::cin >> size;
    int **matrix = new int*[size];
    srand(time(NULL));
    int pos, max;
 
    for(int i = 0; i < size; i++)
    {
        matrix[i] = new int[size];
        pos = 0;
        int j;
        for(j = 0; j < size; j++)
        {
            matrix[i][j] = rand() % 20;
            std::cout << std::setw(4) << matrix[i][j];
        }
        max = matrix[i][0];
        for(j = 1; j < size; j++)
            if (max < matrix[i][j])
                max = matrix[i][pos = j];
        int sum = 0;
        j = 0;
        while (j < pos)
            sum += matrix[i][j++];
        matrix[i][pos] = sum;
        std::cout << std::endl;
    }
    std::cout << "+-------+\n";
    for(int i = 0; i < size; i++)
    {
        for(int j = 0; j < size; j++)
            std::cout << std::setw(4) << matrix[i][j];
        std::cout << std::endl;
    }
 
    for(int i = 0; i < size; i++)
        delete [] matrix[i];
    delete [] matrix;
    return 0;
}
Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
12.04.2012, 00:35  [ТС]     Замена елементов в матрице #3
Петрррр, а что означает setw ? Я погуглила, но толком не поняла ?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.04.2012, 00:39     Замена елементов в матрице #4
Выпендрёжный вариант:
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
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <numeric>
#include <cstdlib>
#include <ctime>
 
class RandomNumber {
    int bottom;
    int top;
public:
    RandomNumber(const int _bottom, const int _top) : bottom(_bottom), top(_top) {}
    int operator () () const { return rand() % ( top - bottom + 1 ) + bottom; }
};
 
void dump_row(const int * row, size_t size, const size_t width) {
    while ( size-- )
        std::cout << std::setw(width) << *row++;
    std::cout << std::endl;
}
 
void dump_matrix(const int ** matrix, size_t rows, size_t columns, const size_t width) {
    while ( rows-- )
        dump_row(*matrix++, columns, width);
}
 
int main() {
    const size_t WIDTH(4);
    const int BOTTOM(0);
    const int TOP(99);
    size_t rows, columns;
    int ** matrix;
 
    /*
    std::cout << "Rows: ";
    std::cin >> rows;
    std::cout << "Columns: ";
    std::cin >> columns;
    */
    rows = 5;
    columns = 10;
 
    srand(time(0));
 
    matrix = new int * [ rows ];
    for ( size_t i = 0; i < rows; ++i ){
        matrix[i] = new int [ columns ];
        std::generate_n(matrix[i], columns, RandomNumber(BOTTOM, TOP));
    }
 
    std::cout << "Before:" << std::endl;
    dump_matrix((const int**)matrix, rows, columns, WIDTH);
 
    for ( size_t i = 0; i < rows; ++i ) {
        int * pMax = (int*) std::max_element(matrix[i], matrix[i] + columns);
        *pMax = std::accumulate(matrix[i], pMax, 0);
    }
 
    std::cout << "After:" << std::endl;
    dump_matrix((const int**)matrix, rows, columns, WIDTH);
 
    for ( size_t i = 0; i < rows; ++i )
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
codepad.org/GrN7XEvS
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
12.04.2012, 00:40     Замена елементов в матрице #5
Устанавливает ширину поля, которое будет использовано при следующем выводе.

Не по теме:

Katusha11, в моем нике три буквы 'р'

Katusha11
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 23
12.04.2012, 00:49  [ТС]     Замена елементов в матрице #6
Петррр, извини за ник !
А в старом борланде будет работать эта функция или там ее можно просто убрать ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2012, 09:55     Замена елементов в матрице
Еще ссылки по теме:

C++ замена елементов одномерного массива
шаблон функции который принимает в параметры массив количиство елементов и должен найти сумму елементов массив C++
C++ Замена элементов в матрице

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.04.2012, 09:55     Замена елементов в матрице #7
Цитата Сообщение от Katusha11 Посмотреть сообщение
А в старом борланде будет работать эта функция или там ее можно просто убрать ?
С некоторыми изменениями будет, а вот с моим вариантом - точно не судьба.
C++
1
2
3
4
5
6
7
#include <iostream.h>
#include <iomanip.h>
 
int main() {
    cout << setw(3) << "a" << setw(5) << "b" << setw(7) << "c" << endl;
    return 0;
}
Замена елементов в матрице
Yandex
Объявления
12.04.2012, 09:55     Замена елементов в матрице
Ответ Создать тему
Опции темы

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