0 / 0 / 0
Регистрация: 24.10.2017
Сообщений: 47
1

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

28.12.2017, 21:09. Показов 9579. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима), n может быть больше количества элементов в строке или столбце.
Хелп, написал код, а он только двигает матрицу влево независимо от того, какой режим стоит
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_ALL, "Russian");
    int M[3][3] = { 1,2,3,4,5,6,7,8,9 };
    int Mas[3][3] = { 1,1,1,1,1,1,1,1,1 };
    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<3; i++) // проход по столбцу
    {
        for (j = 0; j<3; j++) //проход по стоке
            cout << M[j][i] << "  ";
        cout << endl;
    }
    cout << endl;
    if (naprav == 0);
    {for (i = 0; i<3; i++)
        for (j = 0; j<3; j++)
            Mas[j][i] = M[j][(i + n) % 3]; }
    if (naprav == 1);
    {for (i = 0; i<3; i++)
        for (j = 0; j<3; j++)
            Mas[j][i] = M[(j + n) % 3][i]; }
    for (i = 0; i<3; i++) // проход по столбцу
    {
        for (j = 0; j<3; j++) //проход по стоке
            cout << Mas[j][i] << "  ";
        cout << endl;
    }
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2017, 21:09
Ответы с готовыми решениями:

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

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

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

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

4
Диссидент
Эксперт C
27367 / 17085 / 3772
Регистрация: 24.12.2010
Сообщений: 38,476
28.12.2017, 21:46 2
Цитата Сообщение от nobs_rozhead Посмотреть сообщение
if (naprav == 1);
Убери точку с запятой (строка 32)
Это весьма популярная и злая ошибочка
0
0 / 0 / 0
Регистрация: 24.10.2017
Сообщений: 47
28.12.2017, 21:52  [ТС] 3
да что с ней, что без неё, всё равно работает также
0
Диссидент
Эксперт C
27367 / 17085 / 3772
Регистрация: 24.12.2010
Сообщений: 38,476
28.12.2017, 21:57 4
nobs_rozhead, В строке 28 - тоже.
В код твой не вникал. Но эти строчки (28, 32) из твоего кода можно безболезненно выбросить. Ибо они НИЧЕГО не делают, и НИЧЕГО изменить не могут. Подумай - зачем они тебе? И какой ты в них пытался вложить смысл?
0
7425 / 5020 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
29.12.2017, 06:24 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
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{        
int i=0, j, m, n, k; 
//заполнение квадратного массива с клавиатуры
cout << "Enter size: "; cin >> m;
cout << "Enter shift: "; cin >> n;
cout << "Enter 0 right or 1 down : "; cin >> k;
if (n>m) n=n-m*(int(n/m));
double a[100][100], b[100][100];
for (i = 0; i < m; i++)
{
cout << "Enter " << i + 1 << " line\n";
for (j = 0; j < m; j++)
{
cout << "Enter matrix element: ";
cin >> a[i][j];
}
}
//вывод массива на экран 
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
cout<< a[i][j] <<" ";
cout<<endl;
}
cout<<endl;
if ((k==0) || (k==1))
{
if (k==0)
{
// Блок A формирование нового массива со сдвигом враво
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
b[i][j]=a[i][m-n+j];
for (i = 0; i <m; i++)
for (j = n; j < m; j++)
b[i][j]=a[i][j-n];
}
if (k==1)
{
// Блок B формирование нового массива со сдвигом вниз
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
b[i][j]=a[m-n+i][j];
for (i = n; i <m; i++)
for (j = 0; j < m; j++)
b[i][j]=a[i-n][j];
}
// вывод нового массива на экран 
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
cout<< b[i][j] <<" ";
cout<<endl;
}
}
else cout <<"Input Error";
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2017, 06:24
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru