Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25

Добавление 2 элементов в 1 индекс

07.12.2018, 21:14. Показов 2458. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана структура в ней есть элемент
C++
1
2
3
4
5
struct q {
    
    char* name;
 
};
Я могу как-либо добавить 2 name под 1 индексом
C++
1
2
3
4
cin>>tmp;
l = strlen(tmp) + 1;
p[i]->name = new char[l];
strcpy(p[z]->name, tmp);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2018, 21:14
Ответы с готовыми решениями:

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5 и так далее. Теперь...

Определить индекс минимального и индекс максимального элементов
3 Одномерные массивы Дан массив. Определить индекс минимального и индекс максимального элементов.

добавление страницы в индекс
добрый день. такой вопрос - есть ли какой-либо способ добавить страничку в очередь на индексацию, что бы паук при следующем посещении...

22
10.12.2018, 22:06
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Ra4ok41 Посмотреть сообщение
n1b1ru, извините что потревожил
Не потревожили. Обращайтесь если что, на то и форум )

0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
11.12.2018, 00:30  [ТС]
n1b1ru, таки произошла проблема очистка памяти не работает в моем коде
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
 
 
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
    int wiek1;
    char* imie1;
};
 
 
int main() {
    int g = 0;
    int g1 = 0;
    int q[20];
    int il;
    int y[20];
    int n = 20;
    pies** p = new pies*[n];
    for (int i = 0; i < n; i++) {
        p[i] = NULL;
    }
    char tmp[20];
    int l = 20;
 
    while (1) {
        cout << "a-nowy pies, q -wyjscie, p-lista psow, c -potomek psa" << endl;
        char a;
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int z;
            cin >> z;
            if (z < n) {
                if (p[z] != NULL) {
                    delete p[z]->imie;
                    delete p[z];
                }
                y[g1] = z;
                int w;
                p[z] = new pies;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = strlen(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w;
                p[z]->imie = new char[l];
                strcpy(p[z]->imie, tmp);
                p[z]->wiek = w;
                g1++;
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) {
                    cout << i + 1 << ":" << " " << p[i]->imie << " " << p[i]->wiek << " " << p[i]->iloscpot << endl;
                    for (int j = 0; j < p[i]->iloscpot; j++) {
                        cout << "   " << " " << p[i][j].imie1 << " " << p[i][j].wiek1 << endl;
                    }
                }
            }
            break;
        case('c'):
            cout << "wpisz numer indeksu psa" << endl;
            cin >> z;
            if (z < n) {
                if (p[z] == NULL) {
                    cout << "niema takiego psa";
                    break;
                }
                int w2;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> il;
                p[z]->iloscpot = il;
                for (g; g < il; g++) {
                    cout << "wpisz imie" << endl;
                    cin >> tmp;
                    l = strlen(tmp) + 1;
                    p[z][g].imie1 = new char[l];
                    cout << "wpisz wiek" << endl;
                    cin >> w2;
                    strcpy(p[z][g].imie1, tmp);
                    p[z][g].wiek1 = w2;
                    q[z] = il;
                }
 
 
            }
            g = 0;
            break;
        case ('q'):
 
 
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < q[i]; j++) {
                    if (p[i] != NULL) {
                        delete p[i][j].imie1;
                    }
                }
            }
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) {
                    delete p[i]->imie;          
                    delete p[i];
 
                }
            }
            delete p;
            
            return 0;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
        }
    }
    return 0;
}
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
11.12.2018, 16:48
Ra4ok41, проверяйте:
Кликните здесь для просмотра всего текста

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <string.h>
using namespace std;
 
struct pies {
    int wiek;
    char *imie;
    int iloscpot = 0;
    int *wiek1;
    char **imie1;
};
 
