|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.02.2009, 11:28 | #1 |
Пользователь
Регистрация: 12.02.2009
Сообщений: 22
|
ООП на Паскале.
Проверьте плз код.
Задание Разработать систему наследуемых объектов и программу для нахождения суммы, разности, присваивания, произведения векторов и матриц различных типов (целого, вещественного, комплексного). С помощью этих объектов найти n-ю степень матрицы. описала только объект матрица. одномерная. в модуле. Пишет ошибку 150 после строчки procedure matrica. paznost;... код : unit mat; interface uses crt; type matrica = object procedure prisv(n,i: integer); procedure symma; procedure raznost; procedure proizv; end; var n,i: integer; k: real; a,b : array[1..100] of real; implementation procedure matrica.prisv (n,i:integer); begin for i:=1 to n do begin Writeln('a[,i,]='); readln(a[i]); end; for i:=1 to n do writeln(a[i]); end; procedure matrica. paznost; begin for i:= 1 to n do a[i]:= a[i] - b[i]; end;} procedure matrica.proizv; begin for i:=1 to n do a[i]:= ((a[i]*b[i])+(a[i+1]*b[i+1])); end; procedure matrica.symma; begin for i:=1 to n do begin a[i]:= a[i]+b[i]; end; end; end. |
28.02.2009, 12:50 | #2 |
Пользователь
Регистрация: 07.01.2009
Сообщений: 15
|
Ну, откуда процедуры твоего класса (объекта) знают, что A - это квадратная матрица вещественных чисел, а N - это размерность квадратной матрицы A? Надо ввести для объекта такие поля, как квадратная матрица и ее размер. Затем, зачем ты передаешь в процедуры параметр i? Объявляй i как переменную внутри процедур.
|
28.02.2009, 13:58 | #3 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
объект без полей - это нонсэнс - если объект - матрица - значит поля должны быть соответствующие - поле - матрица; или другой вариант - сделать поля размеров, а матрица будет по размерам набираться
да и матрица - это массив массива - то есть a[i,k], a[1..100,1..50] - вот матрицы, квадратная матрица - это a[1..100,1..100] допустим, то есть с равным количеством строк и столбцов да, и ошибку пишет наверно, потому что кусок от коммента остался и буква не та в названии: Код:
Код:
Последний раз редактировалось capta1n; 28.02.2009 в 14:27. |
28.02.2009, 14:40 | #4 |
Пользователь
Регистрация: 07.01.2009
Сообщений: 15
|
Надо присвоить значение полю x.
Можно так это сделать: Код:
|
28.02.2009, 15:06 | #5 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
значению поля x должно присваиваться пользователем - именно так он укажет на размер массива объекту, проверку делать не надо - глобально описана константа, отвечающая за размер массива, а вот проверить x на то, что он входит в диапозон 1..n можно, но это уже высший пилотаж
|
28.02.2009, 23:27 | #6 |
Пользователь
Регистрация: 12.02.2009
Сообщений: 22
|
Да, ошибка. Не та буква. Исправила. все выполняется верно.
А разве матрица не может быть одномерной? |
01.03.2009, 00:20 | #7 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
точно не знаю, но всегда матрицу представлял себе из 2 или более строк
|
01.03.2009, 14:29 | #8 |
Пользователь
Регистрация: 07.01.2009
Сообщений: 15
|
Программа действительно работает правильно? Странно
|
04.03.2009, 16:03 | #9 |
Форумчанин
Регистрация: 06.12.2008
Сообщений: 613
|
ничего странного: хорошая программа всегда должна работать правильно )))
|
06.03.2009, 22:41 | #10 |
Пользователь
Регистрация: 12.02.2009
Сообщений: 22
|
Писала-писала...
Чего-то не хочет она работать так как надо. При ПРисваивании матрицы а она ее присваивает, а дальше не хочет пахать.. Не знаю в чем проблема. ПРоверьте плз код. Юнит. unit mat; interface uses crt; type matrica = object procedure prisv(n,i,j: integer); procedure symma; procedure raznost; procedure proizv; end; var n,i,j: integer; k: real; a,b : array[1..20, 1..20] of real; type mat2 = object (matrica) procedure prisv(n, i,j: integer); procedure symma; procedure raznost; procedure proizv; procedure stepen(c,q: integer); end; var d : array [1..100, 1..100] of real; c,q : integer; implementation procedure matrica.prisv (n,i,j:integer); begin writeln('vvidite n='); readln(n); for i:=1 to n do for j:=1 to n do begin Writeln('a[,i,',',j,]='); readln(a[i,j]); end; for i:=1 to n do for j:=1 to n do write(a[i,j],'| '); end; procedure matrica. raznost; begin for i:= 1 to n do for j:=1 to n do a[i,j]:= a[i,j] - b[i,j]; write(a[i,j],'| '); end; procedure matrica.proizv; begin for i:=1 to n do a[i,j]:= ((a[i,j]*b[i,j])+(a[i,j+1]*b[i+1,j])); write(a[i,j],'| '); end; procedure mat2. prisv (n,i,j :integer); begin inherited prisv(n,i,j); writeln('vvod matricu D'); begin writeln('d[,i,',',j,]='); readln(d[i,j]); end; write(d[i,j],'| '); end; procedure mat2. symma; begin inherited symma; end; procedure mat2. raznost; begin inherited raznost; end; procedure mat2. proizv; begin inherited proizv; end; procedure mat2. stepen(c, q : integer); begin q:=1; writeln ('vvedite stepen c='); readln(c); for q:=1 to c do begin for i:=1 to n do for j:=1 to n do a[i,j]:=((a[i,j]*a[i,j]) +(a[i,j+1]*a[i+1,j])); end; for i:=1 to n do for j:=1 to n do write (a[i,j],'| '); end; procedure matrica.symma; begin for i:=1 to n do begin a[i,j]:= a[i,j]+b[i,j]; end; end; end. сама прога. program ake; uses crt, mat; var i,j,n: integer; b,a: array [1..20,1..20] of real; option : word; x :mat2; begin clrscr; textbackground(5); textcolor(0); writeln(' vvedite n'); writeln(' '); readln(n); writeln('vvod matricu b'); for i:=1 to n do for j:=1 to n do begin writeln ('b[',i,',',j,']='); readln(b[i,j]); end; while true do begin writeln(' '); writeln('vuberite deistvie'); writeln('1- prisvaivanie,2- slozhenie,3- vuchitanie,4- proizvedenie,5- vozvedenie'); readln(option); case option of 1 : begin writeln('prisvaivanie'); x.prisv(n,i,j); end; 2 : begin writeln('slozhenie'); x.symma; end; 3 : begin writeln('vuchitanie'); x.raznost; end; 4 : begin writeln('proizvedenie'); x.proizv; end; 5 : begin writeln('vozvedenie v stepen'); x.stepen(c, q); end; end; readln; end; end. матрица б используется как вспомогательная при сложении и вычитании. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ООП инкапсуляция | albatros | Общие вопросы Delphi | 2 | 03.02.2009 08:28 |
задача по ООП | Lenivec** | Фриланс | 2 | 17.07.2008 15:17 |
ООП | Римма | Общие вопросы Delphi | 16 | 15.04.2008 11:32 |
ООП | Andrey Gort | Общие вопросы Delphi | 1 | 22.11.2006 15:01 |