Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.06.2020
Сообщений: 4
1

Шаблоны и перегрузка

01.06.2020, 10:09. Показов 290. Ответов 2

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <clocale>
#include <conio.h>
 
using namespace std;
 
// Функция, которая инициализирует массив числами от 1 до 20
template <typename T>
void init(int** spiral, int N);
 
// Фунцкия, которая "сдигает слои"
template <typename T>
void sdvig(int** spiral, int N, int Step);
 
// Функция вывода
template <typename T>
void print(int** spiral, int N);
 
int main()
{
    const int N = 8;
    int **spiral;
    int Step;
 
    spiral = new int*[N];
    for (int i = 0; i < N; i++)
        spiral[i] = new int[N];
 
    //инициализация массива числами от 1 до 20
    srand(time(NULL));
    setlocale (LC_ALL,"rus");
    cout <<"Исходная матрица:"<< endl;
 
    init (spiral, N);
 
    //запрос количества шагов поворота
    cout << endl <<"На сколько выполнить сдвиг? Шаг = ";
    cin >> Step;
 
    sdvig(spiral, N, Step);
 
 
    //Результат
    cout << "Результат:" << endl;
    print(spiral, N);
 
    for (int i = 0; i < N; i++)
        delete[] spiral[i];
    delete[] spiral;
 
    getch();
    return 0;
}
 
template <typename T>
void init(int** spiral, int N)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            spiral[i][j] = rand() % 20 + 1;
            cout << "["<< spiral[i][j] << "]; ";
        }
        cout <<endl;
    }
}
 
template <typename T>
void sdvig(int** spiral, int N, int Step)
{
    int  cur[4 * (N - 1)], shift[4 * (N - 1)];
    int edge, c;
 
    for (int k = 0; k < N / 2; k++) //слои
    {
        edge = N - 1 - k;
        //снять слой
        c = 0;
 
        for (int j = k; j < edge; j++)
        {
            cur[c] = spiral[k][j];
            c++;
        }
 
        for (int i = k; i < edge; i++)
        {
            cur[c] = spiral[i][edge];
            c++;
        }
 
        for (int j = edge; j >= k; j--)
        {
            cur[c] = spiral[edge][j];
            c++;
        }
 
        for (int i = edge - 1; i > k; i--)
        {
            cur[c] = spiral[i][k];
            c++;
        }
 
        //переставить
        for (int i = 0; i < 4 * (N - 2 * k - 1); i++)
            shift[(i + Step) % (4 * (N - 2 * k - 1))] = cur[i];
 
        //одеть слой
        c = 0;
 
        for (int j = k; j < edge; j++)
        {
            spiral[k][j] = shift[c];
            c++;
        }
 
        for (int i = k; i < edge; i++)
        {
            spiral[i][edge] = shift[c];
            c++;
        }
 
        for (int j = edge; j >= k; j--)
        {
            spiral[edge][j] = shift[c];
            c++;
        }
 
        for (int i = edge - 1; i > k; i--)
        {
            spiral[i][k] = shift[c];
            c++;
        }
    }//for - переход на следующий слой
 
}
template <typename T>
void print(int** spiral, int N)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            cout << "["<< spiral[i][j] << "]; ";
 
        cout << endl;
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2020, 10:09
Ответы с готовыми решениями:

Перегрузка и шаблоны
Для каждого пункта задания создать: 1. Перегружаемые функции для типов int и double 2. Шаблоны...

Перегрузка оператора [] и шаблоны.
Всем доброго времени суток! Проблема такая: есть класс сVector template &lt;class T, int Size&gt;...

Перегрузка оператора == и шаблоны
Почему присутствие структуры Hard Logic приводит к ошибке компиляции, а структуры SoftLogic — нет?...

Перегрузка операторов и шаблоны
#include &lt;iostream&gt; using namespace std; template &lt;class X, int size&gt; class type { X mas;...

2
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.06.2020, 11:08 2
Цитата Сообщение от kiselevcergei21 Посмотреть сообщение
// Функция, которая инициализирует массив числами от 1 до 20
template <typename T>
void init(int** spiral, int N);
// Фунцкия, которая "сдигает слои"
template <typename T>
void sdvig(int** spiral, int N, int Step);
// Функция вывода
template <typename T>
void print(int** spiral, int N);
А зачем здесь шаблоны?
Может надо
C++
1
2
template <typename T>
void init(T** spiral, int N);
?
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
01.06.2020, 11:43 3
Цитата Сообщение от kiselevcergei21 Посмотреть сообщение
Шаблоны и перегрузка
И? К чему это все вывалено в форум?
0
01.06.2020, 11:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2020, 11:43
Помогаю со студенческими работами здесь

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

Шаблоны классов, перегрузка операторов
Задание:Реализовать шаблон классов Array. Перегрузить операторы присваивания =, ввода &gt;&gt; и вывода...

Шаблоны и перегрузка различных операторов
Не могу правильно описать шаблон при перегрузке операторов. Добился того,что не видит ошибок..но...

Шаблоны перегрузка ввода/вывода
#include &lt;iostream&gt; #include &lt;assert.h&gt; #include &lt;stdlib.h&gt; using namespace std; template...

Перегрузка операторов через шаблоны
Есть класс дробь, переопределил операторы (внутри класса). В таком случае (дробь оператор что-то)...

Шаблоны классов, перегрузка операторов, C2679
#include &lt;iostream&gt;//для std::cin, std::cout #include &lt;cstdio&gt; #include &lt;string&gt; #include...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru