Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PASCAL] Процедуры и функции, Элементы массива по возрастанию. 
V
    Опции темы
Ornik
  Дата 23.11.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Здравствуйте, уважаемые форумчане. Дело в том, что возникла проблема с функциями в PASCAL. Препод вообще ничего не объясняет, только общее, а на примере применять у меня не получается. Было дано задание: Дана действительная квадратная матрица n*n . Расположить элементы каждой строки по возрастанию. Пришлось очень много помучиться, в итоге я смог кое-что накорябать, но только через рандом, а желательно, чтобы матрицу нужно было вводить поэлементно. Код представлен ниже. 
 
Код

Program P1;

USES
crt;
VAR
n,i,j,k,buf:integer;
{Granici massiva s Pascal doljni bit opredeleni zaranee}
a:array [1..100,1..100] of integer;

BEGIN
CLRSCR;
Write ('Vvedite razmernost kvadratnoi matrici n*n n= ');
Readln (n);
for i:= 1 to n do
begin
for j:= 1 to n do
begin
a[i,j]:=random(9)+1;
Write (a[i,j],' ');
end;
Writeln;
end;
for k:= 1 to n do
begin
for i:= 1 to n-1 do
for j:= 1 to n-i do
if  a[k,j]>a[k,j+1] then
begin
buf:=a[k,j];
a[k,j]:=a[k,j+1];
a[k,j+1]:=buf;
end;
end;
writeln;

for i:= 1 to n do
begin
for j:=1 to n do
write (a[i,j], ' ');
writeln;
end;
readln;
end.



На этом проблема только начинается. Теперь необходимо перелопатить этот код так, чтобы использовались процедуры и функции, а я полный ноль. Помогите пожалуйста.
PM MAIL   Вверх
darkart
Дата 23.11.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



Код

program matrixsrt;

const
  MATRIX_DIM = 4;{размерность матрицы}

type
  TString = array[ 1..MATRIX_DIM ] of real;{описание типа строки}
  TMatrix = array[ 1..MATRIX_DIM ] of TString;{описание типа матрицы}
  
procedure InputMatrix( var matrix : TMatrix );
{процедура ввода матрицы}
var
  i, j : integer;{счетчики}
begin
  for i := 1 to MATRIX_DIM do{для каждой строки}
  begin
    for j := 1 to MATRIX_DIM do{для каждого элемента строки}
      read( Matrix[ i, j ] );{читаем очередной элемент строки}
    readln;{читаем ввод}
  end;
end;

procedure PrintMatrix( var matrix : TMatrix );
{процедура печати матрицы}
var
  i, j : integer;{счетчики}
begin
  for i := 1 to MATRIX_DIM do{для каждой строки}
  begin
    for j := 1 to MATRIX_DIM - 1 do{для каждого элемента строки, кроме последнего}
      write( matrix[ i, j ]:5:2, ' ' );{печать элемента строки и пробела}
    writeln( matrix[ i, MATRIX_DIM ]:5:2 );{печать последнего элемента с переводом курсора на новую строку}
  end;
end;

procedure StringSort( var matrixString : TString );
{процедура сортировки строки матрицы}
var
  i, j : integer;{счетчики}
  tmp : real;{вспомогательная переменная, используется для обмена}
begin
  {пузырьковая сортировка}
  for i := 1 to MATRIX_DIM - 1 do
    for j := i + 1 to MATRIX_DIM do{первые i - 1 элементов уже отсортированы}
      if matrixString[ j ] < matrixString[ i ] then{если элемент справа меньше элемента слева}
      begin
        {обмен двух значений}
        tmp := matrixString[ i ];
        matrixString[ i ] := matrixString[ j ];
        matrixString[ j ] := tmp;
      end;
end;

procedure MatrixSort( var matrix : TMatrix );
{процедура сортировки матрицы}
var
  i : integer;{счетчик}
begin
  for i := 1 to MATRIX_DIM do{для каждой строки матрицы}
    StringSort( matrix[ i ] );{сортируем i-ую строку матрицы}
end;

var
  matrix : TMatrix;{матрица}

begin
  writeln( 'Please enter a matrix...:' );
  InputMatrix( matrix );{вызываем процедуру ввода матрицы}
  writeln( 'Source matrix:' );
  PrintMatrix( matrix );{вызываем процедуру печати исходной(введенной) матрицы}
  MatrixSort( matrix );{вызываем процедуру сортировки матрицы}
  writeln( 'Sorted matrix:' );
  PrintMatrix( matrix );{вызываем процедуру печати отсортированной матрицы, т.е. матрицы после сортировки}
  readln;{ожидаем ввода}
end.



Это сообщение отредактировал(а) darkart - 23.11.2010, 23:13
PM MAIL WWW ICQ Skype GTalk   Вверх
Ornik
Дата 23.11.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



К сожалению, ошибка. 

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  error.JPG 58,73 Kb
PM MAIL   Вверх
darkart
Дата 23.11.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: нет
Всего: 31



Поправил, там имя программы и имя процедуры совпадало...
PM MAIL WWW ICQ Skype GTalk   Вверх
Ornik
Дата 23.11.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



darkart, спасибо, все работает. Дай Вам Бог здоровья!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.