Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 17:02   #11
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Уууу... что тут нагородили...
Цитата:
Сообщение от StarWorm Посмотреть сообщение
Нда... со статическими элементами работать - никогда не научишься программить!
Ну вот вы хоть и начали во все щели совать динамическое распределение памяти (даже там, где это и не нужно), но программировать так и не умете – детские ошибки же:
Цитата:
Сообщение от StarWorm Посмотреть сообщение
Код:
	int** arr=new int*[dimension];
	for(int i=0;i<dimension;i++)
	{
		arr[i]=new int[dimension];
	}
	...
	for(int i=0;i<dimension;i++)
		delete arr[i];
	delete [] arr;
И чем оправдано использование дин. распределения памяти здесь? :
Цитата:
Сообщение от StarWorm Посмотреть сообщение
Код:
	dimStruct<int> *myArr= new dimStruct<int>;
	delete myArr;
Тем более, что при этом объект будет создан в куче, а не на стеке. Да и нафига все так усложнять-то? Зачем тут вообще шаблоны?

P.S. как будто мы тут все "ниибись программеры"
filosof_x86 вне форума Ответить с цитированием
Старый 20.11.2008, 17:10   #12
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Шаблоны нужны, чтобы от типа была зависимость минимальна... Я сейчас говорю не про функции, а про саму структуру, т.е. мой двумерный массив. float, int, char - не иммет значения что он будет хранить...

Ну а динамически создавать все - это у меня уже привычка... Особенно указатели на что-то, т.к. new возврящает указатель на созданный объект...

Вы мне лучше вот что скажите...
Код:
varType** tmp=new varType*[str];
deleteArr();
arr=tmp;
можно ли так делать и не происходит ли потеря памяти???
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 17:20   #13
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от StarWorm Посмотреть сообщение
Шаблоны нужны, чтобы от типа была зависимость минимальна... Я сейчас говорю не про функции, а про саму структуру, т.е. мой двумерный массив. float, int, char - не иммет значения что он будет хранить...
Назначение шаблонов я знаю, только их применение в этой задаче неоправданно.

Цитата:
Сообщение от StarWorm Посмотреть сообщение
Ну а динамически создавать все - это у меня уже привычка... Особенно указатели на что-то, т.к. new возврящает указатель на созданный объект...
Плохая привычка, особенно когда не до конца понимаешь весь материал.

Цитата:
Сообщение от StarWorm Посмотреть сообщение
Вы мне лучше вот что скажите...
Код:
varType** tmp=new varType*[str];
deleteArr();
arr=tmp;
можно ли так делать и не происходит ли потеря памяти???
Утечки памяти нет, есть ошибка в коде, в функции deleteArr(), вот в этой строчке:
Код:
delete arr[i];
filosof_x86 вне форума Ответить с цитированием
Старый 20.11.2008, 19:46   #14
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Цитата:
Сообщение от StarWorm Посмотреть сообщение
Зачем делать ту работу, которая не требуется... Причем, если я напишу на VC++, человек, которому я ее пишу, не сможет ею пользоваться!
Вот и я о том же. На в середине первого курса обычно не пишут программы со структурами и шаблонами. И автор темы не сможет выдать преподу данную работу за свою. И зачем было усложнять себе жизнь, если можно было просто воспользоваться функциями? Чтобы сказать: "Вау, как я крут!"? Не думаю, что вы сильно помогли топикстартеру
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 20.11.2008, 20:16   #15
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Вот и я о том же. На в середине первого курса обычно не пишут программы со структурами и шаблонами. И автор темы не сможет выдать преподу данную работу за свою. И зачем было усложнять себе жизнь, если можно было просто воспользоваться функциями? Чтобы сказать: "Вау, как я крут!"? Не думаю, что вы сильно помогли топикстартеру
Ну насчет функций-шаблонов... их поменять - пару минут... Да и структуру также можно привести к определенному типу!
Просто в таком виде с массивом работать гораздо удобнее, чем по отдельности с указателем на массив и двумя измерениями... Здесь как говорится, все в одном!
Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
Утечки памяти нет, есть ошибка в коде, в функции deleteArr(), вот в этой строчке:
Код:
delete arr[i];
Как я понял нужно сделать так:
Код:
delete [] arr[i];
Ну это уже просто невнимательность... arr[i] - это массив указателей, я знаю... Спасибо что указали на ошибку! За динамическим распределением памяти следит сам программист, поэтому и delete[] может использовать...
Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
И чем оправдано использование дин. распределения памяти здесь? :
Цитата:
Цитата:
Сообщение от StarWorm Посмотреть сообщение
Код:
	dimStruct<int> *myArr= new dimStruct<int>;
	delete myArr;
