Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на С++.

Александр Профи (769), закрыт 1 год назад
Кто хорошо разбирается в динамических массивах, помогите пожалуйста. Можно использовать массивы, циклы, условные операторы, но нельзя добавлять библиотеки
Лучший ответ
Николай Веселуха Высший разум (360748) 1 год назад
 #include  
#include

using namespace std;

template
T input(const char* msg) {
T value{};
while (true) {
cout << msg;
cin >> value;
if (cin.fail()) {
cin.clear();
cin.ignore(0x1000, '\n');
} else {
cin.ignore(0x1000, '\n');
return value;
}
}
}

void fill_random(int* box, size_t n, int a, int b) {
if (a > b) swap(a, b);
uniform_int_distribution<> uid(a, b);
mt19937 gen{ random_device()() };
for (size_t i = 0; i < n; ++i) box[i] = uid(gen);
}

void show(int* box, size_t n) {
for (size_t i = 0; i < n; ++i) cout << box[i] << ' ';
puts("");
}

int main() {
auto n = input("Size array: ");
auto a = input("a: ");
auto b = input("b: ");
auto box = new int[n];
fill_random(box, n, a, b);
show(box, n);
delete[] box;
}
 #include  

using namespace std;

template
T input(const char* msg) {
T value{};
while (true) {
cout << msg;
cin >> value;
if (cin.fail()) {
cin.clear();
cin.ignore(0x1000, '\n');
} else {
cin.ignore(0x1000, '\n');
return value;
}
}
}

void show(int* box, size_t n) {
for (size_t i = 0; i < n; ++i) cout << box[i] << ' ';
puts("");
}

int main() {
auto n = input("Size array: ");
auto matrix = new int*[n];
for (size_t i = 0; i < n; ++i) matrix[i] = new int[n];
for (size_t i = 0; i < n; ++i) {
fill(matrix[i], matrix[i] + n, 1);
matrix[i][i] = 0;
}
for (size_t i = 0; i < n; ++i) show(matrix[i], n);
for (size_t i = 0; i < n; ++i) delete[] matrix[i];
delete[] matrix;
}
Остальные ответы
shizout Мастер (1975) 1 год назад
2.
 #include  

static size_t fill_array_range(int *array,
int begin, int end)
{
size_t arr_size = 0;

auto append = [](size_t &size, int *arr,
int val) {
if (arr) {
arr[size] = val;
}

size++;
};

if (begin < end) {
for (; begin <= end; begin++) {
append(arr_size, array, begin);
}
}
else if (begin > end) {
for (; begin >= end; begin--) {
append(arr_size, array, begin);
}
}
else {
append(arr_size, array, begin);
}

return arr_size;
}

int main()
{
size_t array_size;
int *array;
int a, b;
int i;

std::cin >> a >> b;

array_size = fill_array_range(nullptr, a, b);
array = new int[array_size];

fill_array_range(array, a, b);

for (i = 0; i < array_size; i++) {
std::cout << array[i] << ' ';
}

std::cout << '\n';
return 0;
}

// -3 3
// -3 -2 -1 0 1 2 3

// 3 -3
// 3 2 1 0 -1 -2 -3

// 2 2
// 2
3.
 #include  

int main()
{
int n, i, j, k;
int **array;

std::cin >> n;

if (n < 0) {
std::cerr << "order of matrix cannot be less than zero";
return -1;
}

array = new int*[n];

for (i = 0; i < n; i++) {
array[i] = new int[n];

for (j = 0; j < n; j++) {
if (i == j) {
array[i][j] = 0;
}
else {
array[i][j] = 1;
}
}
}

for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
std::cout << array[i][j] << ' ';
}

std::cout << '\n';

delete[] array[i];
}

delete[] array;
return 0;
}
Похожие вопросы