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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 12:45   #1
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию Вывод максимального значения из массива pascalabc.net

Добрый день, подскажите пожалуйста. У меня есть массив, мне необходимо в нем найти максимальное значение и вывести его в поле типа Field. Все вроде ничего, да при выведении максимального значения ругается "Нельзя преобразовать тип array [1..6] of integer к array of integer".

Код:
const
     n = 6;

type
    mas=array[1..n] of integer;

var
    a:mas;
    rez:Field;
...

Находим максимальное значение:
Код:
function imax(a:array of integer): integer;
begin
   Result:=0;
   Result:=a[1];
   for var i:=2 to n do
    if a[i]>Result then
      begin
          Result:=a[i];
      end;
end;
Выводим максимальное значение:
Код:
procedure emax;
begin
      rez.Text:='Максимальное элемент -> '+ imax(a); //ругается именно на а в imax(a)
end;
Konstantin1706 вне форума Ответить с цитированием
Старый 16.09.2012, 12:47   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
function imax(a:mas): integer;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.09.2012, 12:52   #3
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

Уже пробовал, выводит ошибку "Нет перегруженной подпрограммы с такими типами параметров":
Код:
rez.Text:='Максимальное элемент -> '+ imax(a);
Konstantin1706 вне форума Ответить с цитированием
Старый 16.09.2012, 12:54   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Значит выше, где описан прототип функции, тоже исправьте.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 16.09.2012, 12:59   #5
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

Простите, вы наверно ответили на то сообщение, которое я попытался быстро исправить. Там где я описывал, что в программе имеется данная функция я исправил, на что мне компилятор вывел другую ошибку, которую я описал сообщением выше.
Konstantin1706 вне форума Ответить с цитированием
Старый 16.09.2012, 13:10   #6
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

В поле типа IntegerField выводит(пусть немного не так как надо), а в Field отказывается.
Konstantin1706 вне форума Ответить с цитированием
Старый 16.09.2012, 13:12   #7
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

может надо сначала претворить число в строку?
rUs_LAN вне форума Ответить с цитированием
Старый 16.09.2012, 13:25   #8
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

Цитата:
Сообщение от rUs_LAN Посмотреть сообщение
может надо сначала претворить число в строку?
имеете в виду с помощью IntToStr? Дописал:

Код:
function imax(a:mas): integer;
begin
   Result:=0;
   Result:=a[1];
   for var i:=2 to n do
    if a[i]>Result then
      begin
          Result:=a[i];
          s:=IntToStr(Result);
      end;
end;
Код:
procedure emax;
begin
      rez.Text:='Максимальное элемент -> '+ s;
end;
Запускается без ошибок, но в строковое поле не выводится само значение переменной s, а только "Максимальное элемент -> ".
Konstantin1706 вне форума Ответить с цитированием
Старый 16.09.2012, 13:30   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Скорее, так:
Код:
function imax(a:mas): integer;
begin
   Result:=0;
   Result:=a[1];
   for var i:=2 to n do
    if a[i]>Result then
      begin
          Result:=a[i];
      end;
end;
...
procedure emax;
begin
      rez.Text:='Максимальное элемент -> '+ IntToStr(imax(a));
end;
Или:
Код:
function imax(a:mas): integer;
begin
   Result:=0;
   Result:=a[1];
   for var i:=2 to n do
    if a[i]>Result then
          Result:=a[i];
    s:=IntToStr(Result);
end;
...
procedure emax;
begin
      imax(a);
      rez.Text:='Максимальное элемент -> '+ s;
end;
Или даже так:
Код:
function imax(a:mas): string;
var
r:integer;
begin
   r:=a[1];
   for var i:=2 to n do
    if a[i]>r then
        r:=a[i];
    Result:=IntToStr(r);
end;
...
procedure emax;
begin
      rez.Text:='Максимальное элемент -> '+ imax(a);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.09.2012 в 13:35.
BDA на форуме Ответить с цитированием
Старый 16.09.2012, 13:50   #10
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

BDA, спасибо большое, оба примера работают.
Konstantin1706 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск максимального значения в каждой строке массива(блок-схема) d1mka_ Помощь студентам 1 18.11.2011 18:52
PascalABC.NET v1ktor Паскаль, Turbo Pascal, PascalABC.NET 0 21.06.2011 13:58
Вычислить сумму элементов массива до и после максимального значения doter Общие вопросы C/C++ 3 24.10.2010 17:51
PascalABC.net *stRong* Помощь студентам 2 10.06.2010 17:50
Вывод значения элементов массива valdemar593 Общие вопросы C/C++ 7 22.12.2009 21:37