Вопрос № 147705: Здравствуйте уважаемые эксперты, доброго времени суток, у меня такая необычная просьба, я на половину справился со своей задачей - Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида P/Q (P — ц...
Вопрос № 147.705
Здравствуйте уважаемые эксперты, доброго времени суток, у меня такая необычная просьба, я на половину справился со своей задачей - Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида P/Q (P — целое, Q — натуральное): 1) сложение; 2) вычитание; 3) умножение; 4) деление; 5) сокращение дроби; 6) возведение дроби в степень N (N — натуральное); 7) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).
Дан массив A — массив обыкновенных дробей. Отсортировать его в порядке возрастания.
Вот модуль у меня есть а саму задачу не могу сделать, помогите решить эту задачу. Заранее спасибо.
Отвечает: AkaProc
Здравствуйте, Довиденко Д.А.! Я написал подпрограмму для сортировки массива, вот она: for j:=1 to N-1 do begin new:=mas[N]; k:=N; for I:=N downto J DO IF MAS[I]>NEW then begin k:=I; new:=mas[I]; end; mas[k]:=mas[j]; mas[j]:=new; end;
Работает он так: 1) Выбирается наибольший элемент 2) Меняем его местами с первым элементом 3) Повторяем процесс с оставшимися N-1 элементами, N-2 элементами и т.д., до тех пор, пока не останется один, самый маленький элемент.
Описание: Цикл
for j:=1 to N-1 DO определяет место J, на которое будет поставлен наибольший элемент, найденный в цикле: for I:=N downto J DO N - размер массива; NEW - наибольший элемент, его порядковый номер K; MAS - массив чисел; K, J - переменные циклов.
Удачи!
Ответ отправил: AkaProc (статус: 4-ый класс)
Ответ отправлен: 19.10.2008, 12:13 Оценка за ответ: 5
Отвечает: Пупорев Юрий Борисович
Здравствуйте, Довиденко Д.А.! Сортировка массива записей делается точно также как сортировка любого линейного массива. Я создавал массив через random, поэтому у себя в модуле изменил тип числителя на integer, поскольку с longint random для отрицательных чисел не работает, если будете делать ввод вручную, можете ничего не менять. Код в приложении.
Приложение:
Ответ отправил: Пупорев Юрий Борисович (статус: Специалист)
Ответ отправлен: 19.10.2008, 12:28 Оценка за ответ: 5
Отвечает: Виктор Пырлик
Здравствуйте, Довиденко Д.А.!
вот программа, реализующая метод "пузырька" (сортировка) если в процедуре swap замените знак > на < сортировка будет по убыванию..
Код:
{ sort_mass .pas сортировка массива
методом пузырька }
program sor_mass;
uses crt,math;
var i,count_m:integer; ar:array of real;
procedure Swapf(var a:real;var b:real); var temp:real; begin temp := a; if(temp > b) then begin a := b; b := temp; end; end;
//---------------------------------------------------------------------- procedure so
rtf(var m:array of real); var i,j:integer; begin for i:= 0 to length(m)-2 do begin for j:= i+1 to length(m)-1 do begin swapf(m[i],m[j]); end; end; end;
BEGIN randomize; write('Введите размер массива: '); readln(count_m); SetLength(ar,count_m); for i:= 0 to count_m-1 do begin ar[i] := random(100) / random(500) * 1.0; write(' ',ar[i]:5:2);
end; writeln; writeln('-----------------------------------------'); sortf(ar); for i:= 0 to count_m -1 do begin write(' ',ar[i]:5:2); end; readkey; END.
--------- не получается там - где не пробуют
Ответ отправил: Виктор Пырлик (статус: Профессионал) Россия, Екатеринбург Тел.: 89043822027 ICQ: 490191733 ---- Ответ отправлен: 19.10.2008, 14:50