Помогите доработать задачку пожалуйста

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
dimka
Сообщения: 21
Зарегистрирован: 10 мар 2009, 18:42
Откуда: Москва
Контактная информация:

Задание.
Прочитать из файла матрицу действительных чисел 10*10. Создать массив, содержащий отсортированные в порядке возрастания элементы заданной области матрицы. Записать массив в исходный файл. Сортировку осуществлять при помощи процедуры.
Область:
0 0 0 0 * 0 0 0 0 0
0 0 0 * * * 0 0 0 0
0 0 * * * * * 0 0 0
0 * * * * * * * 0 0
* * * * * * * * * 0
0 0 0 0 * 0 0 0 0 0
0 0 0 * * * 0 0 0 0
0 0 * * * * * 0 0 0
0 * * * * * * * 0 0
* * * * * * * * * 0

Код: Выделить всё

program pr1;
type mas=array[1..100] of real;
var a:array[1..10,1..10] of real; b:mas;
i,j,c:integer; k:real; fd:text; name:string;
procedure sort(var c:integer; var b:mas);
var k:real; i,j:integer;
begin
for i:=1 to c-1 do
for j:=i+1 to c-1 do
 begin
  if b[j]<b[i] then
   begin
    k:=b[i];
    b[i]:=b[j];
    b[j]:=k;
   end;
 end;
end;
begin
writeln('Vvedite imya i pyt faila: ');
readln(name);
writeln;
if length(name)=0 then name:='c:/fd.txt';
assign(fd,name);
reset(fd);
for i:=1 to 10 do begin
for j:=1 to 10 do
 begin
  read(fd,a[i,j]);
  write(a[i,j]:5:0);
 end;
writeln;
readln(fd)
end;
c:=1;
for i:=1 to 5 do begin
for j:=6-i to i+4 do
 begin
  b[c]:=a[i,j];
  c:=c+1;
 end;
end;
for i:=6 to 10 do begin
for j:=11-i to i-1 do
 begin
  b[c]:=a[i,j];
  c:=c+1;
 end;
end;
sort(c,b);
c:=1;
writeln;
for i:=1 to 5 do begin
for j:=6-i to i+4 do
 begin
  a[i,j]:=b[c];
  c:=c+1;
 end;
end;
for i:=6 to 10 do begin
for j:=11-i to i-1 do
 begin
  a[i,j]:=b[c];
  c:=c+1;
 end;
end;
rewrite(fd);
for i:=1 to 10 do begin
for j:=1 to 10 do
 begin
  write(fd,a[i,j]:5:0);
  write(a[i,j]:5:0);
  c:=c+1;
 end;
writeln;
writeln(fd);
end;
close(fd);
readln
end.
Вот написал программу, только не знаю, правильно ли процедуру написал. И почему то когда вводишь отрицательные числа не выполняет сортировку. Помогите пожалуйста! :(
Unicuum
Сообщения: 6
Зарегистрирован: 20 апр 2009, 12:33
Откуда: Алтайский край
Контактная информация:

В процедуре sort подправь:
for i:=1 to c-1 do
for j:=i+1 to c do
Ответить