Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить задачу с процедурой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DenSO
в файле A.dat дан массив из 20 целых чисел. определить количество инверсий, т.е. ситуаций, когда текущий элемент меньше любого предыдущего. упорядочить массив по возрастанию в подпрограмме. упорядоченный массив записать в файл B.res
amega
а файл какой текстовый или типизированый?
DenSO
Цитата(amega @ 26.12.2008 21:21) *

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


в этом файле 20 разных чисел smile.gif
amega
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
а процедуру ты как описал? и что такое inc ?

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


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

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


аналогично записи i:=i+1, тоесть увеличивает знаение на 1
DenSO
Цитата(amega @ 26.12.2008 23:38) *

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

мне это все надо сделать в процедуре, а как я не знаю.
amega
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
Спасибо огромное) а ты проверял, работает?)
amega
да работает
DenSO
Спасибо!!! Очень признателен!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.