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

Добавление строки в двумерный динамический массив (исправить ошибки) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычисление значения экспоненциальной функции http://www.cyberforum.ru/cpp-beginners/thread676714.html
Пожалуйста, помогите решить в с++: Напишите программу для вычисления значения экспоненциальной функции ex в заданной точке x по формуле: Вычисление суммы продолжать до тех пор, пока очередное слагаемое по модулю не станет меньше 0.0001. Конкретное значение x вводится с клавиатуры.
C++ Вывести на экран индекс элемента Помогите пожалуйста вытащить индекс из списка например : #include <iostream> #include <list> using namespace std; list<int> lst; list<int>::iterator p = lst.begin(); for(p=lst.begin();p!=lst.end();p++) { lst.push_back(some_element);// я не могу вывести сам индекс этого элемента http://www.cyberforum.ru/cpp-beginners/thread676713.html
C++ Вывести на экран таблицу стоимости, например, яблок в диапазоне от N г до M кг с шагом 100 г
Вывести на экран таблицу стоимости, например, яблок в диапазоне от N г до M кг с шагом 100 г., используя циклический алгоритм
как избавится от мерцания при выводе массива C++
вообщем есть массив 20x50. и его нужно часто выводит на консоль и происходит мерцание. что можно сделать чтоб его не было?
C++ Определить максимальный элемент массива и его порядковый номер http://www.cyberforum.ru/cpp-beginners/thread676703.html
Определить максимальный элемент массива В и его порядковый номер (2 варианта, с указателем и без) D, B>0, K<=40;
C++ Заполнение массива У меня есть строка, которую пользователь ввел с консоли как мне каждый элемент строки добавить в массив??? Добавлено через 7 минут или как мне получить доступ к элементу строки ?? К примеру в паскале это можно сделать так: строка, а в с++ не срабатывает подробнее

Показать сообщение отдельно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
22.10.2012, 11:46     Добавление строки в двумерный динамический массив (исправить ошибки)
Вы через отладчик прогонять пробывали? =) я проглан и за 5 минут нашел вашу ошибку
прога сыпется в этой функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int** addRow(int** dmas,int &n,int m)
{
    int **t=new int*[n+1];//вы выделили память n+1
    for(int i=0;i<n;++i)//а записываете все также в n строк
    {
        t[i]=new int[m];
        
        for(int j=0;j<m;j++)
    
            t[i][j]=dmas[i][j];
        
        //t[i][m]=rand()%100; 
    }
    n++;//Увеличивая n на 1 вы далее будете считывать из несуществующей строки и прога сыпется вы бы лучше инкримент при выделении памяти сделали бы int **t=new int*[++n] тогда у вас и н изменится и памяти на 1 больше выделиться
    return t;
    
    for(int i=0;i<n;i++)
        t[i]=new int[m];
    delete[]t;
если вы уж добавляете строку так и добавляйте, выделяйте память только под строку а далее указатель присоедините к вашему массиву а то вы зря много памяти выделяете + еще одна ошибка ашей функции, после того как функция чтото возвратит она ничего удалять не будет, а если бы и работала вы всеравно передаете указатель на память, и присваивая одну ячейку массива к другой вы тоже просто другому указателю указывать на этуже память. соответственно при очищении памяти ваш указатель не будет указывать никуда+ в мэйне у вас получается память из прошлого массива болтается в воздухе, её никто уже не удалит потому что ни один указатеь на неё не указывает.
З.Ы. сори чтов одно предложение, писал на одном дыхании

Добавлено через 1 минуту
Цитата Сообщение от Sergofun Посмотреть сообщение
Убери
Код C++
1
n++;
Заработает.
заработает но не так как надо, будет выведен один и тот же массив
 
Текущее время: 11:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru