Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
OMAAGAAD
15 / 15 / 3
Регистрация: 24.09.2010
Сообщений: 45
#1

Функции создания массива и удаления эл-та из массива - C++

15.10.2010, 21:47. Просмотров 3704. Ответов 9
Метки нет (Все метки)

Вот нужно написать к двум функциям (на Си) .h и .c файлы :
1. создания массива
2. удаление элемента из массива

Помогите пожалуйста, что-то я не очень представлю как это сделать, не откахжусь от указаний и наставлений.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2010, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции создания массива и удаления эл-та из массива (C++):

Написать функции добавления и удаления произвольного элемента динамического массива - C++
Несмотря на вроде бы распространенность задачи нигде не могу найти простое и универсальное решение, без векторов в дополнительных функций....

Предусмотреть публичные методы добавления в конец массива, извлечения и удаления из массива по индексу - C++
Помогите пожалуйста! Написать класс динамического массива (массив, который может изменять свой размер в зависимости от количества...

Написать функции создания массива, сортировки и вывода. Ошибка Incompatible type conversion - C++
Доброе утро) Подскажите пожалуйста в чем ошибка. Задача: Создать массив n*m (ввод пользователем). Написать функции создания массива,...

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива - C++
Помогите, пожалуйста, нужно разработать метод-член класса для создания одномерного массива из отрицательных элементов двумерного...

Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением) - C++
Вот задания,не могу сделать ни одного из них,буду благодарен за помощь. Написать функции для выполнения операций над одномерным...

Как оформить операцию создания (формирования) массива структур из 5 полей (фамилия, имя, улица, дом, квартира) в виде функции? - C++
Как операцию создания массива структур (фамилия, имя, улица, № дома, № квартиры) записать в виде функции? Массив структур тут: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
15.10.2010, 23:50 #2
может нужна функция заполнения массива, а не создания???
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
15.10.2010, 23:52 #3
Цитата Сообщение от OMAAGAAD Посмотреть сообщение
1. создания массива
C
1
2
3
4
5
6
7
8
9
10
11
// *.h
int* CreateArray(size_t size);
 
// *.c
int* CreateArray(size_t size) {
  int* result = malloc(sizeof(int) * size);
  
  memset(result, 0, sizeof(int) * size);
  
  return result;
}
0
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
16.10.2010, 00:12 #4
CyBOSSeR, и что дальше?

int Arr = CreateArray(10); ??????
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.10.2010, 00:20 #5
NikolaWhite,
C
1
2
3
4
5
int* arr = CreateArray(10);
 
// Работаем с массивом arr
 
free(arr);
В чем, собственно, проблема?
0
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
16.10.2010, 01:05 #6
В чем, собственно, проблема?
Вы сами то пробовали запускать???

1>c:\users\пользователь\documents\visual studio 2008\projects\test\test\test.cpp(4) : error C2440: 'initializing' : cannot convert from 'void *' to 'int *'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>c:\users\пользователь\documents\visual studio 2008\projects\test\test\test.cpp(6) : error C3861: 'memset': identifier not found
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
16.10.2010, 01:18 #7
NikolaWhite,
C++
1
2
memset - #include <cstring>.
  int* result = (int*)malloc(sizeof(int) * size);
Пробуй.
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.10.2010, 11:23 #8
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Вы сами то пробовали запускать???
Нет.
Цитата Сообщение от NikolaWhite Посмотреть сообщение
1>c:\users\пользователь\documents\visual studio 2008\projects\test\test\test.cpp(6) : error C3861: 'memset': identifier not found
Добавить заголовочный файл указанный Lavroff'ым
Цитата Сообщение от NikolaWhite Посмотреть сообщение
1>c:\users\пользователь\documents\visual studio 2008\projects\test\test\test.cpp(4) : error C2440: 'initializing' : cannot convert from 'void *' to 'int *'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Ах да, приведение забыл:
C
1
int* result = (int*)malloc(sizeof(int) * size);
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,707
16.10.2010, 12:32 #9
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
// *.h
int* CreateArray(size_t size);
 
// *.c
int* CreateArray(size_t size) {
  int* result = malloc(sizeof(int) * size);
  
  memset(result, 0, sizeof(int) * size);
  
  return result;
}
C
1
#define CREATE_INT_ARRAY(size) calloc(size, sizeof(int))


И кстати в С указатель на void сам приводится к указателю на другой тип. Вот в С++ уже не пройдёт...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
    
#define CREATE_INT_ARRAY(size) calloc(size, sizeof(int))
 
int main(void){
    int * arr;
    size_t i, size = 5;
    
    if ( ( arr = CREATE_INT_ARRAY(size) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    
    for ( i = 0; i < size; ++i )
        printf("%d ", arr[i]);
 
    free(arr);
    return 0;
}
Функции создания массива и удаления эл-та из массива
1
CyBOSSeR
16.10.2010, 12:59     Функции создания массива и удаления эл-та из массива
  #10

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
И кстати в С указатель на void сам приводится к указателю на другой тип
Точно, а я еще думал почему ругается на отсутствие явного приведения. Видимо NikolaWhite компилировал исходник как C++'ый.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2010, 12:59
Привет! Вот еще темы с ответами:

Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив) - C++
Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый”...

Реализовать пользовательский класс "Список" и функции-члены для создания, просмотра и удаления списка - C++
Добрый день. Имеются несколько функций для работы с однонаправленным списком. Не получается корректно вызвать эти функции. Может у кого...

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива. - C++
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

Реализовать функции, позволяющие добавлять/удалять блок элементов в массива/из массива - C++
Уважаемые форумчане, помогите, пожалуйста, с написанием программы. Нужно в динамическом одномерном массиве, размер которого указывает...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.10.2010, 12:59
Ответ Создать тему
Опции темы

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