Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2008, 10:40   #1
SYL@R
Пользователь
 
Регистрация: 09.06.2008
Сообщений: 25
По умолчанию помогите найти ошибку в програме не работает в делфи

Задана матрица А(8,8). Упорядочить элементы в каждой строке в порядке возрастания их значений.

Код:
program Project1;

{$APPTYPE CONSOLE}
 var
 i,i2,j,buf:longint;
 a:array[1..8,1..8]of longint;
begin
writeln(a[i,j]);
 for i:=1 to 8 do
  for j:=1 to 8 do   
   read(a[i,j]);   
 for i:=1 to 8 do   
  begin   
   for i2:=1 to 7 do   
    for j:=1 to 7 do   
     if a[i,j]>a[i,j+1] then   
      begin   
       buf:=a[i,j];   
       a[i,j]:=a[i,j+1];   
       a[i,j+1]:=buf;   
      end;   
  end;   
 for i:=1 to 8 do   
  begin   
   for j:=1 to 8 do   
    write(a[i,j],' ');   
     readln;
end;
end.

Последний раз редактировалось Stilet; 04.07.2008 в 10:56.
SYL@R вне форума Ответить с цитированием
Старый 04.07.2008, 11:14   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Целый год проучились, а как писали ерунду, так и пишем.
Кроме собственно сортировки, все написано неверно.
Код:
var
 i,i2,j,buf:longint;
 a:array[1..8,1..8]of longint;
begin
randomize;
writeln('Ishodnaja matrica:');
for i:=1 to 8 do
  begin
    for j:=1 to 8 do
       begin
         a[i,j]:=random(20);
         write(a[i,j]:3);
       end;
    writeln;
  end;
for i:=1 to 8 do
for j:=1 to 7 do
for i2:=1 to 7 do
if a[i,i2]>a[i,i2+1] then
      begin
       buf:=a[i,i2];
       a[i,i2]:=a[i,i2+1];
       a[i,i2+1]:=buf;
      end;
writeln('Rezultat:');
for i:=1 to 8 do
  begin   
   for j:=1 to 8 do
   write(a[i,j]:3);
   writeln;
  end;
readln;
end.
puporev вне форума Ответить с цитированием
Старый 04.07.2008, 11:40   #3
Crazy_Wolfy
Пользователь
 
Аватар для Crazy_Wolfy
 
Регистрация: 03.07.2008
Сообщений: 34
По умолчанию

для уменьшения кода, вывод результата можно запихнуть уже во второй и первый цикл сортировки... другими словами как отсортировал элемент так и вывел. а так в остальном согласен. самый простой метод без заморочек для малых массивов.
совершенство понятие относительное, учеба вещь постоянная...
Crazy_Wolfy вне форума Ответить с цитированием
Старый 04.07.2008, 11:45   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Интересно как это, если сортировка идет в диапазоне 1-7, а вывод нужно сделать в диапазоне 1-8?
puporev вне форума Ответить с цитированием
Старый 04.07.2008, 12:28   #5
Crazy_Wolfy
Пользователь
 
Аватар для Crazy_Wolfy
 
Регистрация: 03.07.2008
Сообщений: 34
По умолчанию

не проблема.. последний элимент так же выводим через первый цикл после второго.. а 8.8 после выполнения цикла. я чаще использовал цикл с предусловием т.к. задачу себе расширял от ограниченности к массе.

можно и до авить условие на вывод последнего при достижении 7 шага... но это опять же утяжелит процесс постоянной проверкой но будет покрасивей.
совершенство понятие относительное, учеба вещь постоянная...

Последний раз редактировалось Stilet; 04.07.2008 в 12:53.
Crazy_Wolfy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку Максим_Леонидович БД в Delphi 4 20.08.2008 23:23
Помогите найти ошибку Дима82 Помощь студентам 4 19.05.2008 15:05
Помогите найти ошибку KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 1 11.04.2008 15:48
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15