![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
User4225 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: ALEX Репутация: ![]() ![]() ![]() |
Помогите!!!!!
Используя датчик случайнх чисел, поместить в динамическую память массив действительных чисел без повторений колличеством 50000 элементов. Упорядочить эти элементы по возрастанию методами Шелла, Хоора, выбора и пузырька, а потом ещё вывести общее время, потраченное каждым методом на сортировку. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Не все так просто... Одним куском данные в "куче" не поместятся (нельзя запросить у ОС больше 64К за один раз, а тебе нужно 50000*6=300000байт, т.е. больше 292К)... А если разбить массив на несколько кусков, то как именно их потом сортировать (тут понадобится и слияние отсортированных кусков)...
![]() Нужно пользоваться именно Турбо-Паскалем? |
User4225 |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: ALEX Репутация: ![]() ![]() ![]() |
Да, нужен именно Паскаль. Программу для сортировки действительных масивов размером [1..255] уже написал, а что делать дальше - не знаю.
|
User4225 |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: ALEX Репутация: ![]() ![]() ![]() |
И ещё: мне сказали, что у ОП можно запросить за раз от 640К до 1М. Это возможно, если использвать Паскаль?
|
volvo |
![]()
Сообщение
#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: |
![]() ![]() |
![]() |
Текстовая версия | 22.04.2025 20:10 |