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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 01:44   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию [Pascal] Проблема с указателями

Привет. Что-то я запутался. Мне нужно присвоить один указатель другому, я не пойму почему ошибка...
Подскажите...

Вроде по коду ясно, что я присваиваю указателю tmp на тип real указатель x[i], i-ый элемент которого тоже указатель на тип real.

Код:
const
  n = 10;
type
  preal = ^real;
  v= array [1..n] of preal;
procedure pr(var x:v);
var
  i,j:integer;
  tmp:^real;
begin
 new(tmp);
  for i:=1 to n do
      for j:=1 to n do
        if x[i]^=x[j]^ then
          begin
             writeln(i,' ',j);
             tmp^:=x[i]^;
             tmp:=x[i]; // ПОЧЕМУ здесь я не могу присвоить???
          end;
 dispose(tmp);
end;

var
  mas:v;  {massiv ukazateley na REAL}
  i:integer;
//    pmas - указатель на массив типа real
begin
  for i:=1 to n do
    begin
     new(mas[i]);
     pmas^[i]:=random(100);
     mas[i]^:=pmas^[i];
     write(pmas^[i]:0:2,'  ');
     writeln(mas[i]^:0:2);
    end;
  pr(mas);
  readln;
end.

Последний раз редактировалось Arkuz; 30.05.2009 в 01:47.
Arkuz вне форума Ответить с цитированием
Старый 30.05.2009, 01:53   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

У меня ругается тока на
Код:
 pmas^[i]:=random(100);



Что оно хоть делать-то должно..?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.05.2009, 02:10   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
У меня ругается тока на
Код:
 pmas^[i]:=random(100);
У меня не ругается... Но это другой вопрос...

Цитата:
Что оно хоть делать-то должно..?
Это не столь важно. Главное присвоение между указателями не получается, а мне это нужно.
Просто у меня есть необходимость указателю на real присвоить значение указателя на real (но только второй является i-ым элементом массива).

Всё... Но не получается...

Последний раз редактировалось Arkuz; 30.05.2009 в 02:13.
Arkuz вне форума Ответить с цитированием
Старый 30.05.2009, 03:35   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Где у вас объявление типа pmas? Где выделение памяти под него? А нету.
Вот, добавил и то и другое.

Код:
const
  n = 10;
type
  preal = ^real;
  v= array [1..n] of preal;
  arr = array[1..n] of real;
  parr = ^arr;
procedure pr(var x:v);
var
  i,j:integer;
  tmp:^real;
begin
 new(tmp);
  for i:=1 to n do
      for j:=1 to n do
        if x[i]^=x[j]^ then
          begin
             writeln(i,' ',j);
             tmp^:=x[i]^;
             tmp:=x[i];
          end;
 dispose(tmp);
end;

var
  mas:v;  {massiv ukazateley na REAL}
  i:integer;
   pmas : parr;

begin
  for i:=1 to n do
    begin
     new(mas[i]);
     new(pmas);
     pmas^[i]:=random(100);
     mas[i]^:=pmas^[i];
     write(pmas^[i]:0:2,'  ');
     writeln(mas[i]^:0:2);
    end;
  pr(mas);
  readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.05.2009, 13:29   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Посмотрел - вроде всё в коде сделано, а все равно ругается...

Код:
program Project1;
uses
  crt;
const
  n = 10;
type
  preal = ^real;
  v = array [1..n] of preal;
  digit = array [1..n] of real;

procedure pr(var x:v);
var
  i,j:integer;
  tmp:^real;
begin
 new(tmp);
   for i:=1 to n do
      for j:=1 to n do
        if x[i]^=x[j]^ then
          begin
             writeln(i,' ',j);
             tmp^:=x[i]^;
             tmp:=x[i]; //ругается здесь
             writeln(tmp^:0:2,'   zamena');

          end;
 dispose(tmp);
end;

var
  mas:v;  {massiv ukazateley na REAL}
  pmas:^digit; {ukazatel na massiv REAL}
  i:integer;
begin
  clrscr;
  randomize;
  new(pmas);
  for i:=1 to n do
    begin
     new(mas[i]);
     pmas^[i]:=random(100);
     mas[i]^:=pmas^[i];
     write(pmas^[i]:0:2,'  ');
     writeln(mas[i]^:0:2);
    end;
  pr(mas);
  readln;
end.

Последний раз редактировалось Arkuz; 30.05.2009 в 14:14.
Arkuz вне форума Ответить с цитированием
Старый 30.05.2009, 14:44   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Смущение

У меня теперь уже не ругается... Просто не совсем там объявил этот "pmas"...

2 часа ночи было, попутал спросония...


Только зачем "new(pmas);" в цикле делать - он же вроде один должен быть..?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.05.2009, 15:11   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от DomiNick
Только зачем "new(pmas);" в цикле делать - он же вроде один должен быть..?
Так 3:30 ночи у меня было )

У меня нигде сейчас не ругается )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.05.2009, 15:48   #8
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Мужики ничего не пойму. У вас не ругается, у меня ругается. Ни в делфях не могу консольное приложение откомпилить ни в паскале.... Не знаю что делать...
Arkuz вне форума Ответить с цитированием
Старый 30.05.2009, 15:51   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Arkuz, видимо у Вас плохой программ... Скачайте хороший -->Ссыль<--
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 30.05.2009, 15:51   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Arkuz, приложите скрин, где будет хорошо видна ошибка.
Хоть посмотрим на нее.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с указателями 3D Hunter Общие вопросы Delphi 8 14.03.2009 06:55
Работа с указателями Mango Помощь студентам 2 23.11.2008 10:33
Глюки с указателями _Инженер_ Общие вопросы Delphi 1 17.09.2008 20:20
проблема с указателями =\ shad0w Общие вопросы C/C++ 9 09.12.2007 03:36
Проблема с указателями novicer Общие вопросы Delphi 5 17.06.2007 00:21