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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2010, 14:58   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если кто знает как распологается динамический масив в памяти,пожалуйста объясните подробно и популярно.
int **mas=new int *[str]; зарезервирует в памяти блок из 4*str байтов т.е. str-указателей.
Далее при mas[i]=new int[stb]; в ячейки этого массива пишется указатель на новый блок памяти (он не обязательно рядом с тем лежит, если тебя это интересует), количеством stb*4 ибо int - 4 байта.
И так каждой ячейке главного массива присваиваются указатели, на вновь выделенные блоки памяти, а в самой памяти (куче) они могут располагаться хаотически.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.09.2010, 23:31   #12
FatalLight
Пользователь
 
Регистрация: 16.08.2010
Сообщений: 13
По умолчанию

ага а теперь ещё хуже...
как отсортить масив такой?
у меня сортирует токо куски=(
код:
Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int str=2,stb=3,stg=4;
	int ***qub=new int**[str];
	for(int i=0;i<str;i++){
   		qub[i]=new int*[stb];
		for(int j=0;j<stb;j++){
      		qub[i][j]=new int[stg];
			for(int z=0;z<stg;z++){
				qub[i][j][z]=rand()%3;
				cout<<qub[i][j][z]<<"\t";
			}
		cout<<"\n";
		}
	cout<<"\n";
	}
	for(int k=0;k<str*stb*stg-1;k++){
		int imin=qub[k/stb/stg][(k%(stb*stg))/stg][k%stg];
		for (int i=k/stb/stg;i<str;i++)
			for (int j=(k%(stb*stg))/stg;j<stb;j++)
				for(int z=k%stg;z<stg;z++)
						if (qub[i][j][z]<imin)
						{
						imin=qub[i][j][z];
						qub[i][j][z]=qub[k/stb/stg][(k%(stb*stg))/stg][k%stg];
						qub[k/stb/stg][(k%(stb*stg))/stg][k%stg]=imin;
						}
	}
	cout<<"\n";
	for(int i=0;i<str;i++)
		for(int j=0;j<stb;j++)
			for(int z=0;z<stg;z++)
				cout<<qub[i][j][z]<<' ';
	cin.get();
	return 0;
}

Последний раз редактировалось Stilet; 06.09.2010 в 09:23.
FatalLight вне форума Ответить с цитированием
Старый 06.09.2010, 09:24   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
FatalLight
А ты не хочешь почитать про функции, и про рекурсию?
Написал одну функцию сортировки одномерного массива, и вызывай ее рекурсивно для n-мерного.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2010, 12:03   #14
FatalLight
Пользователь
 
Регистрация: 16.08.2010
Сообщений: 13
По умолчанию

ДА! Детка Бендер лучший!
Посидев пару тройку часиков в пошаговом режиме и используя сортировку для 2d массива всётаки раскусил потавленную задачу без функций и рекурсии.
код:
#include <iostream>
#include <stdlib.h>
void main(){
int str=3,stb=4,stg=5;
int ***qub=new int**[str];
for(int i=0;i<str;i++){
qub[i]=new int*[stb];
for(int j=0;j<stb;j++){
qub[i][j]=new int[stg];
for(int z=0;z<stg;z++){
qub[i][j][z]=rand()%75;
cout<<qub[i][j][z]<<"\t";
}
cout<<"\n";
}
cout<<"\n";
}
for(int k=0;k<str*stb*stg-1;k++){
int imin=qub[k/stb/stg][(k%(stb*stg))/stg][k%stg];
for (int i=k/stb/stg;i<str;i++)
for (int j=0;j<stb;j++)
if((i>k/stb/stg)||(j>=(k%(stb*stg))/stg))
for(int z=0;z<stg;z++)
if((i>k/stb/stg)||(j>(k%(stb*stg))/stg)||(z>=k%stg))
if (qub[i][j][z]<imin){
imin=qub[i][j][z];
qub[i][j][z]=qub[k/stb/stg][(k%(stb*stg))/stg][k%stg];
qub[k/stb/stg][(k%(stb*stg))/stg][k%stg]=imin;
}
}
cout<<"\nSort QUB:\n";
for(int i=0;i<str;i++){
for(int j=0;j<stb;j++){
for(int z=0;z<stg;z++){
cout<<qub[i][j][z]<<'\t';
}
cout<<"\n";
}
cout<<"\n";
}
cin.get();
}
FatalLight вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка динамического масива Лубышев Помощь студентам 3 31.08.2009 00:00
Создание н-мерного динамического массива Парсифаль Общие вопросы C/C++ 33 02.05.2009 18:29
Удаление записи из динамического масива... Altera Общие вопросы Delphi 4 09.06.2008 09:15
Сортировка строк 2-мерного массива Mayday_007 Помощь студентам 1 04.04.2008 09:26
СОХРАНИЯ В ФАЙЛ ДВУМЕРНОГО ДИНАМИЧЕСКОГО МАСИВА!!!! _FL@ER_ Помощь студентам 2 23.06.2007 16:31