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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2012, 20:49   #1
Олег1993
 
Регистрация: 11.01.2012
Сообщений: 3
По умолчанию Матрицы (Turbo Pascal).

Здравствуйте! Вот такое задание:Найти максимальный элемент матрицы и обнулить все элементы которые находятся левее и ниже максимального. Программу написать в пользовательском модуле. Обязателен ввод матрицы с текстового файла, его чтение и запись. Оформить ввод матрицы соответственно ее математической записи. В программе использовать цвета и различные графические манипуляции.
................................... ................................... ................................... .
Вот мои наработки:
Код:
unit matrix;
 intarface
 const   
                Nstring=10; {string - строка}
                Ncolumn=10; {column - столбец}
 
type 
                martix=array[1..Nstring,1..Ncolumn] of integer;
                procedure matrix_input(var A:matrix; var N,M:byte);
                procedure matrix_output(var A:matrix; var N,M:byte);
                function matrix_max_el(var A:matrix; var N,M,i,j:byte):byte;

 implementation
                function matrix_max_el(var A:matrix; var N,M,i,j:byte):byte;
                var max:word; ind_st,ind_col,i,j:byte;

 begin
                max:=A[i,1]; ind_st:=1;
                for i:=1 to N do
                if A[i,j]> max then 
                                    begin 
                                          max:=A[i,j]; 
                                          ind_st:=i; 
                                    end;
                for j:=1 to N do
                
                if A[i,j]> max then 
                                    begin max:=A[i,j]; 
                                          ind_col:=j; 
                                    end;
               
                if (ind_st)>(ind_col) then ind_st:=max;
                                      else ind_col:=max;
                
                for (i:=1) and (j:=1) to N,M do
 
 begin                
                A[i-1,j]:=0;
                A[i,j-1]:=0;
                A[i-1,j-1]:=0;
 end;

                matrix_output(A,N,M);

                writeln('New matrix');
                matrix_output(A,N,M);
                readln;
                end;
     
 
                
 end. 
 
 var text:file;
 begin
 clrscr;
	{чтение}
                assign(f,'C:\matrix.txt');
                reset(f);
                write(' ');
                while not Eof(f) do
                begin
                readln(f, S);
                write(S,' ');
                end;
                close(f);
                readln;
	{/чтение}

        {запись}
                assign(f,'C:\matrix.txt');        {процедура связи логического файла fr с физическим файлом }
                Rewrite(f);              {процедура открытия логического файла fr для последующей записи}
                writeln(f,'C:\matrix.txt'');       {запись строки test в файл}
                close(f);                {закрывает логический файл fr}
                end.    
        {/запись}
 end.
Олег1993 вне форума Ответить с цитированием
Старый 11.01.2012, 20:51   #2
Олег1993
 
Регистрация: 11.01.2012
Сообщений: 3
По умолчанию

При компиляции пишет: "interface expected". В программе пока нет графических функций.
Олег1993 вне форума Ответить с цитированием
Старый 12.01.2012, 06:49   #3
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Ругается он вовсе не на графику, а на
Код:
unit matrix;
 intarface
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 20.01.2012, 18:40   #4
Олег1993
 
Регистрация: 11.01.2012
Сообщений: 3
По умолчанию

Изменил программу. Только пишет, что не даются запустить модуль:"Cannot run a unit". Без понятия что делать. Вот код:
Код:
unit matrix;
 interface
 const
                Nstring=10; {string - строка}
                Ncolumn=10; {column - столбец}

type
                matrica=array[1..Nstring,1..Ncolumn] of integer;
                procedure matrica_input(var A:matrica; var N,M:byte);
                procedure matrica_output(var A:matrica; N,M:byte);
                function matrica_max_el(var A:matrica; var  N,M:byte):byte;

 implementation

                procedure matrica_input(var A:matrica; var N,M:byte);
                var i,j:byte;
 begin
                for i:=1 to N do
                                begin
                                     for j:=1 to M do
                                     write(A[i,j]:10,' ');
                                     writeln;
                                end;
 end;
                function matrica_max_el(var A:matrica; var N,M:byte):byte;
                var max:word; ind_st,ind_col,i,j:byte;
 begin
                max:=A[1,1];
                ind_st:=1;
                ind_col:=1;
                for i:=1 to N do
                for j:=1 to M do
                if A[i,j]>max then
                                   begin
                                         max:=A[i,j];
                                         ind_st:=1;
                                         ind_col:=j;
                                   end;

                for i:=ind_st to N do
                for j:=1 to ind_col do
                A[i,j]:=0;
 end;
                procedure matrica_output(var A:matrica; N,M:byte);
                var i,j:byte;
 begin

                matrica_output(A,N,M);
                writeln('New matrix');
                matrica_output(A,N,M);
                readln;  readln; readln; readln; readln;

 end;
end.
Олег1993 вне форума Ответить с цитированием
Старый 20.01.2012, 20:21   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Юнит - это вспомогательный кусок кода, который сам по себе рабаотать не может.
Нужно создать консольное приложение, вписать имя юнита в uses, написать тело программы и только потом запусать.

P.S. ты что вообще пишешь? О_о
Код:
               procedure matrica_input(var A:matrica; var N,M:byte);
                var i,j:byte;
 begin
                for i:=1 to N do
                                begin
                                     for j:=1 to M do
                                     write(A[i,j]:10,' ');
                                     writeln;
                                end;
 end;
input - это ввод. а тут ты ее печатаешь, причем процедуры формирования матрицы нет.

Код:
                procedure matrica_output(var A:matrica; N,M:byte);
                var i,j:byte;
 begin

                matrica_output(A,N,M);
                writeln('New matrix');
                matrica_output(A,N,M);
                readln;  readln; readln; readln; readln;

 end;
Два раза вызываешь процедуру из самой себя, прочем условий выхода из рекурсии нет.
Пять пустых readln'ов - зачем?
В первом сообщении тоже минимум 4 косяка сходу могу назвать, но будем считать, что он нам больше не интересен.

В общем, логика программы для меня осталась загадкой.
Все тривиальное просто

Последний раз редактировалось whatever; 20.01.2012 в 20:33.
whatever вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрицы в Turbo Pascal JIUMOH Помощь студентам 3 23.12.2009 17:50
а free pascal не читает задачи которые написаны на turbo pascal? demonara Паскаль, Turbo Pascal, PascalABC.NET 3 25.05.2009 16:28
Помогите решить две задачи на матрицы (Turbo Pascal) cinik Помощь студентам 1 23.05.2009 23:37
Разработка в среде Turbo Pascal программы перестановки столбцов матрицы Kapriz Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2009 18:38