Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 13
1

Ошиба циклического сдвига

15.04.2014, 12:10. Просмотров 453. Ответов 1
Метки нет (Все метки)

Вот задание. Дана действительная квадратная матрица порядка n.
1) осуществить циклический сдвиг элементов прямоугольной матрицы на N элементов вправо или вниз (в зависимости от введенного режима). 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include<iostream>
 
using namespace std;
 
 
 
#define N 6
#define M 6
 
void rotright(int** A, int k)
{
    int q = 0, R[N*M] = { 0 };
    for (int i = 0; i < N; i++)
    for (int j = 0; j < M; j++)
        R[q++] = A[i][j];
 
    int* temp = new int[k];
    for (int t = N*M - k, s = 0; t < N*M; t++)
        temp[s++] = R[t];
 
    while (--k >= 0)
    {
        for (int m = N*M - 2; m >= 0; m--)
            R[m + 1] = R[m];
    }
 
    for (int x = 0; temp[x] >= 0; x++)
        R[x] = temp[x];
 
    int n1 = 0, v = 0;
    for (int n2 = 0; n1 < N && v < q; n2++)
    {
        if (n2 >= M) { n2 = 0; n1++; }
        A[n1][n2] = R[v++];
    }
}
 
void rotdown(int** A, int k)
{
    int** temp = new int*[k];
    for (int t = N - k, s = 0; t < N; t++)
        temp[s++] = A[t];
 
    int r = k;
    while (--r >= 0)
    {
        for (int m = N - 2; m >= 0; m--)
            A[m + 1] = A[m];
    }
 
    for (int x = 0; x < k; x++)
        A[x] = temp[x];
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    printf("Матрица \n");
    printf("\n");
    int** A = new int*[N];
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
        for (int j = 0; j < M; j++)
        {
            A[i][j] = rand() % 9 + 0;
            printf("%d ", A[i][j]);
 
 
        }
 
 
        printf("\n");
    }
 
    printf("\n");
 
    int k = 0;
    printf("Сдвиг на позицию k = "); scanf_s("%d", &k);
 
    printf("Сдвиг:\n");
    printf("1.Вправо\n");
    printf("2.Вниз\n");
    printf("\n");
 
    switch (_getch())
    {
    case '1': rotright(A, k); break;
    case '2': rotdown(A, k); break;
    default: break;
    }
 
    for (int s1 = 0; s1 < N; s1++)
    {
        for (int s2 = 0; s2 < M; s2++)
            printf("%d ", A[s1][s2]);
 
 
        printf("\n");
    }
 
    _getch();
 
    return 0;
}
в чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2014, 12:10
Ответы с готовыми решениями:

Как закодировать методом циклического сдвига?
Здравствуйте! Вопрос такой, что представляет из себя кодировка методом циклического сдвига на 2...

Программа циклического сдвига элементов массива
Помогите!Срочно! Составить программу циклического сдвига элементов массива А(10) на 5 позиций...

Функция циклического сдвига побитово вправо
Форумчане, приветствую! Подскажите почему не работает сдвиг вправо? Программа компилируется, но...

Написать программы шифрования и расшифровки файла методом циклического сдвига
Написать программы шифрования и расшифровки файла методом циклического сдвига. Т.е. каждый символ...

1
Заблокирован
15.04.2014, 15:37 2
Цитата Сообщение от Fuuny Посмотреть сообщение
Дана действительная квадратная матрица
Цитата Сообщение от Fuuny Посмотреть сообщение
осуществить циклический сдвиг элементов прямоугольной матрицы
Так чего дано то?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2014, 15:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Реализовать функции шифровки и дешифровки методом циклического сдвига битов
Даны текстовые файлы. Реализовать функции шифровки и дешифровки методом циклического сдвига битов...

Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Проверьте пожалуйста, правильное ли решение. Ввести число и вывести результат циклического сдвига...

Матрицы: определить номера строк, совпадающих полностью или в результате циклического сдвига
Элементами целочисленной матрицы являются 0 или 1. Определить: - номера строк, совпадающих...

Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз
Циклическим сдвигом вправо последовательности называется последовательность, получаемая из исходной...

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

Функция Циклического сдвига
Уже несколько дней мучаюсь никак не могу организовать функции циклического сдвига. Необходимо...


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

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

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