Тем более, что при этом объект будет создан в куче, а не на стеке. Да и нафига все так усложнять-то? Зачем тут вообще шаблоны?
Ну если бы я не использовал дин.выделен. памяти здесь, то я бы не смог использовать delete[] здесь:
Код:
	void delStr(int number)
	{
		...
		deleteArr();                <------здесь :)
		arr=tmp;
		dimCol=col;dimStr=str;
	}

	void deleteArr()
	{
		for(int i=0;i<dimStr;i++)
			delete arr[i];
		delete [] arr;
		...
	}
Или тогда как-то по другому надо было выкрутиться?!
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 20:46   #16
DeFace
Пользователь
 
Аватар для DeFace
 
Регистрация: 27.09.2008
Сообщений: 60
По умолчанию

Ребят серьёзно спасибо большое всем. Но правда сказали что в начале первого курса мы не должны писать со структурами и со всем таким остальным. И я не просто собирался выдать код за свой, а хотел в нём ещё разобраться, т.к. поступил туда не из-за диплома. В данный момент у меня просто не хватает времени, а осталась уже неделя до здачи, хотя делать ещё нормально, поэтому я к вам и обратился.
Сейчас у меня ещё ночка впереди я попробую разобраться с кодами которые вы написали. Может что нибудь пойму
DeFace вне форума Ответить с цитированием
Старый 20.11.2008, 20:52   #17
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Цитата:
Сообщение от DeFace Посмотреть сообщение
Сейчас у меня ещё ночка впереди я попробую разобраться с кодами которые вы написали. Может что нибудь пойму
Там разобраться - не очень долго... Можно будет и переделать без шаблонов (первый мой ответ на первые задачи), ну а во втором просто придется переписывать функции без шаблона и ВНЕ структур... и передавать в них 3 переменные (int** arr, int countString, int countColumns), где
arr - твой массив (ну или передавать так arr[][countColumns])
countStrings - количество строк
countColumns - количество столбцов

Если нужна будет помощ... обращайся!!!

P.S. разбираться надо не сразу в крутом (сложном) коде, а постепенно наращивая и объем и сложность...

Последний раз редактировалось StarWorm; 20.11.2008 в 20:54.
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 21:37   #18
DeFace
Пользователь
 
Аватар для DeFace
 
Регистрация: 27.09.2008
Сообщений: 60
По умолчанию

Объясните пожалуйста что такое главная диагональ в массиве.
DeFace вне форума Ответить с цитированием
Старый 20.11.2008, 21:46   #19
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Восклицание

Главная диагональ - это (помечена звездочками):
Код:
    * . . . .
    . * . . .
    . . * . .
    . . . * .
    . . . . *
Кодируется она так:
Код:
    arr[i][i]
А что именно нужно сделать???
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 22:18   #20
DeFace
Пользователь
 
Аватар для DeFace
 
Регистрация: 27.09.2008
Сообщений: 60
По умолчанию

я просто не мог в коде разобраться потому что не знал что это такое)))спасибо тебе! а объясни ещё вот что - пишу
Код:
int n=4;
	int m=4;
        int A[n][m];
потом начинаю работать с этим массивом. компилирую MS VC++6 выдаёт что массив пуст. это может быть связанно с компилятором?
DeFace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение столбцов Janny Microsoft Office Excel 6 10.11.2008 07:58
Вывод имен столбцов maxix БД в Delphi 2 29.09.2008 16:28
Циклический сдвиг столбцов в массиве С++ Помогите! Ладушка Общие вопросы C/C++ 10 01.05.2008 23:17
Снова о массиве Constellation Общие вопросы Delphi 2 09.02.2008 20:42