Консультация № 136841
14.05.2008, 20:21
0.00 руб.
0 1 1
Здравствуйте ещё раз!
Есть такая задачка: Все парные строки матрицы подвинуть на К - елементов вправо.
Если можно с обьяснениями в коде. ОЧень надеюсь на Вашу помощь! Заранее спасибо!

Обсуждение

Неизвестный
16.05.2008, 07:32
общий
это ответ
Здравствуйте, Sashka!
В приложении вы найдете вариант сдвига четных строк матрицы на k-елементов вправо. Циклический сдвиг строк описан в функции void cycle_shift(int *a, int size, int k). Сдвигается массив a размером size на k элементов. Компилятор MS VS 2005.

Приложение:
#include <time.h>#include <cstdlib>#include <iostream>#include <iomanip>using namespace std;void cycle_shift(int *a, int size, int k) { int *b = new int[size]; for(int i=0; i<size; i++) { int index = i + k; if(index >= size) index -= size; b[index] = a[i]; } for(int i=0; i<size; i++) a[i] = b[i]; delete[] b;}int main(int argc, char* argv[]) { int size = 5; int **matrix = new int*[size]; srand((unsigned) time(NULL)); cout << "Initial matrix:" << endl; for(int i=0; i<size; i++) { matrix[i] = new int[size]; for(int j=0; j<size; j++) { matrix[i][j] = rand()%100; cout << setw(3) << matrix[i][j]; } cout << endl; } int k; cout << endl << "Input k:" << endl; cin >> k; for(int i=0; i<size; i+=2) cycle_shift(matrix[i], size, k); cout << endl << "Modified matrix:" << endl; for(int i=0; i<size; i++) { for(int j=0; j<size; j++) cout << setw(3) << matrix[i][j]; cout << endl; } for(int i=0; i<size; i++) delete[] matrix[i]; delete[] matrix; return 0;}
Форма ответа