Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 13
1

Работа с динамическим одномерным массивом

10.06.2019, 11:10. Просмотров 221. Ответов 1
Метки нет (Все метки)

Нужно реализовать функцию
C++
1
void appendElements (Array, *array, int *xs, int n);
, которая добавляет n элементов из массива xs в конец массива array.
Я написал программу, но после того, как ввожу размерность массива array, дальше ничего не происходит:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <stdbool.h>
 
typedef struct Array {
    int *data;
    int n;
} Array;
 
void destroyArray(Array *array) {
    if (array = !NULL) {
        free(array->data);
        free(array);
    }
}
 
void* mymalloc(size_t size) {
    void *result = malloc(size);
    if (result == NULL) {
        fprintf(stderr, "mymalloc: не удалось выделить %zd байт\n", size);
        exit(EXIT_FAILURE);
    }
    return result;
}
 
Array* newArray(int n) {
    Array *result = mymalloc(sizeof(*result));
    *result->data = malloc(sizeof(*result->data)*n);
    return result;
}
 
Array* copyArray(const Array *array) {
    Array *result = mymalloc(sizeof(*result));
    result->n = array->n;
    result->data = array->data;
    return result;
}
 
void* myrealloc(void *ptr, size_t size) {
    void *res = realloc(ptr, size);
    if (res == NULL && size != 0) {
        fprintf(stderr, "myrealloc: не удалось выделить %zd байт\n", size);
        exit(EXIT_FAILURE);
    }
    return res;
}
 
void appendElements(Array *array, int *xs, int n) {
    int *a = array->data;
    int m = array->n;
    int j = 0;
    int c = (m*sizeof(*array) + n*sizeof(*xs));
    *a = myrealloc(*a, c);
    for (int i = m; i < (m + n); i++) {
        a[i] = xs[j];
        j++;
        printf("%d ", a[i]);
    }
}
 
Array* readArray(const char *str) {
    Array *result = NULL;
    int n;
    printf("Введите размер %s: ", str);
    if (scanf("%d", &n) != 1 || n < 0) goto fail;
    result = newArray(n);
    int *data = result->data;
    for (int i = 0; i < n; i++) {
        if (scanf("%d", data + i) != 1) goto fail;
    }
    return result;
    fail:
    fprintf(stderr, "Ошибка\n");
    destroyArray(result);
    return NULL;
}
 
main() {
    setlocale(LC_ALL, "RUS");
    int m[5] = {1, 2, 3, 4};
    Array *s = readArray("array");
    printf("");
    appendElements(s, m, sizeof(m));
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2019, 11:10
Ответы с готовыми решениями:

Программа работы с одномерным динамическим массивом
Помогите пожалуйста!!! //Реализовать функционал работы с одномерным динамическим массивом. // 1....

Функции для работы с одномерным динамическим массивом
Написать функции для работы с одномерным динамическим массивом: 1. Заполнение массива случайными...

Определение класса для работы с одномерным динамическим массивом
задача : В массиве А(N) поменять местами последний отрицательный элемент с максимальным элементом....

Реализовать функционал работы с одномерным динамическим массивом (добавление одного элемента в начало)
Реализовать функционал работы с одномерным динамическим массивом. Возникла проблема с добавлением...

1
5885 / 4005 / 1644
Регистрация: 07.05.2019
Сообщений: 12,478
Записей в блоге: 1
10.06.2019, 11:54 2
Цитата Сообщение от kyojin Посмотреть сообщение
Я написал программу, но после того, как ввожу размерность массива array, дальше ничего не происходит:
appendElements(s, m, sizeof(m) / sizeof(*m));
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2019, 11:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с динамическим массивом
Помогите, пожалуйста. В чем проблема? Компилирует, но выполнять не хочет. Надо вставить элемент в...

Работа с динамическим массивом
Дано: динамический двумерный массив. Определить сумму всех элементов (с помощью функции, массив и...

Работа с динамическим двумерным массивом
Написал код. В двумерном массиве 5х5 находится максимальное значение каждой строки и затем...

Работа с динамическим массивом структур
Односвязный список. Проблема (скорее всего) в строке ListPoint1 = pointer; Pointer использую как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.