Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с ошибкой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
lsdy
Вообще задача:отсортировать матрицу перестановкой срок так чтоб элементы в последнем столбце стояли по возрастнаию.Найти ср арифмет последнего столбца.у меня не сортирует.

Program matr;
Uses crt;
const
max=10;

Var
 i,j,n,m,x,k:integer;
 a:array [1..max,1..max] of integer;
 b:array [1..max,1..max] of integer;
 candidat:integer;
 sum:real;
Begin
   ClrScr;
   Textcolor(6);
 Writeln('predupregdenir');
 repeat
   textcolor(2);
   writeln('vvod');

   readln(n);
   writeln ('vvod');
   readln(m);
   if (n<0) or (m<0) or (m>max )then
   writeln('vi vveli ne dopustimie zna4enija')
 until (n>0) and (n<max) and (m>0) and (m<max);

   writeln('‚ў(r)¤ ¬ ваЁжл');
   for i:=1 to n do
    for j:=1 to m do
     begin
       write ('elementi ',i,' н«Ґ¬Ґ­в ',j,'stolbca:');
       readln(a[i,j]);
       end;
       writeln('isxodnaya');
    for i:=1 to n do
    begin
     for j:=1 to m do
     write(a[i,j]:3);
     writeln;
     end;
   for i:=1 to n do
   b[j,1]:=a[i,m];
   for i:=1 to n-1 do
   for j:=1 to n do
   if b[j,m]<b[j,1] then begin
   k:=b[j,1];
   b[j,1]:=b[j,m];
   b[j,m]:=k
   end;
   for j:= 1 to n do
   begin
   if a[j,m]<>b[j,1] then
   begin
   for j:=1 to n do
   if a[j,m]=b[j,1] then b[j,2]:=j
   end
    else b[j,2]:=j;
   end;
   
    
    writeln('(r)вб(r)авЁа(r)ў ­­ п ¬ ваЁж ');
    for i:=1 to n do
    begin
     for j:=1 to m do
     write(a[i,j]:3);
     writeln;
     end;
     K:=0;
     for i:=1 to n do
     k:=k+a[i,j];
     sum:=k/n;
     write('б।­ҐҐ  аЁд¬.=',sum:0:3);
     repeat until keypressed;
     end.
lsdy
Помогите горит очень!!
мисс_граффити
Если хотите получить помощь - как минимум, с уважением относитесь к собеседникам и соблюдайте правила (они написаны наверху страницы).Особенно это касается тегов.
Настоятельно рекомендую внести исправления.
lsdy
Цитата(мисс_граффити @ 24.05.2007 23:19) *

Если хотите получить помощь - как минимум, с уважением относитесь к собеседникам и соблюдайте правила (они написаны наверху страницы).Особенно это касается тегов.
Настоятельно рекомендую внести исправления.
Понял.
Помогите плз поиском нашел многое но не много не то((А думать голова не может а отладить срочно надо.
Айра
По-моему, сортировка должна выглядеть так:
  for z:=2 to n do
     for j:=n downto z do
       begin
         if a[j-1,m]>a[j,m] then
           begin
             k:=a[j-1,m];
             a[j-1,m]:=a[j,m];
             a[j,m]:=k;
           end;
       end;
volvo
Цитата
По-моему, сортировка должна выглядеть так:
no1.gif Не совсем... Несмотря на то, что сравниваться должны только элементы последнего столбца, менять -то местами надо строки, а не только элементы этого самого столбца:

for z:=2 to n do
  for j:=n downto z do begin
    if a[j-1,m]>a[j,m] then
      for p := 1 to m do begin { меняем местами строки полностью }
        k:=a[j-1,p];
        a[j-1,p]:=a[j,p];
        a[j,p]:=k;
      end;
  end;

Айра
Спасибо, что поправил smile.gif опять я невнимательно читаю задание(((
lsdy
Айра,вольво респект.Будете в г.Йошкар-Ола звоните(+79600917742) помогу чем смогу !!
lsdy
Еще вопрос как сделать чтоб отсортированный столбец записывало в txt файл?
Айра
Можно воть так, если всю матрицу (вдруг понадобится)))) записывать:

var f: text;
...
  assign(f,'rezult.txt');  
  rewrite(f);         {если делать так, то файл будет создаваться сам там же где живет код программы}
  for i:=1 to n do
    begin
      for j:=1 to m do
         begin
           write(f,a[i,j]);
         end;
      writeln(f);
    end;
close(f);
...

и так, только для столбца:

var f: text;
...
  assign(f,'rezult.txt'); 
  rewrite(f);
  for i:=1 to n do
    begin
       writeln(f,a[i,m]);
    end;
  close(f);
...




p.s. проверяла на другой программке, но вроде работает))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.