Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 933

Динамическое выделение памяти - сделать так, чтобы переменная стала видимой во всем коде

01.09.2015, 22:54. Показов 1019. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вопрос в том как сделать так чтобы plus стал видимым во всем коде а не только в блоке. Дело в том что мне нужно чтобы его размер менялся только в том случае если условие выполнялось и как тогда в таком случае применять delete[] plus;

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
#include<iostream>
int main()
{
    int N;
    std::cout<<"Enter the number of entries in the log: ";
    std::cin>>N;
    int* ps = new int[N];
    char* p = new char[N];
    
    
    int temp1 = 0;
    int temp2 = 0;
    
    for (int i = 0; i < N; i++)
    {
        std::cin>>*(p+i)>> *(ps + i);
            if (*(p+i) == '+')
            {
                 int* plus = new int[temp1++]; // будем хранить все значения с плюсом
                 *(plus + i) = *(ps + i);
            }
            else
            {
                int* minus = new int[temp2++]; // будем хранить все значения с минусом
                *(minus + i) = *(ps + i);
            }
        
    }
        
    for (int i = 0; i < temp1 - 1; i++)
    {
        std::cout<<plus[i]<<std::endl;
    }
    
        
    delete[] plus;
    delete[] p;
    delete[] ps;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2015, 22:54
Ответы с готовыми решениями:

Переменная стека и динамическое выделение памяти
Здравствуйте! Проблема в следующем: Допустим есть какое-то диалоговое окно, например &quot;Dialog&quot;, и есть главное...

Файлы,массивы и динамическое выделение памяти.Непонятная ошибка в коде.
После выполнения сего чудесного мы видим такую картину(даже если закомментировать все printf,картина не меняется.): ...

Как сделать так, чтобы таймер рандомно выбирал одну из невидимых картинок и потом делал её видимой.
Как сделать так что бы таймер рандомно выбирал из невидимых картинок и потом делал её видимой. А если картинка видима то он её не открывает...

19
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 23:00
вынести "int* plus" (и minus, судя по всему) за цикл. Только смысл, если каждый раз значения заново перетираются, и в итоге останется только последнее число?
0
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 933
01.09.2015, 23:34  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
если каждый раз значения заново перетираются, и в итоге останется только последнее число?
Вот поэтому и вопрос.
Неужели никак так нельзя сделать. Может получится что в одном массиве будет 9 из 10 значений а в другом 1 из 10 (если работать со статистическими массивами)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 23:36
используйте контейнеры. К чему использование сишных массивов?
1
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 933
01.09.2015, 23:43  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
используйте контейнеры.
А ну до ООП я уже в шаге.
Цитата Сообщение от KOPOJI Посмотреть сообщение
К чему использование сишных массивов?
Собственно поэтому.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2015, 23:53
почему нельзя. Если совсем уж "в лоб", то можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int* plus = new int[++temp1];
for (int i = 0; i < N; i++)
{
....
    if (*(p+i) == '+')
    {
        int* tmp = new int[temp1]; // будем хранить все значения с плюсом
        for(int t = 0; t < temp1; ++t)
            *(tmp + t) = *(plus + t);
        plus = new int[temp1];
        for(int t = 0; t < temp1; ++t)
            *(plus + t) = *(tmp + t);
        *(plus + ++temp1) = *(ps + i);
    }
....
}
Добавлено через 9 минут
Цитата Сообщение от Senarist Посмотреть сообщение
А ну до ООП я уже в шаге
причем тут ООП?
возьмите хотя бы тот же вектор, знания ООП не требуется.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
02.09.2015, 13:59
Цитата Сообщение от KOPOJI Посмотреть сообщение
причем тут ООП?
возьмите хотя бы тот же вектор, знания ООП не требуется.
ложь. Знание ооп требуется для работы с любым объектом. Даже для работы с объектом iostream требуется знание ООП (std::cout<<"Hello world")
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.09.2015, 14:33
Классы это еще не совсем ООП.
0
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 933
02.09.2015, 15:33  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
причем тут ООП?
Контейнеры рассматриваются в разделе ООП
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.09.2015, 15:40
Цитата Сообщение от Senarist Посмотреть сообщение
Контейнеры рассматриваются в разделе ООП
Скорее относится к обобщенному программированию. А рельно в книгах описывают отделным разделом как STL или в перемешку с другим материалом.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.09.2015, 17:38
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ложь
не ложь, а реальность. Спросите практически любого новичка в программировании вообще и в плюсах, знает ли он, что означает, к примеру
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
std::cout<<
и он вам скажет, что это вывод, и знать не знает ни о каком ООП и о потоках, а уж тем более о побитовых операторах. Тем более что под знанием ООП обычно понимается и знание основных принципов (инкапсуляция, наследование, ...), и еще куча других мелочей. И что, я без знания оного не смогу использовать вектор? Чушь. Тут бывает люди без знания C++ вообще пишут код, а вы говорите, что без знания ООП тут никуда.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.09.2015, 17:55
Цитата Сообщение от KOPOJI Посмотреть сообщение
просите практически любого новичка в программировании вообще и в плюсах, знает ли он, что означает, к примеру
Возьмите любую нормальную книгу по С++ почитать и увидите там и классы и принципы ООП и обобщенного и базовые знания по STL.

Добавлено через 1 минуту
Цитата Сообщение от KOPOJI Посмотреть сообщение
бывает люди без знания C++ вообще пишут код
Да быдлокодерами зовуться...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.09.2015, 18:00
Avazart, а причем тут это вообще? Я не утверждал, что ООП или что-то еще изучать не надо.

Добавлено через 26 секунд
Цитата Сообщение от Avazart Посмотреть сообщение
Да быдлокодерами зовуться
это и не быдлокодеры. Но дело не в этом.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.09.2015, 18:08
Цитата Сообщение от KOPOJI Посмотреть сообщение
Avazart, а причем тут это вообще?
А при чем тут какието там новички?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
02.09.2015, 18:24
Avazart, в общем, вы решили кого-нибудь потроллить, судя по всему?
ТС - новичок (по-крайней мере, в плюсах). Он не знаком с ООП еще. Я сказал, что для использования векторов знания ООП не требуется. Kuzia domovenok, судя по его изречению, утверждает, что ни один человек не сможет использовать векторы и даже cout, переделывая примеры с офф сайта. Я иного мнения.
Теперь смотрим выше.
Цитата Сообщение от Senarist Посмотреть сообщение
C++
1
...std::cout<<....std::cin>>...
Цитата Сообщение от Senarist Посмотреть сообщение
А ну до ООП я уже в шаге
Видите? Он еще не дошел до ООП. Однако использует, не задумываясь. Точно также он сможет использовать и векторы. Что вы хотели сказать мне со своей книгой? Ну есть оно где-то там дальше в книге, дальше-то что?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
02.09.2015, 18:43
Выступлю в защиту этой кошатины KOPOJI.
Есть на свете такая книга "Эффективное программирование на C++", написанная Эндрю Кенигом и Барбарой Му.
Собственно вот фрагменты из введения:



В книге сперва как раз изучают как пользоваться высокоуровневыми приблудами и только потом "спускаются" вниз.
Первая программа как всегда Hello world, а вот вторая уже использует std::string:


Далее там также рассматривается работа с std::string, именно работа, а не его устройство. Затем рассматриваются контейнеры типа std::vector и т.д.. То есть в книге сначала учат применять всё это, а только потом уже устройство, ООП и т.д.
0
02.09.2015, 18:46

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
этой кошатины
Вот ты.. Зараза кошачья! :D

0
02.09.2015, 18:48

Не по теме:

Цитата Сообщение от KOPOJI Посмотреть сообщение
Вот ты.. Зараза кошачья!
это тебе не скриптами баловаться :p :D

0
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
02.09.2015, 19:11
Цитата Сообщение от Croessmah Посмотреть сообщение
То есть в книге сначала учат применять всё это, а только потом уже устройство, ООП и т.д.
Так и Страуструп об этом же пишет в своей книге. Там с первых страниц стразу примеры с std::cout и т.п.
А объясняется что это сильно позже.
0
02.09.2015, 19:22

Не по теме:

У меня неоднозначное мнения к такому подходу.
Некоторые вещи хотелось бы знать целиком полностью, а не "по частям" где в итоге теряется суть.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.09.2015, 19:22
Помогаю со студенческими работами здесь

Можно ли поменяв 1 параметр Духу и сделать так, чтобы вероятность их победы стала равна?
Задача 2 В игре сражаются Воин против Духа. Персонажи обладают здоровьем, силой атаки, шансом промахнуться и скоростью атаки. Воин...

Сделать так, чтобы в процедуре переменная *а* не меняла значение
var a:Integer ; function b (a:Integer ):Integer ; begin b:= a mod 2 end; procedure output; begin while a&lt;&gt;0 do ...

Как сделать так чтобы переменная не возращалась к исходному значению
Здравствуйте! Помогите пожалуйста, когда жму на кнопку срабатывает игра, счёт игрока и казино меняется в зависимости от ставки, но когда...

Как сделать так, чтобы переменная принимала название модуля/функции?
можно ли сделать так, чтобы переменная принимала название модуля, а дргуая - функции и чтобы их можно было вызвать?

Как сделать так , чтобы переменная на русском языке не выводило ошибку
А как сделать так , чтобы при назначении переменной на русском языке (что необходимо для отображения в ComboBox) не выдавала ошибку? Или я...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru