IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> динамические структуры данных, указатели+массив..
compiler
сообщение 19.05.2007 18:05
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день, помогите разобраться с указателями..
необходимо.Компонентам массива целых присваиваются сдвинутые на 65 значения индекса, печатается массив целых. Переменной-указателю на символьный массив присваивается адрес массива целых. Снова распечатывается массив, но по адресам значений. Вместо последовательности чисел будет напечатана последовательность ASCII символов от А до z с пробелами.
собственно есть текст проги, но мне он не ясен помогите пожалуйста..
а вот текст..
Program ReInterpretation;	
Uses Crt;
Type
A = Array [0..99] of char;
Var
X : Array [0..49] of integer;
pA : ^A;
i : integer;
Begin
ClrScr;
for i := 0 to 49 do begin
X[i] := 65+i;
write(X[i], ' ');
End;

pA := @X;

writeln;

for i := 0 to 99 do
write(pA^[i],' ');

readln;
read;
End.

заранее благодарен...



Добавлено через 2 мин.
вроде все стало ясно... прошу прощение что побеспокоил..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 20.05.2007 17:12
Сообщение #2


Гость






program Primer1;
const
SizeOfReal = 6; {Длина переменной типа REAL}
N = 100;
M = 200;
var
i, j: integer;
PtrStr: array [1..N] of pointer;
s: real;
type
RealPoint = ^real;
{-----------------}
Function AddrR(i,j: word): RealPoint;
// По индексу в массиве указателей i и индексу элемента внутри i-го массива
// выдает адрес вещественной переменной
begin
AddrR := RealPoint(
// "собираем" адрес из сегмента : смещения, где
ptr(
seg(PtrStr[i]^), // сегмент = сегменту области памяти, на которую
// указывает ptrstr[i]
ofs(PtrStr[i]^)+(j-1)*SizeOfReal // смещение = смещению этой же
// области памяти + количеству байт, предшествующих
// элементу с заданным индексом (j)
)
)
end; {AddrR}
{-----------------}
Function GetR(i,j: integer): real;
// Выдает значение вещественной переменной по индексу массива - контейнера
// и номеру элемента в этом массиве
begin
GetR := AddrR(i,j)^
// для того, чтобы получить значение самой переменной достаточно
// просто разыменовать указатель, поскольку он уже приведен к типу
// "указатель на Real" в функции
end; {GetR}
{-----------------}
Procedure PutR(i,j: integer; x: real);
// Помещает в позицию J массива-контейнера I значение X
begin
AddrR(i,j)^ := x
end; {PutR}
{-----------------}

begin {Main}

// Выделяем память для N массивов-контейнеров (каждый - на M элементов типа Real)
for i := 1 to N do begin
GetMem (PtrStr[i], M*SizeOfReal);
// и заполняем их случайными значениями...
for j := 1 to M do PutR(i, j, Random)
end;

// Ну, дальше я думаю все понятно?
s := 0;
for i := 1 to N do
for j := 1 to M do
s := s + GetR(i,j);
WriteLn(s / (N * M): 12:10);
end. {Main}
 К началу страницы 
+ Ответить 
compiler
сообщение 20.05.2007 17:31
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


спасибо, буду разбираться...

оффтоп но перед этим отдохну... погодка чудная


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
compiler   динамические структуры данных   19.05.2007 18:05
compiler   собственно задача из <<той же серии>>....   19.05.2007 19:09
volvo   Что именно здесь непонятно? Почему в процедуре печ...   19.05.2007 19:13
compiler   Что именно здесь непонятно? Почему в процедуре печ...   19.05.2007 19:16
volvo   Здесь: http://www.klax.tula.ru/~zet/themes/pointe...   19.05.2007 19:24
compiler   Здесь:оттуда const р: ^real = NIL; begin if р = ...   19.05.2007 22:14
volvo   У тебя 2 символа p - в кириллице (в описании и в I...   19.05.2007 22:24
compiler   Поменяй на латинские...спасибо... вечно попадаюсь ...   19.05.2007 22:26
compiler   а вот еще одна задача оттуда... program Primer1; c...   20.05.2007 16:32
volvo   Свят-свят-свят... Что с тобой? Как это "не ко...   20.05.2007 16:38
compiler   теперь работает(но с предупреждением)... volvo, не...   20.05.2007 16:43
volvo   program Primer1; const SizeOfReal = 6; {Дли...   20.05.2007 17:12
compiler   спасибо, буду разбираться... [i]оффтоп [size=1]но...   20.05.2007 17:31
compiler   еще вот вопрос по CSEG( Возвращает значение, хран...   20.05.2007 19:08
volvo   Ты компилируешь в FPC? Тогда ничего не поможет:   20.05.2007 19:25
compiler   спасибо...   20.05.2007 19:29
compiler   вот есть еще такая программка... по ней пару вопро...   22.05.2007 16:11
volvo   Абсолютно никакой - Addr(X) и @X возвращают адрес ...   22.05.2007 16:38
compiler   Это ты о чем? о виртуальной памяти... при создании...   22.05.2007 17:25
volvo   А что, твоя программа сама управляет виртуальной п...   22.05.2007 17:32
compiler   А что, твоя программа сама управляет виртуальной п...   22.05.2007 17:38
compiler   и еще пару вопросов... по GETMEM (Р, SIZE), в чем ...   22.05.2007 18:04
volvo   Ты все время путаешь TP и FPC... Что для FPC (под ...   22.05.2007 18:23
compiler   Ты все время путаешь TP и FPC... так получается......   24.05.2007 17:21
compiler   и еще вопрос: в чем разница процедур NEW-DISPOSE и...   25.05.2007 18:14


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"