C/C++
Программа на С. Массивы
Создать два динамических массива(количество элементов каждого задает пользователь) и заполнить их случайными целыми числами из диапазона [-5;5]. Не используя никаких других массивов, переместить все отрицательные числа в один динамический массив, а ноли и положительные числа - в другой изменив при этом размер массивов.
Может сначала покажешь что ты написал, потом тебе люди могут дать совет как решить, и потом сам решить сможешь
Александр Старосадчий
Так он просит написать
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
size_t length(const char* msg) {
size_t value;
printf("%s", msg);
scanf_s("%zu", &value);
return value;
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int* create(int* ptr, size_t n, int a, int b) {
size_t i = 0;
if (!n) return NULL;
if (a > b) swap(&a, &b);
ptr = (int*)malloc(n * sizeof(int));
for (; i < n; ++i) ptr[i] = RAND(a, b);
return ptr;
}
void show(int* ptr, const size_t n, int w) {
size_t i = 0;
for (; i < n; ++i) printf("%*i", w, ptr[i]);
puts("");
}
void separate(int* first, size_t* n, int* second, size_t* m) {
size_t nm = *n + *m;
size_t i;
size_t j = 0;
for (i = *n; i < nm; ++i) first[i] = second[j++];
j = 0;
for (i = 0; i < nm; ++i) if (first[i] >= 0) second[j++] = first[i];
*m = j;
for (i = 0; i < nm; ++i) if (first[i] < 0) second[j++] = first[i];
*n = nm - *m;
for (i = 0, j = *m; i < *n; ++i, ++j) first[i] = second[j];
}
int main() {
int a = -5;
int b = 5;
int w = 4;
size_t n = length("n: ");
size_t m = length("m: ");
size_t nm = n + m;
int* first = NULL;
int* second = NULL;
puts("-----------");
srand((unsigned)time(NULL));
first = create(first, nm, a, b);
show(first, n, w);
second = create(second, nm, a, b);
show(second, m, w);
puts("-----------");
separate(first, &n, second, &m);
show(first, n, w);
show(second, m, w);
// две free() красноречиво говорят о том, что в программе всего два массива
free(first);
free(second);
system("pause > nul");
}
#include <stdlib.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
size_t length(const char* msg) {
size_t value;
printf("%s", msg);
scanf_s("%zu", &value);
return value;
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int* create(int* ptr, size_t n, int a, int b) {
size_t i = 0;
if (!n) return NULL;
if (a > b) swap(&a, &b);
ptr = (int*)malloc(n * sizeof(int));
for (; i < n; ++i) ptr[i] = RAND(a, b);
return ptr;
}
void show(int* ptr, const size_t n, int w) {
size_t i = 0;
for (; i < n; ++i) printf("%*i", w, ptr[i]);
puts("");
}
void separate(int* first, size_t* n, int* second, size_t* m) {
size_t nm = *n + *m;
size_t i;
size_t j = 0;
for (i = *n; i < nm; ++i) first[i] = second[j++];
j = 0;
for (i = 0; i < nm; ++i) if (first[i] >= 0) second[j++] = first[i];
*m = j;
for (i = 0; i < nm; ++i) if (first[i] < 0) second[j++] = first[i];
*n = nm - *m;
for (i = 0, j = *m; i < *n; ++i, ++j) first[i] = second[j];
}
int main() {
int a = -5;
int b = 5;
int w = 4;
size_t n = length("n: ");
size_t m = length("m: ");
size_t nm = n + m;
int* first = NULL;
int* second = NULL;
puts("-----------");
srand((unsigned)time(NULL));
first = create(first, nm, a, b);
show(first, n, w);
second = create(second, nm, a, b);
show(second, m, w);
puts("-----------");
separate(first, &n, second, &m);
show(first, n, w);
show(second, m, w);
// две free() красноречиво говорят о том, что в программе всего два массива
free(first);
free(second);
system("pause > nul");
}
Fallen Angel
У меня "красноречивый" вопрос.
С точки зрения вменяемого программирования какой-нибудь кодер будет вперемежку плодить отрицательные и положительные значения в каждом массиве, или заранее определит отдельный массив?))
С точки зрения вменяемого программирования какой-нибудь кодер будет вперемежку плодить отрицательные и положительные значения в каждом массиве, или заранее определит отдельный массив?))
Што
Угу
Да
Похожие вопросы
- Напишите пожалуйста программу на СИ, массив стат или динам
- Составить программу. В одномерном массиве произвольных чисел вычислить произведения четных и нечетных элементов.
- Как реализовать программу, в которой массив заполняется рандомно, а сумма его элементов всегда будет равна 1? С++
- Помогите, пожалуйста, написать программу на C++ (массивы)
- Помогите плиз написать программу на Си Массив структур
- Программа на C++, Массивы
- Программа не выполняет условия задания, исходный массив меняет сам себя, помогите найти ошибку
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Написать программу на С++ с применением одномерных массивов, используя указатели.
- Написать программу «справочник». Создать два одномерных массива. Один массив хранит номера мобильных телефонов, второй