Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
mika_vazovski
3 / 3 / 1
Регистрация: 01.02.2012
Сообщений: 5
#1

Осуществить циклический сдвиг элементов прямоугольной матрицы - C++

05.02.2012, 16:08. Просмотров 2068. Ответов 9
Метки нет (Все метки)

Здравствуйте, было задание
Осуществить циклический сдвиг элементов прямоугольной матрицы на п элементов
вправо или вниз (в зависимости от введенного режима), п может быть
больше количества элементов в строке или столбце.

я сделала матрицу 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;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 16:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Осуществить циклический сдвиг элементов прямоугольной матрицы (C++):

Осуществить циклический сдвиг элементов прямоугольной матрицы
Помогите решить задачки. Я не оть программирую, а делать над... (С++) 1)...

Осуществить циклический сдвиг элементов прямоугольной матрицы
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов...

Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов...

Циклический сдвиг элементов прямоугольной матрицы
Мне нужно сделать такую программу: Осуществить циклический сдвиг элементов...

Циклический сдвиг прямоугольной матрицы на n элементов вправо
Подскажите пожалуйста в чем ошибка. Надо осуществить циклический сдвиг...

Осуществить циклический сдвиг элементов квадратной матрицы
Помогите решить эту задачу: Осуществить циклический сдвиг элементов квадратной...

9
IFree Host
Заблокирован
05.02.2012, 16:15 #2
mika_vazovski, Ну, поменяй i и j местами.
2
mika_vazovski
3 / 3 / 1
Регистрация: 01.02.2012
Сообщений: 5
05.02.2012, 16:27  [ТС] #3
IFree Host сейчас попробую

Добавлено через 4 минуты
IFree Host спасибо!!! теперь все правильно работает
1
IFree Host
Заблокирован
05.02.2012, 16:28 #4
mika_vazovski, Удачи!
1
mika_vazovski
3 / 3 / 1
Регистрация: 01.02.2012
Сообщений: 5
05.02.2012, 16:40  [ТС] #5
она без сомнения пригодится
1
Roguen
1 / 1 / 0
Регистрация: 23.03.2013
Сообщений: 7
08.04.2013, 17:57 #6
можешь скинуть правильный код? у меня такое же задание, ничего не получается
1
с787ан
0 / 0 / 3
Регистрация: 16.12.2015
Сообщений: 18
03.04.2018, 13:22 #7
Не могу понять, какие именно i и j нужно поменять местами, подскажите пожалуйста
0
с787ан
0 / 0 / 3
Регистрация: 16.12.2015
Сообщений: 18
03.04.2018, 13:35 #8
Здравствуйте, было задание
Осуществить циклический сдвиг элементов прямоугольной матрицы на п элементов
вправо или вниз (в зависимости от введенного режима), п может быть
больше количества элементов в строке или столбце.
я сделала матрицу 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
#include <iostream>
#include <conio.h>
#include <clocale>
#include <math.h>
#include <stdio.h>
using namespace std;
 
int main()
{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];}
   
for (i=0; i<5; i++) // проход по столбцу
    {for (j=0; j<5; j++) //проход по стоке
        cout<< Mas[i][j]<<"   " ; // вывод массива
    cout<<endl;                //конец j-той строки
    }
 
    _getch();
    return 0;
}
0
zss
Модератор
Эксперт С++
6961 / 6523 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
03.04.2018, 13:41 #9
Цитата Сообщение от с787ан Посмотреть сообщение
C++
1
if (naprav==0) ;
означает
C++
1
2
if (naprav==0)
    ;  //ничего не делать
А остальной код в скобках
C++
1
2
3
{for (i=0; i<5; i++)
     for (j=0; j<5; j++)
         Mas[i][j]=M[i][(j+n)%5];}
к условию не относится!
1
с787ан
0 / 0 / 3
Регистрация: 16.12.2015
Сообщений: 18
03.04.2018, 14:47 #10
Не понимаю, можете подробнее написать или какой код конкретнее нужно туда написать вместо этого

Добавлено через 8 минут
Я имею в виду про этот кусочек, если ошибка здесь
C++
1
2
3
4
if (naprav==0);
  { for (i=0; i<5; i++)
     for (j=0; j<5; j++)
     Mas[i][j]=M[i][(j+n)%5];}
Добавлено через 3 минуты
Посоветовали поменять местами i и j, не могу понять в каком месте?

Добавлено через 43 минуты
разобралась, благодарю вас!
0
03.04.2018, 14:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2018, 14:47
Привет! Вот еще темы с решениями:

Осуществить циклический сдвиг элементов квадратной матрицы
(Console Application) Осуществить циклический сдвиг элементов квадратной...

Как осуществить циклический сдвиг элементов квадратной матрицы
Помогите осуществить циклический сдвиг элементов квадратной матрицы размерности...

Осуществить циклический сдвиг матрицы по условию
Необходимо осуществить циклический сдвиг элементов прямоугольной матрицы на n...

Осуществить циклический сдвиг элементов
Осуществить циклический сдвиг элементов квадратной матрицы на n элементов...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru