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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа по массивам http://www.cyberforum.ru/cpp-beginners/thread1148918.html
Ребя может кто помочь написать программу на экзамен. Вот задание: составить прогу для удвоения всех элементов двумерного массива А (размер массива 4на4). Элементы массива принимают значения от 0 до 100. Вывести исходный и полученный массив построчно. Помогите пожалуйста.
C++ Кодирование методом Файра Добрый день. Может у кого-нибудь, есть исходник кодов Файра поделитесь пожалуйста, буду очень признателен. http://www.cyberforum.ru/cpp-beginners/thread1148897.html
Кроссплатформенный перевод русских букв в верхний/нижний регистр C++
Добрый день. В прикрепленном топике описываются способы вывода русских букв на консоль. Но они почти все подвязаны под винду. Более того, стандартная функция std::tolower/toupper не работает с русскими буквами. Подскажите кроссплатформенный вариант перевода русских букв в другой регистр, считывать я буду с std::cin, файлов. Нужна работа на nix и винде. Пробовал буст, но он тоже работает...
Шифр RSA C++
я написал шифр RSA но не могу понять как шифровать и расшифровать текст написанный с клавы или с файла?
C++ Дана таблица содержащая сведения об одежде: тип одежды http://www.cyberforum.ru/cpp-beginners/thread1148879.html
Дана таблица содержащая сведения об одежде: тип одежды (пальто, платье, костюм), цвет (черный, серый, коричневый, пестрый), размер (36-52) и цена (рубли и копейки). а)найти количество и общую стоимость пестрых платьев размера 46. б)упорядочить сведения по возрастанию размера. Ребята если сможете помогите написать программу.
C++/CLI WinForms Реализовать создание объекта класса с нужными параметрами Массивы в классе и проблемы с конструкторами Необработанное исключение NullReferenceException, Исключение, возникающее при попытке разыменования указателя NULL на объект. Ссылка на объект не указывает на экземпляр класса. Предлагаю куски кода класса Bankom.h, Bankom.cpp (там уже мало чего осталось), и Form4.h, где пытаюсь хоть как-нибудь реализовать создание объекта класса с нужными... подробнее

Показать сообщение отдельно
Fuuny
0 / 0 / 0
Регистрация: 15.04.2014
Сообщений: 13
15.04.2014, 12:10     Ошиба циклического сдвига
Вот задание. Дана действительная квадратная матрица порядка 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;
}
в чем ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru