Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Имфилия
написать программу в консольном приложении, на языке паскаль
по след. заданию --->
Напишите процедуры для сортировки элементов массива. Определите
количество сравнений, перестановок выполняемых при сортировке массива
размером: 10, 100, 1000, 10000 элементов, составьте таблицу с результатами;
для каждого размера массива проведите сравнение 5 случайно
сгенерированных массивов и найдите среднее арифметическое количества
сравнений и перестановок.
Методы сортировки:
2) сортировка методом прямого выбора (direct sort);
3) гномья сортировка (gnome sort);
по убыванию
Напишите функции для поиска номера элемента в отсортированном
массиве по его значению. Определите количество сравнений выполняемых при
поиске элемента в массиве размером 10,100,1000,10000 элементов, составьте
таблицу с результатами. Для каждого размера массива проведите сравнение 5
случайно выбранных чисел и найдите среднее арифметическое количества
сравнений.
Методы поиска:
1) поиск перебором;
3) интерполяционный поиск в отсортированном массиве.

wacko.gif
помощь очень нужна
TarasBer
> 2) сортировка методом прямого выбора
http://www.realcoding.net/article/view/1220

> 3) гномья сортировка

http://ru.wikipedia.org/wiki/Гномья_сортировка


> 1) поиск перебором;

Тут понятно и без ссылок:
for i := Low(a) to High(a) do if a[i] = Key then begin
Index := i;
Break;
end;

> 3) интерполяционный поиск в отсортированном массиве.

