C/C++

Одномерные массивы на языке си

Помогите написать три кода.
1) Дан одномерный массив, разделите все его элементы на первый элемент. Вывести результирующий массив.
2) дан одномерный массив найти сумму квадратов всех элементов массива.
3) дан массив целых чисел вывести все четные элементы массива.
MU
Mr. Uno
247
1)
 #include  
#include
#include
#include

/* Размер массива */
#define N 20
/* Верхняя граница диапазона случайных чисел */
#define RANDOM_MAX 100
/* Нижняя граница диапазона случайных чисел */
#define RANDOM_MIN -100
/* Шаг случайных чисел в диапазоне */
#define RANDOM_STEP 1

void init(double array[N]) {
size_t i;
for (i = 0; i < N; ++i) {
array[i] = rand() % (int)((RANDOM_MAX - RANDOM_MIN + 1) / RANDOM_STEP) * RANDOM_STEP + RANDOM_MIN;
}
}

void print(double *array, size_t count) {
size_t i;
for (i = 0; i < count; ++i) {
printf(" %5.1lf", array[i]);
}
putchar('\n');
}

void process(double *source, double *result, size_t count) {
size_t i;
for (i = 0; i < count; ++i) {
result[i] = source[i] / source[0];
}
}

int main()
{
double array[N];
srand(time(NULL));
init(array);
printf(" Начальные элементы массива: ");
print(array, N);

double particle[N];
process(array, particle, N);
printf("После деления на 1-й элемент: ");
print(particle, N);

return 0;
}
3)
 #include 
#include
#include
#include

/* Размер массива */
#define N 20
/* Верхняя граница диапазона случайных чисел */
#define RANDOM_MAX 100
/* Нижняя граница диапазона случайных чисел */
#define RANDOM_MIN -100

void init(long array[N]) {
size_t i;
for (i = 0; i < N; ++i) {
array[i] = rand() % (RANDOM_MAX - RANDOM_MIN + 1) + RANDOM_MIN;
}
}

void print(long *array, size_t count, int (*filter)(long)) {
size_t i;
for (i = 0; i < count; ++i) {
if (filter(array[i])) printf(" %5ld", array[i]);
}
putchar('\n');
}

int even(long element) {
return (element & 1) == 0;
}

int trivialTrue(long element) {
return 1;
}

int main()
{
long array[N];
srand(time(NULL));
init(array);
printf(" Все элементы массива: ");
print(array, N, trivialTrue);
printf("Чётные элементы массива: ");
print(array, N, even);

return 0;
}
Алмас Жарылгасулы
Алмас Жарылгасулы
54 053
Лучший ответ
Mr. Uno разными, если не сложно.
Написал для 3 с динамическими массивами, вариантами ввода
 #include  
#include
#include

int slch(int a, int b) {
return a + rand() % (b - a + 1);
}
void input_1(int* matrix, int n)
{
//заполение исходной матрицы способом базового увеличения
for (int i = 0; i < n; i++) {
matrix[i] = i;
}
}
void input_2(int* matrix, int n)
{
//заполнение рандомным способом
for (int i = 0; i < n; i++) {
matrix[i] = slch(5, 25); /*slch(начальное значение выдачи рандомых чисел, конечное)*/
}
}
void input_3(int* matrix, int n)
{
//заполнение клавиатурным способом
printf("Enter Array Elements...\n");
for (int i = 0; i < n; i++) {
scanf_s("%d", &matrix[i]);
}
printf("\n");
}
void export_1(int *matrix, int n)
{
//Вывод исходной матрицы
printf("Array: \n");
for (int i = 0; i < n; ++i) {
printf("%d\t", matrix[i]);
}
printf("\n");
//Вывод итоговой матрицы
printf("Finall Array: \n");
for (int i = 0; i < n; ++i) {
if (matrix[i] % 2 == 0) {
printf("%d\t", matrix[i]);
}
}
}
int main() {
int n;
int way;
printf("Array size: ");
scanf_s("%i", &n); /*ввод кол-ва элементов*/
printf("*Choose how to fill the matrix:\n1 - base increase\n2 - random values\n3 - keyboard input\n");
scanf_s("%d", &way);
srand(time(NULL));
int *matrix = 0;
matrix = malloc(sizeof(*matrix) * n);

if (way == 1) {
input_1(matrix, n);
}
else if (way == 2) {
input_2(matrix, n);
}
else if (way == 3) {
input_3(matrix, n);
}
else printf("Invalid input!");

export_1(matrix, n);

free(matrix);

return 0;
}
Sanek Z
Sanek Z
403