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

Сдвиг элементов матрицы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
mika_vazovski
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 5
05.02.2012, 16:08     Сдвиг элементов матрицы #1
Здравствуйте, было задание
Осуществить циклический сдвиг элементов прямоугольной матрицы на п элементов
вправо или вниз (в зависимости от введенного режима), п может быть
больше количества элементов в строке или столбце.

я сделала матрицу 5х5, но почему-то когда запускаю программу, независимо от выбранного направления сдвига, программа сдвигает строки, но никак не столбцы. Ниже привожу код, подскажите пожалуйста, где я ошиблась.

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
// Двумерный массив.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>//для нажатия клавиши
#include <clocale>//библиотека для кодировки
#include <math.h>
#include <stdio.h>
using namespace std;//использовать пространство имен (чтобы не писать std)
 
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale(LC_CTYPE,"Russian");//поддержка русской кодировки
int M[5][5]={2,6,4,10,5,7,0,9,13,4,6,5,8,19,3,7,2,8,23,1,8,3,2,19,7};
int Mas[5][5]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int i,j,n,naprav;
 
    cout<< "\nвведите направление сдвига(0 'вправо' или 1 'вниз')\n";
    cin>>naprav;
    cout<< "\nвведите число символов, на которое осуществляется сдвиг\n";
    cin>>n;
    cout<<endl;
    i=0;
    j=0;
 
for (i=0; i<5; i++) // проход по столбцу
    {for (j=0; j<5; j++) //проход по стоке
        cout<< M[i][j]<<"   " ; // вывод массива
    cout<<endl;                //конец j-той строки
    }
    cout<<endl;
if (naprav==0);
   {for (i=0; i<5; i++)
     for (j=0; j<5; j++)
         Mas[i][j]=M[i][(j+n)%5];}
if (naprav==1);
   {for (j=0; j<5; j++)
     for (i=0; i<5; i++)
         Mas[i][j]=M[(i+n)%5][j];}
//else cout<<"неправильное направление сдвига\n";
    
 
for (i=0; i<5; i++) // проход по столбцу
    {for (j=0; j<5; j++) //проход по стоке
        cout<< Mas[i][j]<<"   " ; // вывод массива
    cout<<endl;                //конец j-той строки
    }
 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 16:08     Сдвиг элементов матрицы
Посмотрите здесь:

C++ Осуществить циклический сдвиг элементов прямоугольной матрицы
Циклический сдвиг прямоугольной матрицы на n элементов вправо C++
C++ Осуществить циклический сдвиг элементов квадратной матрицы
Что такое циклический сдвиг элементов матрицы C++
C++ Дано одномерный массив Х, размером 15 элементов. Провести циклический сдвиг элементов в массиве вправо на 2 позиции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IFree Host
Заблокирован
05.02.2012, 16:15     Сдвиг элементов матрицы #2
mika_vazovski, Ну, поменяй i и j местами.
mika_vazovski
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 5
05.02.2012, 16:27  [ТС]     Сдвиг элементов матрицы #3
IFree Host сейчас попробую

Добавлено через 4 минуты
IFree Host спасибо!!! теперь все правильно работает
IFree Host
Заблокирован
05.02.2012, 16:28     Сдвиг элементов матрицы #4
mika_vazovski, Удачи!
mika_vazovski
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 5
05.02.2012, 16:40  [ТС]     Сдвиг элементов матрицы #5
она без сомнения пригодится
Roguen
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 7
08.04.2013, 17:57     Сдвиг элементов матрицы #6
можешь скинуть правильный код? у меня такое же задание, ничего не получается
Yandex
Объявления
08.04.2013, 17:57     Сдвиг элементов матрицы
Ответ Создать тему
Опции темы

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