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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2014, 13:52   #1
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
Счастье делфи указатели

Добрый день,
помогите пожалуйста немного переделать программу:
Дано описание: type RtrRe = ^Real; Vector = Array [1..100] of RtrRe;
Считая, что все элементы вектора X отличны от Nil, построить функцию MAX(x) для нахождения наибольшего из чисел, на которые ссылаются элементы вектора х.


Код:
Program ykazateli;
type RtrRe = ^Real; Vector = Array[1..100] of RtrRe;
var
 X : Vector; 
function max(Y : Vector): boolean;
var
 i,j:integer;
begin
 same := false;
 for i := 1 to 100 do
 for j := i+1 to N-100 do
 if (Y[i]=Y[j])
 then
 begin
 same := true;
 exit;
 end;
end;
begin

ReadLn;
end.

Последний раз редактировалось Serge_Bliznykov; 27.01.2014 в 14:11.
христик вне форума Ответить с цитированием
Старый 27.01.2014, 14:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы так написал:
Код:
program Project6;

{$APPTYPE CONSOLE}
type
  RtrRe = ^Real;
  Vector = Array[1..100] of RtrRe;

procedure FillVectorRandom(var Y : Vector);
var
  i : integer;
begin
  for i := low(Vector) to High(Vector) do begin
    New(Y[i]);
    Y[i]^ := random * random(11); {случайные дробные числа от нуля до 10}
  end;
end;

procedure PrintVector(Y : Vector);
var
  i : integer;
begin
  for i := low(Vector) to High(Vector) do
    Write(Y[i]^:2:5,' ');
  WriteLn;
end;

function max(Y : Vector): real;
var
  i, iMax:integer;
begin
 iMax := low(Vector);
 for i := low(Vector)+1 to High(Vector) do
    if Y[i]^>Y[iMax]^ then iMax := i;
 max := Y[iMax]^;
end;

var
  X : Vector;
begin
  Randomize;
  FillVectorRandom(X);
  PrintVector(X);
  WriteLn('Mamimum = ', max(X):2:5);
  ReadLn;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.01.2014, 14:31   #3
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
По умолчанию

большое спасибо,
христик вне форума Ответить с цитированием
Старый 27.01.2014, 14:34   #4
христик
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 16
По умолчанию

а можно сделать с этими данными функцию, которая бы возвращала первый из элементов вектора х, ссылающихся на отрицательные числа или nil, если таких нет???
христик вне форума Ответить с цитированием
Старый 27.01.2014, 14:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как вариант
Код:
function FindFirstNegative(Y : Vectror) : RtrRe;
var i : integer;
begin
 FindFirstNegative := nil;
 for i := low(Y) to High(Y) do
   if Y[i]^<0 then begin
     FindFirstNegative := Y[i];
     Exit;
   end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бросок к горизонту(паскаль+-делфи.(может ли кто помочь сделать с Паскаля АВС на Делфи?) extrimal Помощь студентам 8 24.03.2013 23:51
C++(указатели) yaya60 Помощь студентам 0 10.11.2011 20:54
Указатели vrtp Общие вопросы C/C++ 6 08.11.2011 01:33
указатели salmon172 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2011 21:34
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39