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

Написать функцию, осуществляющую циклический сдвиг строк и/или столбцов заданной матрицы - 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_ ... подробнее

Показать сообщение отдельно
N0t2Day
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 2
24.09.2016, 10:29
Как сделать проверку на то что б пользователь не выше за приделы массива???
Прошу прощения не знаю как оформить правильно, первый раз у вас!
Дана матрица порядка MxN (M строк, 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 <iostream>
#include <iomanip>
#include <time.h>
#include <Windows.h>
#include <math.h>
#include <stdio.h>
using namespace std;
 
enum ConsoleColor {
    Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray,
    Lightblue, LightGreen, Lightcyan, lightRed, LightMagenta, Yellow, White
};
void SetColor(int text, int background)
{
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}
void GotoXY(int X, int Y)
{
    HANDLE  hConsole;
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord = { X, Y };
    SetConsoleCursorPosition(hStdOut, coord);
}
void show_ar(int *ar[], int row, int col)
{
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cout << ' ' << setw(2) << ar[i][j];
        }
        cout << endl;
    }
}
int sdvig_ar(int *ar[], int row, int col, int choose)
{
    if (choose <= 0)
    {
        cout << "Введите номер строки которую будем сдвигать от 1 до " << row << ": ";
        int nomer_str;
        cin >> nomer_str;
        short a = nomer_str-1;
        if ( a < 0 || a > row)
        {
            cout << "Ошибка выбора строки" << endl;
            exit(0);
        }
        cout << "Куда будем сдвигать? Если вверх - 0, если в низ - 1." << endl;
        int vibor_sdviga;
        cin >> vibor_sdviga;
        cout << "Сколько сдвигов будем делать?" << endl;
        int kol_sdvigov;
        cin >> kol_sdvigov;
        for (int i = 0; i < kol_sdvigov; i++)
        {
            if (vibor_sdviga < 0 || vibor_sdviga > 1)
            {
                cout << "Ошибка выбора действия" << endl;
                exit(0);
            }
            if (vibor_sdviga == 0)
            {
                swap(ar[a - 1], ar[a]);
            }
 
            if (vibor_sdviga == 1)
            {
                swap(ar[a + 1], ar[a]);
            }
            a--;
        }
    }
}
void main()
{
    srand(time(NULL));
    //setlocale(LC_ALL, "Russian");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int row = 10;
    int col = 7;
    int **ar = new int *[row];
    int k = 10; // Заполним масив последовательными числами
    for (int i = 0; i < row; i++)
    {
        ar[i] = new int[col];
    }
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            ar[i][j] = k;
            k++;
        }
    }
    show_ar(ar, row, col);
    cout << endl;
    cout << "Что будем сдвигать? Если строку - 0, если столбец - 1.";
    cout << endl;
    int choose;
    cin >> choose;
    sdvig_ar(ar, row, col, choose);
    cout << endl;
    show_ar(ar, row, col);
    cout << endl;
 
 
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru