
C/C++
Задача C++ с двухмерными массивами
Помогите решить домашку, пожалуйста


#include <iostream>
using namespace std;
class Box {
public:
Box() : x(0), y(0) {}
Box(int x, int y) : x(x), y(y) {
if (x > y) swap(x, y);
}
void set(size_t row, size_t column, int value) {
if (value % x == 0 || value % y == 0) {
++multiples.first;
multiples.second += value;
}
if (value >= x && value <= y) {
++range.first;
range.second += value;
}
if (is_prime(value)) {
++prime.first;
prime.second += value;
}
if (column > row && value > 0) {
++top.first;
top.second += value;
}
}
private:
int x, y;
pair<size_t, int> multiples;
pair<size_t, int> range;
pair<size_t, int> prime;
pair<size_t, int> top;
bool is_prime(int x) {
bool prime;
if (x <= 1) prime = false;
else if (x <= 5 && (x <= 2 || x == 3 || x == 5)) prime = true;
else if (~x & 1 || 0 == x % 3 || 0 == x % 5) prime = false;
else {
int n;
for (n = 3; n * n <= x && x % n; n += 2) { ; }
prime = n * n > x? true : false;
}
return prime;
}
friend ostream& operator<<(ostream& out, const Box& box) {
out << box.multiples.first << ' ' << box.multiples.second << ' '
<< box.range.first << ' ' << box.range.second << ' '
<< box.prime.first << ' ' << box.prime.second << ' '
<< box.top.first << ' ' << box.top.second << '\n';
return out;
}
};
int main() {
const size_t m = 100U;
int a[m][m];
Box box[m];
size_t n;
cin >> n;
for (size_t i = 0U; i < n; ++i) {
for (size_t j = 0U; j < n; ++j) {
cin >> a[i][j];
}
}
int x, y;
cin >> x >> y;
puts("");
for (size_t j = 0U; j < n; ++j) {
Box item(x, y);
for (size_t i = 0U; i < n; ++i) {
item.set(i, j, a[i][j]);
}
box[j] = item;
}
for (size_t i = 0U; i < n; ++i) cout << box[i];
puts("");
}
using namespace std;
class Box {
public:
Box() : x(0), y(0) {}
Box(int x, int y) : x(x), y(y) {
if (x > y) swap(x, y);
}
void set(size_t row, size_t column, int value) {
if (value % x == 0 || value % y == 0) {
++multiples.first;
multiples.second += value;
}
if (value >= x && value <= y) {
++range.first;
range.second += value;
}
if (is_prime(value)) {
++prime.first;
prime.second += value;
}
if (column > row && value > 0) {
++top.first;
top.second += value;
}
}
private:
int x, y;
pair<size_t, int> multiples;
pair<size_t, int> range;
pair<size_t, int> prime;
pair<size_t, int> top;
bool is_prime(int x) {
bool prime;
if (x <= 1) prime = false;
else if (x <= 5 && (x <= 2 || x == 3 || x == 5)) prime = true;
else if (~x & 1 || 0 == x % 3 || 0 == x % 5) prime = false;
else {
int n;
for (n = 3; n * n <= x && x % n; n += 2) { ; }
prime = n * n > x? true : false;
}
return prime;
}
friend ostream& operator<<(ostream& out, const Box& box) {
out << box.multiples.first << ' ' << box.multiples.second << ' '
<< box.range.first << ' ' << box.range.second << ' '
<< box.prime.first << ' ' << box.prime.second << ' '
<< box.top.first << ' ' << box.top.second << '\n';
return out;
}
};
int main() {
const size_t m = 100U;
int a[m][m];
Box box[m];
size_t n;
cin >> n;
for (size_t i = 0U; i < n; ++i) {
for (size_t j = 0U; j < n; ++j) {
cin >> a[i][j];
}
}
int x, y;
cin >> x >> y;
puts("");
for (size_t j = 0U; j < n; ++j) {
Box item(x, y);
for (size_t i = 0U; i < n; ++i) {
item.set(i, j, a[i][j]);
}
box[j] = item;
}
for (size_t i = 0U; i < n; ++i) cout << box[i];
puts("");
}
Alik Alimov

Похожие вопросы
- Как передать двухмерный массив в качестве аргумента через указатель.
- Написать РЕКУРСИВНУЮ функцию, которая принимает двухмерный массив целых чисел и выполняет круговой сдвиг массива ВЛЕВО.
- Напишите рекурсивную функцию, которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет
- Помогите написать программу по обработке двухмерного массива в с++
- Двухмерный массив с++
- Двухмерный массив 4x4
- Программирование на языке C++. Двухмерные массивы чисел
- С++ | Надо отсортировать двухмерный массив N*M в порядке возрастания и спадания ПО КАЖДОМУ СТОЛБЦУ ОТДЕЛЬНО
- C++ Одномерный динамический массив
- C++ | Структуры и массивы структур. Помогите пожалуйста!