![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 21.02.2011
Сообщений: 10
|
![]()
Здраствуйте! у меня 2 кода написанны но не работают помогите сделать отладку!плиз)
вот 1 задача:вход 2 квадратные матрицы выход 3-я -результат действия + или *, знак должен выбрать пользователь.ввод матриц тоже с клавы) вот код: program lab1pr1; const Max=10; type Tm=array[1..Max, 1..Max] of integer; var matr1,matr2:Tm; resmatr:Tm; n,m:integer; action:char; procedure ra3mermatr(var x,y:integer); begin {строки} repeat write('введите кооличество строк матрицы'(1..',Max,')'); readln(x); if(x<1) then writeln('*не может быть отрицательным'); if (x>Max) then writeln('не может превышать 10'); until (x>0)and(x<Max); {столбцы} repeat write('введите колличество столбцов матриц (1..',Max,')'); readln(y); if (y<1) then writeln('не может быть <1!'); if (y>Max) then writeln('*не должно превышать 10'); until (x>0)and(x<=Max); end; procedure EnterMatr(x,y:integer; var M:Tm); var i,j:integer; begin writeln('введите элементы матрицы:'); for i:=1 to x do for j:=1 to y do Begin writeln('M[',i,',',j,']='); readln(M[i,j]); end; end; procedure BblBod(x,y:integer;M:Tm); var i,j:integer; begin for i:=1 to x do begin for j:=1 to y do write(M[i,j]); writeln; end; end; procedure summatr(m1,m2:Tm; var res:Tm; n,m:integer); var i,j:integer; begin for i:=1 to n do for j:=1 to m do res[i,j]:=m1[i,j]+m2[i,j]; end; procedure myltmatr(m1,m2:Tm; var res:Tm; n,m:integer); var i,j,k:integer; begin for i:=1 to m do for j:=1 to m do begin res[i,j]:=0; for k:=1 to n do res[i,j]:=m1[i,k]+m2[k,j]; end; end; begin ra3mermatr(n,m); writeln('введите элементы 1 матрицы:'); EnterMatr(n,m,matr1); writeln('введите элементы 2 матрицы:'); EnterMatr(n,m,matr2); writeln('1-я исходная матрица:'); BblBod(n,m,matr1); writeln('2-я исходная матрица*:'); BblBod(n,m,matr2); writeln('выберите действие: (+) или (*):'); readln(action); if (action='+')then begin summatr(matr1,matr2,resmatr); output(resmatr); end; if (action='*') then begin myltmatr(matr1,matr2,resmtr); output(resmatr); end; summatr(matr1,matr2,resmatr,n,m); writeln('результат:'); BblBod(n,m,resmatr); myltmatr(matr1,matr2,resmatr,n,m); writeln('результат:'); BblBod(n,m,resmatr); readln; end. вообщем я тут не могу сделать чтобы знак пользователь выбирал...помогите) а вот 2 задача:Во входном файле code.txt (файл необходимо создать самостоятельно) записана матрица размером N х N (N – нечетное число). В файл decode.txt необходимо вывести строку, состоящую из элементов матрицы, полученную при обходе матрицы по спирали (начиная с первого элемента первой строки). вот мой код: program lab1pr2; const n=5; type TMatr=array[1..n,1..n] of integer; var Matr:TMatr; f:text; i,j,p:integer; begin assign(f,'Code.txt'); Reset(f); for i:=1 to n do begin for j:=1 to n do read(f,Matr[i,j]); end; readln(f); end; close(f); assign(f,'decode.txt'); rewrite(f); for p:=1 to (n+1) div 2 do begin for j:=p to n-p+1 do write(Matr[p,j]:4); for i:=p+1 to n-p+1 do write(Matr[i,n-p+1]:4); for j:=n-p downto p do write (Matr[n-p+1,j]:4); for i:=n-p downto p+1 do write(Matr[i,p]:4); end; close(f); readln; end. не понимаю что не так... и если кто может помогите сделать её более универсалинее) P.S в первой задаче ещё помогите сделать её не прямоугольной а квадратной) ВСЕМ ЗАРАНЕЕ СПАСИБО!!!! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с файломи в Паскале | kuzmich | Помощь студентам | 1 | 27.10.2010 20:15 |
Работа с текстовыми файлами | A_Orlov | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 14.06.2010 14:49 |
Работа с текстовыми файлами | ditya_kremlya | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 20.05.2010 18:10 |
работа с текстовыми файлами | бургер | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 16.05.2010 15:18 |
работа с файломи прямого доступа | st1mUA | Помощь студентам | 0 | 20.10.2009 01:23 |