Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите решить задачу с процедурой

Автор: DenSO 27.12.2008 0:50

в файле A.dat дан массив из 20 целых чисел. определить количество инверсий, т.е. ситуаций, когда текущий элемент меньше любого предыдущего. упорядочить массив по возрастанию в подпрограмме. упорядоченный массив записать в файл B.res

Автор: amega 27.12.2008 1:21

а файл какой текстовый или типизированый?

Автор: DenSO 27.12.2008 1:32

Цитата(amega @ 26.12.2008 21:21) *

а файл какой текстовый или типизированый?


в этом файле 20 разных чисел smile.gif

Автор: amega 27.12.2008 3:10

var f:Textfile; j,i,k,l,count:integer; a:array [1..100] of integer;
begin
assignfile(f,'<путь к файлу>');
reset(f); //открываемфайл
count:=0;
while not eof(f) do
begin
inc(count);
read(f,a[count]); //считыааем очередной элемент массива, count содержит количество элементов
end;
i:=0; // содержит количество инверсий
for j:=1 to count do
begin
l:=0;
for k:=j downto 1 do
begin
if a[j]<a[k] then inc(l);
end;
if j=l+1 then inc(i);
end;
//для то чтобы увидеть количество инверсий нужно просто вывести переменную i на екранж

//сюда всталяем любую сортировку и вывод файла

end.

Автор: DenSO 27.12.2008 3:30

а процедуру ты как описал? и что такое inc ?


Автор: amega 27.12.2008 3:38

Цитата
а процедуру ты как описал?


в каком смысле?

Цитата
и что такое inc ?


аналогично записи i:=i+1, тоесть увеличивает знаение на 1

Автор: DenSO 27.12.2008 3:41

Цитата(amega @ 26.12.2008 23:38) *

в каком смысле?

мне это все надо сделать в процедуре, а как я не знаю.

Автор: amega 27.12.2008 3:49

procedure my(Var f:Textfile; Var g:Textfile); //получает файлы как пареметр
var j,i,k,l,count:integer; a:array [1..100] of integer;
begin
reset(f); //открываемфайл
count:=0;
while not eof(f) do
begin
inc(count);
read(f,a[count]); //считыааем очередной элемент массива, count содержит количество элементов
end;
i:=0; // содержит количество инверсий
for j:=1 to count do
begin
l:=0;
for k:=j downto 1 do
begin
if a[j]<a[k] then inc(l);
end;
if j=l+1 then inc(i);
end;
//для то чтобы увидеть количество инверсий нужно просто вывести переменную i на екранж

//сюда всталяем любую сортировку и вывод файла

end;

Автор: DenSO 27.12.2008 4:00

Спасибо огромное) а ты проверял, работает?)

Автор: amega 27.12.2008 4:04

да работает

Автор: DenSO 27.12.2008 4:07

Спасибо!!! Очень признателен!