Форум программистов, компьютерный форум, киберфорум
Наши страницы

Написать функцию, осуществляющую циклический сдвиг строк и/или столбцов заданной матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ изменения порядка битов в 2-ч байтовом целом http://www.cyberforum.ru/cpp-beginners/thread802912.html
Доброго времени суток!:) Решаю следующую задачу, нужно ввести число, а затем поменять порядок битов в нем на обратный, так вот что-то не получается... заранее благодарю за помощь!) #include...
C++ Тип данных - массив Добрый день. Помогите разобраться с шаблоном, а точнее с типом массива. Вот сам код: #include <iostream> #include <iomanip> using namespace std; template <class T,int n> void init (T (&arr)... http://www.cyberforum.ru/cpp-beginners/thread802911.html
Динамическое выделение памяти! C++
Программа должна читать с клавы число и имя(до 15 символов). Данные должны вводится в одной функции а выводится во второй. Сохранять данные в main(). Завершатся должна когда пользователь введет...
Преобразование слов в цифры C++
вот задача: НАпишите программу преобразующую слова ноль-один-два. в цыфры 0-1-2. только я чёт немного запутался и почему то никак не могу освоить else =( напишите пожалуйста программи и если вас не...
C++ Табулирование функции http://www.cyberforum.ru/cpp-beginners/thread802858.html
помогите пожалуйста переделать с паскаля на с++, табулирование функции. program ex1; uses crt; var a,b,h,x:single; i,n:integer; s:string; c:integer; begin clrscr; repeat
C++ Виртуальные абстрактные базовые классы Привет всем!:-) Вчера столкнулся со следующей проблемой: компилятор ругается на чистый виртуальный деструктор. Собственно листинги: //workermi.h #ifndef WORKERMI_H_ #define WORKERMI_H_ ... подробнее

Показать сообщение отдельно
madfax
1 / 1 / 0
Регистрация: 05.06.2016
Сообщений: 15
03.07.2016, 12:00
".. написать функцию" упустил из виду
стопэ, так это же main() :\

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <iostream>
 
using::std::endl;
using::std::cout;
using::std::cin;
 
void ask(int, int, char &, int &);
void show(int **, int, int);
void r_up(int **, int, int);
void r_dn(int **, int, int);
void c_lt(int **, int, int);
void c_rt(int **, int, int);
 
void main(){
 
    int R = 3, C = 3;
    int **ar = new int*[R];
    ar[0] = new int[C]{1, 1, 3};
    ar[1] = new int[C]{1, 2, 2};
    ar[2] = new int[C]{3, 2, 3};
 
    show(ar, R, C);
 
    void(*pf)(int**, int, int) = show;
    char action;
    int pos;
 
    ask(R, C, action, pos);
 
    switch (action)
    {
    case'r':
        pf = c_rt;
        break;
    case'l':
        pf = c_lt;
        break;
    case'u':
        pf = r_up;
        break;
    case'd':
        pf = r_dn;
        break;
    }
 
    for (int i = 0; i < pos; i++)
    {
        pf(ar, R, C);
    }
 
    show(ar, R, C);
 
    for (int i = 0; i < R; i++) delete[] ar[i];
    delete[] ar;
}
 
void show(int **a, int r, int c){
 
    for (int i = 0; i < r; i++){
        cout << endl;
 
        for (int j = 0; j < c; j++)
            cout << a[i][j] << "\t";
    }
 
    cout << "\n\n";
}
 
void r_up(int **ar, int R, int C){
 
    int *tmp = new int[C];
 
    for (int j = 0; j < C; j++)
        tmp[j] = ar[0][j];
 
    for (int i = 0; i < R - 1; i++)
    for (int j = 0; j < C; j++)
        ar[i][j] = ar[i + 1][j];
 
    for (int j = 0; j < C; j++)
        ar[R - 1][j] = tmp[j];
 
    delete[] tmp;
}
 
 
void r_dn(int **ar, int R, int C){
 
    int *tmp = new int[C];
 
    for (int j = 0; j < C; j++)
        tmp[j] = ar[R - 1][j];
 
    for (int i = R - 1; i > 0; i--)
    for (int j = 0; j < C; j++)
        ar[i][j] = ar[i - 1][j];
 
    for (int j = 0; j < C; j++)
        ar[0][j] = tmp[j];
 
    delete[] tmp;
}
 
void c_lt(int **ar, int R, int C){
 
    int *tmp = new int[R];
 
    for (int i = 0; i < R; i++)
        tmp[i] = ar[i][0];
 
    for (int i = 0; i < R; i++)
    for (int j = 0; j < C - 1; j++)
        ar[i][j] = ar[i][j + 1];
 
    for (int i = 0; i < R; i++)
        ar[i][C - 1] = tmp[i];
 
    delete[] tmp;
}
 
void c_rt(int **ar, int R, int C){
 
    int *tmp = new int[R];
 
    for (int i = 0; i < R; i++)
        tmp[i] = ar[i][C - 1];
 
    for (int i = 0; i < R; i++)
    for (int j = C - 1; j > 0; j--)
        ar[i][j] = ar[i][j - 1];
 
    for (int i = 0; i < R; i++)
        ar[i][0] = tmp[i];
 
    delete[] tmp;
}
 
void ask(int C, int R, char &answer, int &p){
 
    do{
        cout << " right shift [ r ]  left [ l ]  up [ u ]  down [ d ]  : ";
        cin >> answer;
    } while (answer != 'r' && answer != 'l' && answer != 'u' && answer != 'd');
 
 
    if (answer == 'u' || answer == 'd'){
 
        do{
            cout << "\n will shift by [ 1 to R ] pos  : ";
            cin >> p;
        } while (p < 1 || p > R);
 
    }
    else{
 
        do{
            cout << "\n will shift by [ 1 to C ] pos  : ";
            cin >> p;
        } while (p < 1 || p > C);
 
    }
}
0
Миниатюры
Написать функцию, осуществляющую циклический сдвиг строк и/или столбцов заданной матрицы  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru