C/C++

Программа на C срочно

Объявите указатель на массив типа int и выделите память память для 12-ти элементов. напишите три функции: первая должна заполнить ячейки данными, вторая – показать данные на экран, третья - поменяет значения четных и нечетных ячеек массива.
Например есть массив из 4-х элементов: 1 2 3 4
Данные после работы функции: 2 1 4 3
Dilshod Usmonov
Dilshod Usmonov
898
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
void fill(int* box, size_t n) {
size_t i = 0;
srand((unsigned)time(NULL));
while (i < n) {
box[i] = RAND(10, 100);
++i;
}
}
void show(int* box, size_t n) {
size_t i = 0;
while (i < n) {
printf("%5i", box[i]);
++i;
}
puts("");
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
void flip(int* box, size_t n) {
size_t i = 0;
size_t j = 1;
while (j < n) {
swap(&box[i], &box[j]);
i += 2;
j += 2;
}
}
int main(void) {
size_t n = 12;
int* box = (int*)malloc(n * sizeof(int));
fill(box, n);
show(box, n);
flip(box, n);
show(box, n);
free(box);
system("pause > nul");
return 0;
}
Максим Советов
Максим Советов
59 969
Лучший ответ
Dilshod Usmonov нужно чтобы значения самому задавать
// Заполнение
void fill_arr(int *arr, int size)
{
    for(int i = 0; i < size; i++)
        scanf("%d", &arr[i]);
}

// Вывод
void print_arr(int *arr, int size)
{
    for(int i = 0; i < size; i++)
        printf("%3d", arr[i]);
    printf("\n");
}

// Замена
void swap_arr(int *arr, int size)
{
    for(int i = 0; i < size - 1; i += 2)
    {
        int tmp = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = tmp;
    }
}

int main()
{
    int *arr;
    arr = calloc(sizeof(int), 12);
    fill_arr(arr, 12);
    print_arr(arr, 12);
    swap_arr(arr, 12);
    print_arr(arr, 12);
    free(arr);
}

P.S. Код не тестил
Илья Барышев
Илья Барышев
73 465