Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 707
от 24.10.2008, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 208, Экспертов: 41
В номере:Вопросов: 1, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 147705: Здравствуйте уважаемые эксперты, доброго времени суток, у меня такая необычная просьба, я на половину справился со своей задачей - Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида P/Q (P — ц...

Вопрос № 147.705
Здравствуйте уважаемые эксперты, доброго времени суток, у меня такая необычная просьба, я на половину справился со своей задачей - Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида P/Q (P — целое, Q — натуральное): 1) сложение; 2) вычитание; 3) умножение; 4) деление; 5) сокращение дроби; 6) возведение дроби в степень N (N — натуральное); 7) функции, реализующие операции отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше).

Дан массив A — массив обыкновенных дробей. Отсортировать его в порядке возрастания.

Вот модуль у меня есть а саму задачу не могу сделать, помогите решить эту задачу.
Заранее спасибо.

Приложение:

Отправлен: 19.10.2008, 10:55
Вопрос задал: Довиденко Д.А. (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.6 от 14.10.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru
RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

В избранное