IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка массивов с помощью динамической памяти, Сортировка массивов с помощью дин.памяти
User4225
сообщение 4.10.2005 18:42
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: ALEX

Репутация: -  0  +


Помогите!!!!!
Используя датчик случайнх чисел, поместить в динамическую память массив действительных чисел без повторений колличеством 50000 элементов. Упорядочить эти элементы по возрастанию методами Шелла, Хоора, выбора и пузырька, а потом ещё вывести общее время, потраченное каждым методом на сортировку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.10.2005 18:52
Сообщение #2


Гость






Не все так просто... Одним куском данные в "куче" не поместятся (нельзя запросить у ОС больше 64К за один раз, а тебе нужно 50000*6=300000байт, т.е. больше 292К)... А если разбить массив на несколько кусков, то как именно их потом сортировать (тут понадобится и слияние отсортированных кусков)... unsure.gif

Нужно пользоваться именно Турбо-Паскалем?
 К началу страницы 
+ Ответить 
User4225
сообщение 4.10.2005 19:24
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: ALEX

Репутация: -  0  +


Да, нужен именно Паскаль. Программу для сортировки действительных масивов размером [1..255] уже написал, а что делать дальше - не знаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
User4225
сообщение 4.10.2005 19:28
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: ALEX

Репутация: -  0  +


И ещё: мне сказали, что у ОП можно запросить за раз от 640К до 1М. Это возможно, если использвать Паскаль?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.10.2005 19:44
Сообщение #5


Гость






Хотя, в принципе, можно все сделать достаточно просто... Смотри, принцип такой:
{ Описываешь ОченьДлинный Массив }
type
PTOnePart = ^TOnePart;
TOnePart = Array[1 .. 10000] Of Real;

TVeryLongArray = Array[1 .. 5] Of PTOnePart;

{ Это для размещения большего массива в "куче" }
Procedure CreateArray(var arr: TVeryLongArray);
var i: integer;
Begin
For i := 1 To 5 Do
GetMem(arr[i], 10000 * SizeOf(Real));
End;
{ Удаление массива из "кучи" }
Procedure DeleteArray(var arr: TVeryLongArray);
var i: integer;
Begin
For i := 1 To 5 Do
FreeMem(arr[i], 10000 * SizeOf(Real));
End;

{ Для "чтения" элемента из массива: }
Function GetElement(var arr: TVeryLongArray;
_index: LongInt): Real;
Begin
GetElement := arr[(_index div 10000) + 1]^[(_index mod 10000) + 1];
End;

{ Для "записи" элемента в массив: }
Procedure SetElement(var arr: TVeryLongArray;
_index: LongInt; _value: Real);
Begin
arr[(_index div 10000) + 1]^[(_index mod 10000) + 1] := _value;
End;

var
great_array: TVeryLongArray;

begin
...
end.

И теперь работаешь с Great_Array как с обычным массивом, только
{ вместо такого }
great_array[1] := 10.5;
{ делаешь так ... }
SetElement(great_array, 1, 10.5);

{ ... и вместо }
x := great_array[1];
{ вот так: }
x := GetElement(great_array, 1);


Внеси эти изменения в свою программу, и все будет прекрасно работать...
:yes:
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 23:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"