Загрузка данных


#include <stdio.h>

#define SIZE 10

int input(int *a, int n);
void output(int *a, int n);
void sort(int *a, int n);
void swap(int *a, int *b);

int main(void) {
    int data[SIZE];

    if (input(data, SIZE)) {
        sort(data, SIZE);
        output(data, SIZE);
    } else {
        printf("n/a");
    }

    return 0;
}

int input(int *a, int n) {
    int result = 1;

    for (int *p = a; result && p - a < n; p++) {
        if (scanf("%d", p) != 1) {
            result = 0;
        }
    }

    return result;
}

void output(int *a, int n) {
    for (int *p = a; p - a < n; p++) {
        if (p != a) {
            printf(" ");
        }
        printf("%d", *p);
    }
}

void sort(int *a, int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int *p = a; p - a < n - i - 1; p++) {
            if (*p > *(p + 1)) {
                swap(p, p + 1);
            }
        }
    }
}

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}



#include <stdio.h>

#define NMAX 10

int input(int *a, int *n);
int sum_even(int *a, int n);
int create_result_array(int *a, int n, int sum, int *result);
void output(int sum, int *a, int n);

int main(void) {
    int n;
    int data[NMAX];
    int result[NMAX];
    int sum;
    int result_n;

    if (input(data, &n)) {
        sum = sum_even(data, n);

        if (sum == 0) {
            printf("n/a");
        } else {
            result_n = create_result_array(data, n, sum, result);
            output(sum, result, result_n);
        }
    } else {
        printf("n/a");
    }

    return 0;
}

int input(int *a, int *n) {
    int result = 1;

    if (scanf("%d", n) != 1 || *n <= 0 || *n > NMAX) {
        result = 0;
    }

    for (int *p = a; result && p - a < *n; p++) {
        if (scanf("%d", p) != 1) {
            result = 0;
        }
    }

    return result;
}

int sum_even(int *a, int n) {
    int sum = 0;

    for (int *p = a; p - a < n; p++) {
        if (*p != 0 && *p % 2 == 0) {
            sum += *p;
        }
    }

    return sum;
}

int create_result_array(int *a, int n, int sum, int *result) {
    int count = 0;

    for (int *p = a; p - a < n; p++) {
        if (*p != 0 && sum % *p == 0) {
            *(result + count) = *p;
            count++;
        }
    }

    return count;
}

void output(int sum, int *a, int n) {
    printf("%d\n", sum);

    for (int *p = a; p - a < n; p++) {
        if (p != a) {
            printf(" ");
        }
        printf("%d", *p);
    }
}



#include <stdio.h>

#define NMAX 10

int input(int *a, int *n, int *shift);
void output(int *a, int n);
void cycle_shift(int *a, int n, int shift);
void shift_left_once(int *a, int n);

int main(void) {
    int n;
    int shift;
    int data[NMAX];

    if (input(data, &n, &shift)) {
        cycle_shift(data, n, shift);
        output(data, n);
    } else {
        printf("n/a");
    }

    return 0;
}

int input(int *a, int *n, int *shift) {
    int result = 1;

    if (scanf("%d", n) != 1 || *n <= 0 || *n > NMAX) {
        result = 0;
    }

    for (int *p = a; result && p - a < *n; p++) {
        if (scanf("%d", p) != 1) {
            result = 0;
        }
    }

    if (result && scanf("%d", shift) != 1) {
        result = 0;
    }

    return result;
}

void output(int *a, int n) {
    for (int *p = a; p - a < n; p++) {
        if (p != a) {
            printf(" ");
        }
        printf("%d", *p);
    }
}

void cycle_shift(int *a, int n, int shift) {
    int real_shift = shift % n;

    if (real_shift < 0) {
        real_shift += n;
    }

    for (int i = 0; i < real_shift; i++) {
        shift_left_once(a, n);
    }
}

void shift_left_once(int *a, int n) {
    int first = *a;

    for (int *p = a; p - a < n - 1; p++) {
        *p = *(p + 1);
    }

    *(a + n - 1) = first;
}