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

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

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

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





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

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


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


Гость






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

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





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

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


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





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

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


И ещё: мне сказали, что у ОП можно запросить за раз от 640К до 1М. Это возможно, если использвать Паскаль?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 



- Текстовая версия 22.04.2025 20:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name