Необходимо переписать данный код на векторный тип!!!
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <ctime>
#include <locale.h>
using namespace std;
//Создание массивов
int* randomArray(int* x, int k, int n) {
for (int i = 0; i < k; i++) {
x[i] = rand() % n;
}
return(x);
}
//Создание двухмерного массива
void newMatrix(int**& pole, int n) {
pole = new int* [n];
for (int i = 0; i < n; i++) {
pole[i] = new int[n];
}
}
//Заполнение двухмерного массива нулями
void MatrixZero(int**& pole, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
pole[i][j] = 0;
}
}
}
//Отмечает клетки в которые может попасть ферзь
void Way(int** pole, int n, int a, int ka, int b, int kb) {
while (a < n && b < n && !(a < 0 || b < 0)) {
pole[a][b]++;
a += ka;
b += kb;
}
}
//Отмечает ферзя и в какие клетки может попасть Ферзь
void FerzWays(int** pole, int* x, int* y, int k, int n) {
for (int i = 0; i < k; i++) {
int a = x[i], b = y[i];
pole[a][b] += 100;
Way(pole, n, a, 0, 0, 1);
Way(pole, n, 0, 1, b, 0);
Way(pole, n, a - 1, -1, b - 1, -1);
Way(pole, n, a - 1, -1, b + 1, 1);
Way(pole, n, a + 1, 1, b - 1, -1);
Way(pole, n, a + 1, 1, b + 1, 1);
}
}
//вывод поля на экран
void PrintPole(int** pole, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (pole[i][j] == 0) {
cout << setw(4) << 0;
}
else if (pole[i][j] < 100) {
cout << setw(4) << "x";
}
else {
cout << setw(4) << "f";
}
}
cout << endl;
}
}
//вывод координаты клеток, где не проходят ферзи
void PrintPoints(int** pole, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (pole[i][j] == 0) {
cout << "(" << i << ", " << j << ")" << endl;
}
}
}
}
int main() {
setlocale(LC_ALL, "Russian");
srand(time(NULL));
int n, k;
cout << "Введите n:" << endl;
cin >> n;
cout << "Введите k:" << endl;
cin >> k;
int* x = new int[k];
x = randomArray(x, k, n);
int* y = new int[k];
y = randomArray(y, k, n);
int** pole = NULL;
newMatrix(pole, n);
MatrixZero(pole, n);
FerzWays(pole, x, y, k, n);
cout << "Шахматное поле: " << endl;
PrintPole(pole, n);
cout << "Координаты клеток:" << endl;
PrintPoints(pole, n);
}
C/C++
Помогите!!! С++ Vector!!!
#include
#include
#include
#include
#include
#include
using namespace std;
// Создание массивов
vector randomArray(int k, int n) {
vector x(k);
for (int i = 0; i < k; i++) {
x[i] = rand() % n;
}
return x;
}
// Создание двухмерного массива
vector newMatrix(int n) {
vector pole(n, vector(n, 0));
return pole;
}
// Отмечает клетки, в которые может попасть ферзь
void Way(vector& pole, int n, int a, int ka, int b, int kb) {
while (a < n && b < n && !(a < 0 || b < 0)) {
pole[a][b]++;
a += ka;
b += kb;
}
}
// Отмечает ферзя и в какие клетки может попасть ферзь
void FerzWays(vector& pole, const vector& x, const vector& y, int k, int n) {
for (int i = 0; i < k; i++) {
int a = x[i], b = y[i];
pole[a][b] += 100;
Way(pole, n, a, 0, 0, 1);
Way(pole, n, 0, 1, b, 0);
Way(pole, n, a - 1, -1, b - 1, -1);
Way(pole, n, a - 1, -1, b + 1, 1);
Way(pole, n, a + 1, 1, b - 1, -1);
Way(pole, n, a + 1, 1, b + 1, 1);
}
}
// Вывод поля на экран
void PrintPole(const vector& pole, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (pole[i][j] == 0) {
cout
Игорь Усиков
спасибо, святой человек!!!!
это умеет делать за просто так наш любимый чат
очень просто, но лениво...
Похожие вопросы
- С++ Не работает двумерный вектор (std::vector)
- Программа на С++ с использованием vector
- Как проинициализировать std::vector используя указатель на базовый массив?
- C++: где vector хранит внутренний массив? В стеке или в куче?
- Почему никто из программистов никогда не пишет using namespace std;? Все пишут например вот так:std::vector<int> v1(10);
- Помогите с кодом C++
- Помогите понять формулу из книги Д. Кнута
- Помогите решить лабораторную c++
- Помогите с кодом с++
- Помогите новичку с программированием и матрицами C++