1 / 1 / 4
Регистрация: 04.11.2016
Сообщений: 148
1

Пересоздать массив

23.10.2017, 22:01. Показов 1908. Ответов 7
Метки с (Все метки)

Добрый вечер, интересует вопрос как пересоздать массив, приведу пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool vstr=0;
char Rabotniki[lines_count][30]={"Иванов","Петров","Сидоров"};
            lines_count=lines_count-1;
            char Rab[lines_count][30];
                        printf("Введите номер удаляемого эл-та: ");
                        scanf("%d",&y);
            for(int i=0;i<lines_count;i++){
                if(i==y){vstr=1;}
                if(vstr==1){
                sprintf(Rab[i],Rabotniki[i+1]);
                sprintf(Rabotniki[i],"");
                }
                if((i!=y) && (vstr==0)){
                sprintf(Rab[i],Rabotniki[i]);
                sprintf(Rabotniki[i],"");
            }
            }
            delete [] Rabotniki;          //удаление массива?
            char Rabotniki[lines_count][30];      //пересоздание с другим размером?
            for(int i=0;i<lines_count;i++){       //заполнение
                sprintf(Rabotniki[i],Rab[i]);
            }
Это для программы удаления определённого элемента массива
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2017, 22:01
Ответы с готовыми решениями:

Как пересоздать (изменить размер) двумерный массив при вызове, например, функции
Как пересоздать (изменить размер) двумерный массив при вызове, например, функции? Создаю так: ......

При клики в BaseAdapter меняется массив строк, как пересоздать ListView с новым массивом?
Здравствуйте! Имеется класс: package ru.contedevel.mathworker; import java.util.ArrayList;...

Пересоздать dataGridView
Всем привет)) Есть код - private void button1_Click(object sender, EventArgs e) ...

Пересоздать форму
Требуется пересоздать форму, т.е. прописана команда при создании формы, и мне нужно, чтобы она...

7
3 / 3 / 2
Регистрация: 21.01.2017
Сообщений: 24
23.10.2017, 22:06 2
Это удаление для динамически созданного массива, а у тебя статика
0
1 / 1 / 4
Регистрация: 04.11.2016
Сообщений: 148
23.10.2017, 22:14  [ТС] 3
Цитата Сообщение от Deliss Посмотреть сообщение
Это удаление для динамически созданного массива, а у тебя статика
Тогда
C++
1
delete Rabotniki[y];
?
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
23.10.2017, 22:16 4
Да ничего нельзя там delete. Можешь только сдвинуть элементы.
0
0 / 0 / 0
Регистрация: 19.01.2019
Сообщений: 8
03.03.2019, 14:43 5
nmcf, а что делать, если у нас в паблик секции класса указано int 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
class DynArray
{
  public:
    int count;
    int capacity;
    int array []; // хранит неотрицательные значения
 
    DynArray()
    {
        count = 0;
        make_array(16);
    }
 
    void make_array(int new_capacity)
    {
        // ваш код
        if (count == 0) {
            int array[new_capacity];
        }
        else
        {
            int temp_arr[count];
            memcpy(temp_arr, array, sizeof(int) * count);
            int array[new_capacity];
            memcpy(array, temp_arr, sizeof(int) * count);
        }
 
        capacity = new_capacity;
    }
};
0
16094 / 8692 / 2124
Регистрация: 30.01.2014
Сообщений: 14,984
03.03.2019, 15:31 6
Цитата Сообщение от ajaxlord Посмотреть сообщение
у нас в паблик секции класса указано int array [];
Так вообще делать нельзя в С++.
В некоторых компиляторах есть расширения, позволяющие такую запись, но она нужна совсем не для того, что вы задумали сделать.

Кроме того, ваша функция make_array работает с локальными массивами, члены класса никак не используются.

Используйте динамическое выделение памяти, а в классе для нее храните указатель.
1
0 / 0 / 0
Регистрация: 19.01.2019
Сообщений: 8
03.03.2019, 16:46 7
Решение верное, но у меня в задачах, что бы указатель хранил именно статический массив, иначе какой смысл реалокации и вообще метода make_array(). Как ещё можно присвоить указателю стат. массив ?
0
16094 / 8692 / 2124
Регистрация: 30.01.2014
Сообщений: 14,984
03.03.2019, 16:57 8
ajaxlord, озвучьте задание полностью, без пересказа, а в оригинальной формулировке.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2019, 16:57
Помогаю со студенческими работами здесь

Как пересоздать ViewSub?
Искал в гугле но ничего не нашел.Суть вот в чем:есть меню,при нажатии на определенную кнопку должен...

Пересоздать форму (обновить)
Нужно сделать так, чтобы при нажатии на кнопку происходило что-то в этом роде: Form1.Free;...

Как правильно пересоздать ViewSub?
Layout должен создаваться на активити по нажатию на кнопку, для этого использую ViewStub! Суть...

Изменить и пересоздать текстовый файл
Всем привет. Задали задачку такую: нужно в имеющемся текстовом файле изменить знаки и переставить...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru