From 9ea7ae039b8f3065ebb29c7e1a851514bf704628 Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 15 Nov 2025 05:01:48 -0500 Subject: [PATCH] ya chort --- munit/munit.o | Bin 0 -> 87264 bytes util.o | Bin 0 -> 8472 bytes vector.c | 114 ++++++++++++++++++++++++++++++++++++++++++-------- vector.o | Bin 0 -> 13400 bytes vector_test | Bin 0 -> 92920 bytes vector_test.c | 73 +++++++++++++++++++++++++++++--- vector_test.o | Bin 0 -> 33336 bytes 7 files changed, 164 insertions(+), 23 deletions(-) create mode 100644 munit/munit.o create mode 100644 util.o create mode 100644 vector.o create mode 100755 vector_test create mode 100644 vector_test.o diff --git a/munit/munit.o b/munit/munit.o new file mode 100644 index 0000000000000000000000000000000000000000..76836ed18340e563d844d2510851351be67db43d GIT binary patch literal 87264 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 Dgx`l$ literal 0 HcmV?d00001 diff --git a/util.o b/util.o new file mode 100644 index 0000000000000000000000000000000000000000..cffe131490b9d52a2482ba500a412d1bad7632ed GIT binary patch literal 8472 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 - #include #include #include @@ -25,7 +24,21 @@ void vector_initdata(ivector *v, int *arr, size_t arrsz) { assert(v && arrsz); - // + + // Инициализируем как пустой вектор сначала + v->n = 0; + v->maxsz = VECTOR_START_SIZE; + v->data = xmalloc(ITEMSZ * VECTOR_START_SIZE); + + // Если нужно больше места, перевыделяем + if (arrsz > v->maxsz) { + v->data = xrealloc(v->data, ITEMSZ * arrsz); + v->maxsz = arrsz; + } + + // Копируем данные + memcpy(v->data, arr, ITEMSZ * arrsz); + v->n = arrsz; } void @@ -33,9 +46,11 @@ vector_free(ivector *v) { assert(v); + if (v->data) { + xfree(v->data); + } v->n = 0; v->maxsz = 0; - xfree(v->data); v->data = NULL; } @@ -43,17 +58,14 @@ size_t vector_len(const ivector *v) { assert(v); - - // - return 0; + return v->n; } int * vector_data(const ivector *v) { assert(v); - // - return NULL; + return v->data; } void @@ -61,49 +73,115 @@ vector_resize(ivector *v, int n) { assert(v); - // -} + if (n > v->maxsz) { + // Увеличиваем capacity + size_t new_maxsz = v->maxsz; + while (new_maxsz < n) { + new_maxsz *= VECTOR_GROW_FACTOR; + } + // Сохраняем старый указатель + int *old_data = v->data; + v->data = xmalloc(ITEMSZ * new_maxsz); + + // Копируем старые данные + if (old_data) { + memcpy(v->data, old_data, ITEMSZ * v->n); + xfree(old_data); + } + + // Обнуляем новую память + for (size_t i = v->n; i < new_maxsz; i++) { + v->data[i] = 0; + } + + v->maxsz = new_maxsz; + } else if (n > v->n) { + // Если увеличиваем размер в пределах capacity, обнуляем новые элементы + for (size_t i = v->n; i < n; i++) { + v->data[i] = 0; + } + } + + v->n = n; +} void vector_set(ivector *v, size_t idx, int val) { assert(v && idx < v->n); - // + v->data[idx] = val; } int vector_get(const ivector *v, size_t idx) { assert(v && idx < v->n); - // - return 0; + return v->data[idx]; } void vector_push(ivector *v, int val) { assert(v); - // + + // Проверяем, нужно ли увеличить capacity + if (v->n >= v->maxsz) { + size_t new_maxsz = v->maxsz * VECTOR_GROW_FACTOR; + v->data = xrealloc(v->data, ITEMSZ * new_maxsz); + v->maxsz = new_maxsz; + } + + // Добавляем элемент + v->data[v->n] = val; + v->n++; } void vector_pop(ivector *v) { assert(v); - // + +if (v->n > 0) { + v->n--; + } + // Если вектор пуст, ничего не делаем (без assert) } void vector_insert(ivector *v, size_t idx, int val) { - assert(v && v->n >= idx); - // + assert(v && idx <= v->n); + + // Проверяем, нужно ли увеличить capacity + if (v->n >= v->maxsz) { + size_t new_maxsz = v->maxsz * VECTOR_GROW_FACTOR; + if (new_maxsz == 0) new_maxsz = VECTOR_START_SIZE; + + v->data = xrealloc(v->data, ITEMSZ * new_maxsz); + v->maxsz = new_maxsz; + } + + // Сдвигаем элементы вправо + for (size_t i = v->n; i > idx; i--) { + v->data[i] = v->data[i - 1]; + } + + // Вставляем новый элемент + v->data[idx] = val; + v->n++; } void vector_del(ivector *v, size_t idx) { - // + assert(v && idx < v->n); + + // Сдвигаем элементы влево + for (size_t i = idx; i < v->n - 1; i++) { + v->data[i] = v->data[i + 1]; + } + + v->n--; } void diff --git a/vector.o b/vector.o new file mode 100644 index 0000000000000000000000000000000000000000..58d59833f026577fcd94a54f0f8e4f49e746de10 GIT binary patch literal 13400 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 literal 0 HcmV?d00001 diff --git a/vector_test b/vector_test new file mode 100755 index 0000000000000000000000000000000000000000..75547165664222db9745c3297cb490d535fe2001 GIT binary patch literal 92920 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 Y?){m14UEXoR{m*6Fz*f&2qdll2c6IduK)l5 literal 0 HcmV?d00001 diff --git a/vector_test.c b/vector_test.c index e77cff4..ccd08f7 100644 --- a/vector_test.c +++ b/vector_test.c @@ -77,7 +77,6 @@ test_vector_resize(const MunitParameter params[], void * data) munit_assert_size(v.n, <=, v.maxsz); - // Try to check that new memory is really zeroed i = ARRSZ(arr); p = vector_data(&v); for (; i < 16; i++) { @@ -107,7 +106,6 @@ test_vector_set_get(const MunitParameter params[], void * data) for (i = 0; i < vector_len(&v); i++) { int item = vector_get(&v, i); munit_assert_int(item, ==, i); - //double check with raw pointer munit_assert_int(p[i], ==, i); } @@ -132,7 +130,6 @@ test_vector_push_pop(const MunitParameter params[], void * data) } munit_assert_size(vector_len(&v), ==, ARRSZ(arr)); - // test vector_get for (i = 0; i < ARRSZ(arr); i++) { tmp = vector_get(&v, i); munit_assert_int(tmp, ==, arr[i]); @@ -149,19 +146,82 @@ test_vector_push_pop(const MunitParameter params[], void * data) } munit_assert_size(vector_len(&v), ==, ARRSZ(arr) - 2); - //test vector_pop underflow for (i = 0; i < ARRSZ(arr); i++) { vector_pop(&v); } munit_assert_size(vector_len(&v), ==, 0); - //test vector_pop vector_free(&v); return MUNIT_OK; } +static MunitResult +test_vector_insert(const MunitParameter params[], void * data) +{ + ivector v; + vector_init(&v); + + vector_insert(&v, 0, 100); + munit_assert_size(vector_len(&v), ==, 1); + munit_assert_int(vector_get(&v, 0), ==, 100); + + vector_insert(&v, 0, 200); + munit_assert_size(vector_len(&v), ==, 2); + munit_assert_int(vector_get(&v, 0), ==, 200); + munit_assert_int(vector_get(&v, 1), ==, 100); + + vector_insert(&v, 2, 300); + munit_assert_size(vector_len(&v), ==, 3); + munit_assert_int(vector_get(&v, 2), ==, 300); + + vector_insert(&v, 1, 400); + munit_assert_size(vector_len(&v), ==, 4); + munit_assert_int(vector_get(&v, 0), ==, 200); + munit_assert_int(vector_get(&v, 1), ==, 400); + munit_assert_int(vector_get(&v, 2), ==, 100); + munit_assert_int(vector_get(&v, 3), ==, 300); + + vector_free(&v); + return MUNIT_OK; +} + +static MunitResult +test_vector_del(const MunitParameter params[], void * data) +{ + ivector v; + vector_init(&v); + int i; + + for (i = 0; i < 5; i++) { + vector_push(&v, i * 10); + } + munit_assert_size(vector_len(&v), ==, 5); + + vector_del(&v, 0); + munit_assert_size(vector_len(&v), ==, 4); + munit_assert_int(vector_get(&v, 0), ==, 10); + + vector_del(&v, 3); + munit_assert_size(vector_len(&v), ==, 3); + munit_assert_int(vector_get(&v, 0), ==, 10); + munit_assert_int(vector_get(&v, 1), ==, 20); + munit_assert_int(vector_get(&v, 2), ==, 30); + + vector_del(&v, 1); + munit_assert_size(vector_len(&v), ==, 2); + munit_assert_int(vector_get(&v, 0), ==, 10); + munit_assert_int(vector_get(&v, 1), ==, 30); + + vector_del(&v, 0); + vector_del(&v, 0); + munit_assert_size(vector_len(&v), ==, 0); + + vector_free(&v); + return MUNIT_OK; +} + #define TEST_ITEM(func) {#func, func, NULL, NULL, MUNIT_TEST_OPTION_NONE } static MunitTest test_suite_tests[] = { @@ -173,6 +233,9 @@ static MunitTest test_suite_tests[] = { TEST_ITEM(test_vector_set_get), TEST_ITEM(test_vector_push_pop), + TEST_ITEM(test_vector_insert), + TEST_ITEM(test_vector_del), + { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; diff --git a/vector_test.o b/vector_test.o new file mode 100644 index 0000000000000000000000000000000000000000..db483e5c15821986847c3446aae3b70030bce6e6 GIT binary patch literal 33336 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