int main() {
    const int n = 20;
    int i, j, il, z, l;
    char tmp[n];
 
    pies** p = new pies*[n];
    for(i = 0; i < n; i++)
        p[i] = NULL;
 
    while(1) {
        cout << "a-nowy pies, q -wyjscie, p-lista psow, c -potomek psa" << endl;
        char a;
        cin >> a;
        switch(a) {
        case('a'):
            cout << "wpisz numer indeksu" << endl;
            cin >> z;
            if(z <= n && z > 0) {
                --z;
                if(p[z] != NULL) {
                    if(p[z]->iloscpot) {
                        for(i = 0; i < p[z]->iloscpot; ++i)
                            delete [] p[z]->imie1[i];
                        delete [] p[z]->imie1;
                        delete [] p[z]->wiek1;
                    }
 
                    delete [] p[z]->imie;
                    delete p[z];
                }
                int w;
                p[z] = new pies;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = strlen(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w;
                p[z]->imie = new char[l];
                strcpy(p[z]->imie, tmp);
                p[z]->wiek = w;
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for(i = 0; i < n; ++i) {
                if(p[i] != NULL) {
                    cout << i + 1 << ": " << p[i]->imie << " " << p[i]->wiek << endl;
                    if(p[i]->iloscpot) {
                        cout << " " << p[i]->iloscpot << endl;
                        for(j = 0; j < p[i]->iloscpot; j++)
                            cout << "    " << p[i]->imie1[j] << " " << p[i]->wiek1[j] << endl;
                    }
                }
            }
            break;
        case('c'):
            cout << "wpisz numer indeksu psa" << endl;
            cin >> z;
            if(z <= n && z > 0) {
                --z;
                if(p[z] == NULL) {
                    cout << "niema takiego psa\n";
                    break;
                }
 
                if(p[z]->iloscpot) {
                    for(i = 0; i < p[z]->iloscpot; ++i)
                        delete [] p[z]->imie1[i];
                    delete [] p[z]->imie1;
                    delete [] p[z]->wiek1;
                }
 
                int w2;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> il;
                p[z]->iloscpot = il;
                p[z]->imie1 = new char*[il];
                p[z]->wiek1 = new int[il];
                for(i = 0; i < il; ++i) {
                    cout << "wpisz imie" << endl;
                    cin >> tmp;
                    l = strlen(tmp) + 1;
                    p[z]->imie1[i] = new char[l];
                    cout << "wpisz wiek" << endl;
                    cin >> w2;
                    strcpy(p[z]->imie1[i], tmp);
                    p[z]->wiek1[i] = w2;
                }
            }
            break;
        case('q'):
            for(i = 0; i < n; ++i) {
                if(p[i] != NULL) {
                    if(p[i]->iloscpot) {
                        for(j = 0; j < p[i]->iloscpot; ++j)
                            delete [] p[i]->imie1[j];
                        delete [] p[i]->imie1;
                        delete [] p[i]->wiek1;
                    }
 
                    delete [] p[i]->imie;
                    delete p[i];
                }
            }
 
            delete [] p;
 
            return 0;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
        }
    }
    return 0;
}

Исправлял интуитивно. Не правильно выделялась и освобождалась память. Для case a добавил освобождение памяти "potomkow", так думаю логичнее.
Удалил некоторые переменные. Добавил условие для индекса z. Первоначальное значение для iloscpot будет 0, для проверки количества "potomkow".
PS много дублирования, если проходили функции вынесите повторяющийся код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2018, 16:48

Как узнать индекс элементов в массиве, если элементов много?
Создан массив, после он заполняется случайными числами. Из этих чисел находится минимальное число, после программа выводит минимальное...

Вычислить сумму элементов матрицы, имеющих четный индекс и произведение положительных элементов (Excel)
Private Sub CommandButton1_Click() Dim m(15) As Integer Dim i, c, n As Integer Dim t As String t = &quot;&quot; c = 0 m =...

В массиве из 100 элементов найти количество отрицательных элементов, минимальный элемент и его индекс
В массиве из 100 элементов найти количество отрицательных элементов, минимальный элемент и его индекс. Построить новый массив из элементов...

Вывести индекс строки сумма элементов которой отличается менее других от суммы элементов векторов
Ввести матрицу 10*10 и вектор длины типа int. Вывести индекс строки сумма элементов которой отличается менее других от суммы элементов...

Выдать на экран кол-во всех нулевых элементов и произведение положительных элементов, имеющих чётный индекс.
Помогите написать программу на Borland Pascal и создать алгоритм… плиз?? Создать числовой массив А выдать на экран кол-во всех нулевых...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru