Помощь - Поиск - Пользователи - Календарь
Полная версия: 1 - файлы 2 - Сортировка массива
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
FENIX
Помогите, плиз, решить следущее:

1) Сравнить два файла с точностью до слов (без учета неотображаемых символов и пробелов между словами). Совпадающие слова вывести в третий файл, несовпадающие слова в четвертый, а их количества на экран.

2) Упорядочить методом прямого включения по возрастанию только положительные элементы массива, оставив остальные эл-ты на своих местах. Напечатать индексы эл-ов, оставшихся на местах.

Вот мой исходник проги, но она работает не совсем правильно. Если запустить, то прога сортирует + эл-ты по блокам, а не весь массив (после запуска станет понятно, почему работает неправильно).
Как ее доделать (или переделать совсем), чтобы все было ОК?

Код
Program Lab;
Uses Crt;

Type TMas = array[1..30] of integer;

Var i,n : integer;
   A, B : TMas;

Procedure Sort(Var A : TMas);
Var i,j,x : integer;
Begin
  For i:=2 to n do
  begin
     x:=A[i];
     j:=i-1;
     If x > 0 then
        While (j>0) and (x<=A[j]) do
        begin
           A[j+1]:=A[j];
           Dec(j);
        end;
        A[j+1]:=x;
  end;
end;

BEGIN
ClrScr;
Write('Vvedite N=');
readln(n);
Writeln('Vvedite isxodnyi massiv:');
  For i:=1 to n do
  begin
     write('A[',i,']=');
     readln(A[i]);
  end;

Writeln;
Writeln('Otsortirovannyi massiv:');
Writeln;
For i := 1 to n do writeln('A[',i,']=',A[i]);
Writeln;
Writeln('Homepa elementov, ostavshixsya na svoix mestax:');
For i := 1 to n do
If A[i] < 0 then Writeln(i);
readln;
END.
mithquessir
FENIX
2.
Код

const
 n = 8;
 a:array[1..n] of integer = (-1,0,-2,4,3,1,5,-2);
var
 b:array[0..n] of integer;
 i,j,x,num:integer;
begin
 num := 0;
 for i := 1 to n do
   if a[i] >= 0 then
     begin
       inc(num);
       b[num] := a[i];
     end;
   for i := 2 to num do  {сортируем}
     begin
       x := b[i];
       b[0] := b[i];
       j := i;
       while x < b[j-1] do
         begin
           b[j] := b[j-1];
           dec(j);
         end;
       b[j] := x;
     end;
     for i := n downto 1 do
         if a[i] >= 0 then
           begin
             a[i] := b[num];
             dec(num);
           end;
 for i := 1 to n do
   WriteLn(a[i]);
 for i := 1 to n do {индексы отрицательных}
   if a[i] < 0 then
   WriteLn(i);
end.
FENIX
Народ, помогите с 1ой прогой, очень прошу.
Altair
Цитата
Сравнить два файла с точностью до слов (без учета неотображаемых символов и пробелов между словами). Совпадающие слова вывести в третий файл, несовпадающие слова в четвертый, а их количества на экран.

Если нужен вообще алгоритм, то я бы предложил следующее: прочитать слова из обоих файлов в 2 списка (ДСД) и затем сравнил бы списки слов, выполняя нужные действия...
FENIX
Плиз, помогите с написанием кода проги.
Мыслей никаких по этому поводу что-то нету...
sad.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.