http://ru.wikipedia.org/wiki/Интерполирующий_поиск
Имфилия
это не проблема
сортировку по сути сделала и поиск тоже сделала
проблема в том, што не могу понять как мне найти среднее арифметическое для 5массивов(((
мисс_граффити
Считаешь для каждого количество перестановок и обменов, потом складываешь и делишь на 5. В чем именно сложность?
TarasBer
Цитата

и вот главная проблема... найти сред.арифм перестановок и сравнений для 5сгенерированных массивов((( для различных n



MidRev := 0;
for i := 0 to CountSorts - 1 do begin // CountSorts равно пяти
Reverses := 0; // обнуляем кол-во перестановок
CreateArray; // заполняем массив случайными элементами
Sort; // сортируем, в это время количество перестановок тоже считаем
MidRev := MidRev + Reverses; // считаем суммарное кол-во перестановок во всех испытаниях
end;
MidRev := MidRev / CountSorts; // делим сумму на количество, получаем среднее

Имфилия
все такие простые)хд
у меня сортировка массива загнана в процедуре
генерирование массива тоже в процедуреНажмите для просмотра прикрепленного файла
перейди по ссылке и посмотри

только там другими методами и по возрастанию
но это сути не меняет
проблема таже
TarasBer
Ну и какая проблема сделать что-то 5 раз и поделить кол-во перестановок на 5?
Имфилия
Цитата(TarasBer @ 20.11.2010 12:29) *

Ну и какая проблема сделать что-то 5 раз и поделить кол-во перестановок на 5?


ДА
хд
е мае,я уже отдельно даже расписывала каждую программу
ну не знаю я куда их впихнуть просто wacko.gif
я уже 4дня мозг выношу себе этой хренью
раз понимаешь дак напиши пожалуйста как и куда поставить
volvo
Цитата
у меня сортировка массива загнана в процедуре
генерирование массива тоже в процедуре
Ну, это твоя проблема, на самом деле. Если ты хочешь узнать, как переделать твой код - это ты не по адресу. Здесь могут подсказать, как сделать правильно, а не как усугублять неправильное решение...

То, что у тебя что-то загнано в процедуру, и у процедуры именно такой список параметров - это не значит, что можно делать только так. Можно, скажем, сделать функцию, и возвращать из нее количество сравнений/количество перестановок (благо, Дельфи позволяет возвращать результаты типа Record). Можно (и кстати, нужно !!!) описать подпрограмму так, чтоб она работала с открытыми массивами, а не с заранее описанными, тем более что размер ты все равно передаешь (это Дельфи тоже позволяет).

Имфилия
Цитата(volvo @ 20.11.2010 12:39) *

Ну, это твоя проблема, на самом деле. Если ты хочешь узнать, как переделать твой код - это ты не по адресу. Здесь могут подсказать, как сделать правильно, а не как усугублять неправильное решение...

То, что у тебя что-то загнано в процедуру, и у процедуры именно такой список параметров - это не значит, что можно делать только так. Можно, скажем, сделать функцию, и возвращать из нее количество сравнений/количество перестановок (благо, Дельфи позволяет возвращать результаты типа Record). Можно (и кстати, нужно !!!) описать подпрограмму так, чтоб она работала с открытыми массивами, а не с заранее описанными, тем более что размер ты все равно передаешь (это Дельфи тоже позволяет).


все таки умные,што прям хоть стой хоть падай
разглагольствовать и я могу
и тут вообще не учитываются записи!!!!!
если бы были записи то и было сказано што я делаю записями
это делается через массив
при этом он заполняется не записью!!!!!!!
и не надо строить себя самым умные
я просила помочь в решении а не сидеть и умничать
это и я умею
не поверишь,я и сама знаю что мне надо сгенерировать 5 массивов и найти в них сред.арифм перестановок и сравнений вместе взятых!

Добавлено через 5 мин.

volvo

прежде чем умничать еще бы раз прочитали задание
НАПИСАТЬ процедуры
TarasBer
Ну что сложного написать числа P и C не как локальные переменные, а как возвращаемный результат:

procedure dummy_sort(var m:mas;N:integer; var P, C: integer);

И сделать так:

SumP := 0;
SumC := 0;
for i := 0 to 4 do begin
sotr_kakoi_to_tam(M, N, P, C);
SumP := SumP + P;
SumC := SumC + C;
end;
WriteLn('srednee kol-vo perestanovok: ', MidP/5);

Имфилия
Цитата(TarasBer @ 20.11.2010 13:06) *

Ну что сложного написать числа P и C не как локальные переменные, а как возвращаемный результат:

procedure dummy_sort(var m:mas;N:integer; var P, C: integer);

И сделать так:

SumP := 0;
SumC := 0;
for i := 0 to 4 do begin
sotr_kakoi_to_tam(M, N, P, C);
SumP := SumP + P;
SumC := SumC + C;
end;
WriteLn('srednee kol-vo perestanovok: ', MidP/5);




ахаха))спасибо,сейчас попробую
volvo
Имфилия

Цитата
это делается через массив
при этом он заполняется не записью!!!!!!!
Это У ТЕБЯ он заполняется не записью. Я в задании про то, чем заполняется массив не нашел. Было сказано только про заполнение таблицы результатов. Какого типа эти результаты - не указывалось, то, что тебе показалось, что это целое число - это твои личные фантазии. Так что иди, и сама читай свою филькину грамоту как следует. К тому же, вернуть значение можно и из процедуры. Если ты этого не знаешь - то бегом читать документацию и описание языка.

Цитата
разглагольствовать и я могу
Пока я вижу только умение хамить. dry.gif

Цитата
я просила помочь в решении а не сидеть и умничать
Помочь <> решить за себя, это понятно? Тебе подсказали, что надо делать, ты что начала выделываться опять? Дюже шустрая, я погляжу? Правила читала? Тему твою надо было вообще на первой секунде снести, ибо нарушает все, что только можно. Тебя пожалели, ты на голову села? До свидания.

Закрыто...
Lapp
Цитата(volvo @ 20.11.2010 13:21) *
Правила читала? Тему твою надо было вообще на первой секунде снести, ибо нарушает все, что только можно. Тебя пожалели, ты на голову села? До свидания.

Закрыто...

А я бы еще и премод добавил..
Я уж лучше помогу последнему дебилу, но который уважает собеседника, чем неблагодарному грубияну - даже если он подает надежды.
Дорогая Дарья, очень советую тебе серьезно рассмотреть карьеру базарной торговки - она как раз для тебя. Много не наторгуешь, но зато каждый день будешь идти с работы полностью удовлетворенная, обложив всех покупателей трехэтажным..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.