Задачка на PASCAL
|
Crazy Wolf
Сообщения: n/a |
Приветствую ALL
Недавно подкинули задачу на Паскале.. помогите решить плиз С помощью ООП составить описание объектного типа TMatrix обеспечивающего размещение матрицы произвольного размера с вариантностью изменения числа строки столюцов и вывода на экран подматрицы любого размера и всей матрицы Я сам потихоньу изучаю Си и как это сделать на Си++ в принципе знаю... (я надеюсь) но как это сделать на Паскале? |
|
Отправлено: 21:48, 09-01-2003 |
Ветеран Сообщения: 651
|
Профиль | Отправить PM | Цитировать Crazy Wolf
На обычном досовском Паскале можно, но я тебе примерчик без ООП сделал, просто по работе с динам. памятью: uses crt,dos; Type pint=^integer; pbyte=^byte; pstring=^string; Var x,y,i,j,N,temp:integer; size:longint; Matrix:pointer; {А вот это универсальная функция, позволяющая} {работать с динам. данными, как с обычным массивом} {p - имя динам. переменной, V - размер одного элемента в матрице в байтах, N - число столбцов, i - координата по вертикали, j - координата по горизонтали} {координаты считаются от единицы!} function GetElem(var p:pointer;N,V,i,j:integer):pointer; var adr:longint; * * p1:pointer; begin adr:=((i-1)*N+(j-1))*V; p1:=pointer(longint(p)+adr); GetElem:=p1; end; BEGIN clrscr; {спросим размерность матрицы} readln(x);{число столбцов} readln(y);{число строк} N:=x {Допустим матрица со значениями типа integer в досевом паскале переменная типа integer занимает 2 байта, в Delphi - 4 байта} {Выделяем динамич. память} size:=(x)*(y)*2; getmem(Matrix,size); //Пример бестолковой работы с матрицей i:=3;{номер строки} j:=4;{номер столбца} pint(GetElem(Matrix,N,2,i,j))^:=temp; temp := pint(GetElem(Matrix,N,2,i,j))^; {Освобождаем динамич. память} freemem(Matrix,size);{можно не делать, если конец программы} END. Успешной сдачи! [s]Исправлено: Animal, 23:34 15-01-2003[/s] |
Отправлено: 23:29, 15-01-2003 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 163
|
Профиль | Отправить PM | Цитировать Animal
Этот даже я себе скопирую, пригодится ![]() |
------- Отправлено: 02:47, 16-01-2003 | #12 |
![]() Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Animal
Цитата:
|
|
------- Отправлено: 03:57, 16-01-2003 | #13 |
Ветеран Сообщения: 651
|
Профиль | Отправить PM | Цитировать shurikan
Я не писал оптимальный с т.зрения эффективности или с т.зрения красоты/краткости написания код. Это просто пример по работе с динамической памятью в досовском паскале, на мой взгляд довольно наглядный. Кстати, если смотреть формально, то использование функции вместо константы замедлит работу. |
Отправлено: 09:38, 16-01-2003 | #14 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать shurikan
Тем более что он будет равен 4, если в Win32. |
------- Отправлено: 12:52, 16-01-2003 | #15 |
Crazy Wolf
Сообщения: n/a |
2ALL
Большое сенкс...дошло до меня теперь.... Будете в Славном городе Стерлитамаке, что в Башкирии :beer: ![]() |
Отправлено: 00:28, 17-01-2003 | #16 |
![]() Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Animal
Цитата:
![]() |
|
------- Отправлено: 04:06, 17-01-2003 | #17 |
![]() Старожил Сообщения: 240
|
Профиль | Отправить PM | Цитировать Я тут глянул и понял, что немного облажался:
![]() Matrix.Create([1,6,1,7]); {Первая пара нач. и конеч. индексы первого измерения, *вторая пара - соотв для второго. Нумеруются от 1 до 6 и от 1 до 7} Поскольку конструктор - функция класса. Извините... ![]() [s]Исправлено: shurikan, 7:39 17-01-2003[/s] |
------- Отправлено: 07:38, 17-01-2003 | #18 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать shurikan
Animal В случае .NET вообще sizeof запрещено как небезопасный код. |
------- Отправлено: 14:51, 17-01-2003 | #19 |
Ветеран Сообщения: 651
|
Профиль | Отправить PM | Цитировать shurikan
Да знал я, знал, что в Win32 тип integer 4 байта, в коментариях ведь написано в моем первом посте - почитай! Смысл то примера - простая работа с динам. памятью на стандартном паскале DOS и только. vasketsov Странно, что может быть небезопасного в функции sizeof. Это ни к тому, что я тебе не верю, просто любопытно. |
Отправлено: 22:13, 17-01-2003 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) | Loading | Программирование и базы данных | 41 | 20-05-2015 15:28 | |
Delphi - Задачка на Pascal'e !! | stolyar | Программирование и базы данных | 4 | 21-11-2009 14:21 | |
Задачка | VuDZ | Программирование и базы данных | 4 | 02-04-2003 17:44 | |
Задачка | noname00.pas | Программирование и базы данных | 6 | 07-12-2001 11:43 | |
Задачка... | noname00.pas | Программирование и базы данных | 4 | 28-11-2001 03:17 |
|