Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <conio.h>
- // функция создания массива размера N с переменным числом аргументов
- int * create_array(int N, ...){
- va_list ptr; // улучшенный указатель, нужен для получения значений (после int N), переданных в функцию
- int * arr = (int *) malloc(N * sizeof(int));
- // если нельзя выделить память (оперативка переполнена)
- if(arr == NULL){
- return NULL;
- }
- va_start(ptr, N);
- for(int i = 0; i < N; i++){
- arr[i] = va_arg(ptr, int);
- }
- va_end(ptr);
- return arr;
- }
- // удаление из массива arr элементов, стоящих на чётных местах (при нумерации с 1), т. е. 2, 4, 6, ...
- void del(int * arr, int N){
- int * arr2 = (int *) malloc((N / 2) * sizeof(int));
- for(int i = 1; i < N; i += 2){
- arr2[i / 2] = arr[i];
- }
- free(arr);
- arr = (int *) malloc((N / 2) * sizeof(int));
- for(int i = 0; i < N / 2; i++){
- arr[i] = arr2[i];
- }
- }
- // рекурсивная печать массива
- void print_array(int * arr, int N){
- if(N == 0){
- printf("\n");
- return;
- }
- printf("%d ", * arr);
- print_array(arr + 1, N - 1);
- }
- int main(){
- int N = 6;
- int * arr = create_array(N, 1, 2, 3, 4, 5, 6);
- print_array(arr, N);
- del(arr, N);
- print_array(arr, N / 2);
- getch();
- return 0;
- }
Add Comment
Please, Sign In to add comment