Форум программистов, компьютерный форум, киберфорум
Наши страницы

Алгоритмы и программы по обработке одномерных и двумерных массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переопределение типа(typedef) http://www.cyberforum.ru/cpp-beginners/thread173434.html
Не как не могу разобраться что такое StartDLL/Startup в данном случае typedef void (*Startup)(); Startup StartDll; Можете записать то, что выше без typedef ?
C++ Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная как я могу писать эту задачу. Задана матрица целых чисел. Выполнить сортировку элементоь в той строке матрицы сумма элементов в которой максимальная. http://www.cyberforum.ru/cpp-beginners/thread173411.html
C++ Контроль ошибок при вводе
есть, например, код #include <iostream> int main() { int i; cin >> i; return 0; }
Дана квадратная матрица, все элементы которой различны C++
1. Дана квадратная матрица, все элементы которой различны. Поменять местами строки, в которых находятся максимальный и минимальный элементы. нада на С++ и паскаль(((
C++ y=1*3*5*...(2n-1) http://www.cyberforum.ru/cpp-beginners/thread173374.html
Я хочу знать ответ по этой задаче. Задано целое число n. Вычислить: y=1*3*5*...(2n-1).
C++ Создание нового проекта в Visual Studio Не знаю в какую ветку разместить. Помню, когда учился, мы работали в Visual Studio и я создавал новые проекты. Потом программировал в юниксе. А щас возникла необходимость опять работать в Вижуал... подробнее

Показать сообщение отдельно
NightmareZ
1361 / 570 / 37
Регистрация: 31.03.2009
Сообщений: 1,951
08.10.2010, 12:30
Цитата Сообщение от Veronika Yu. Посмотреть сообщение
а нельзя сделать так, чтобы матрица изменялась не построчно, а полностью? Т е. если вводим 2, то две последие цифры становильст первыми, а все остальные смещальсь вниз.
Ну можно функции shiftHorizontal и shiftVertical как-нибудь так реализовать:

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
void Matrix::shiftHorizontal(int count)
{
    if (count > _width)
        count %= _width;
 
    int* tmp = new int[_width * _height];
    memcpy(tmp, _arr, _width * _height * sizeof(int));
 
    for (int j = 0; j < _height; j++)
        for (int i = 0; i < _width; i++)
            _arr[j * _width + (i + count) % _width] = tmp[j * _width + i];
 
    delete[] tmp;
}
 
void Matrix::shiftVertical(int count)
{
    if (count > _height)
        count %= _height;
 
    int* tmp = new int[_width * _height];
    memcpy(tmp, _arr, _width * _height * sizeof(int));
 
    for (int j = 0; j < _height; j++)
        for (int i = 0; i < _width; i++)
            _arr[((j + count) % _height) * _width + i] = tmp[j * _width + i];
 
    delete[] tmp;
}
Впринципе, можно вообще элементы массива не трогать, а в классе хранить лишь индексы и смещения, а потом выводить матрицу с учётом смещений.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.