Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Как записать массив в память   Найти похожие ветки 

 
Griffon   (2005-06-01 12:52) [0]

Добрый день! Подскажите как записать массив целых чисел, введенный в Мемо, в память под именем mas и обработать его функциями Max и Min.


 
raidan ©   (2005-06-01 12:57) [1]

Я всегда думал, что массив целых чисел, введенный в мемо, и так в памяти :)


 
liver   (2005-06-01 12:57) [2]

напиши функцию обхода строк Meme ну а там уже в строках выделяй элементы, они и будут столбцами массива...


 
raidan ©   (2005-06-01 12:59) [3]

>liver   (01.06.05 12:57) [2]
[радостно хрюкаю]

>Griffon   (01.06.05 12:52)
Автор, убей себя с разбегу о стену.
Потому что вопросы так не задаются.


 
Digitman ©   (2005-06-01 12:59) [4]


> как записать массив целых чисел, введенный в Мемо, в память


подразумевается, что массив одномерный, и каждый будущий эл-т - это отдельная строка в Мемо ?

пустячное дело ..

for i := 0 to Memo.Lines.Count - 1 do
 mas[i] := IntToStr(Memo.Lines[i]);


> обработать его функциями Max и Min


это как ?

Max и Min не работают с массивами


 
Юрий Зотов ©   (2005-06-01 13:00) [5]

А зачем ЧИСЛА вводить в Memo?
Не лучше ли прямо в массив чисел их и ввести?


 
Alex Konshin ©   (2005-06-01 13:02) [6]

Опять лабораторные пошли...


 
ANB ©   (2005-06-01 13:02) [7]


> Юрий Зотов ©   (01.06.05 13:00) [5]
- это, похоже, автору проблематично. Дал юзеру мемку - и пусть забивает туда числа. Гы. А ник опять такой серьезный.


 
liver   (2005-06-01 13:05) [8]

raidan © а чё хрюкаешь-то


 
Alex Konshin ©   (2005-06-01 13:09) [9]

Орехи почуял


 
Digitman ©   (2005-06-01 13:16) [10]


> Alex Konshin ©   (01.06.05 13:09) [9]

))


 
raidan ©   (2005-06-01 13:23) [11]

>Alex Konshin ©   (01.06.05 13:09) [9]
Тогда уж желуди %)


 
Digitman ©   (2005-06-01 13:27) [12]

вношу на повестку длня предложение - торжественно и скоропостижно переименовать "Орешник" в "Желудёвник" и назначить raidan"а почетным завсегдатаем

в "Апельсинник" как-то рука не поворачивается написать)


 
Griffon   (2005-06-02 06:34) [13]

Digitman спасибо за посказку.
Как тогда можно обработать числа введенные в Мемо используя следующую конструкцию: function max(var b; mas):integer;


 
dmitry501 ©   (2005-06-02 06:45) [14]

Наверно так?

function max(var b: Integer; mas:Array of Integer) : integer;
 const    MinInt = Low(Integer);
 var i: Integer;
 begin
   result:=MinInt;
   for i := 0 to b do
    if mas[i] > result then
     result := mas[i];
 end;


 
Defunct ©   (2005-06-02 07:01) [15]

> dmitry501

Видимо уважаемый Griffon, будучи отвлеченным какими-то более важными проблемами, был не в состоянии точно переписать задание лабораторки. Чем ввел вас в заблуждение, и заставил написать неверный пример. imho в оригинале задания было не так:

> function max(var b; mas):integer;
а так:
function max(var b: mas):integer


 
dmitry501 ©   (2005-06-02 08:19) [16]

Defunct ©   (02.06.05 7:01) [15]
тогда, переменную b надо считать через High(mas)


 
Griffon   (2005-06-03 07:54) [17]

Defunct прав. Конструкция действительно выглядит так: function Max(var b: mas):integer
Как тогда считать через High(mas)


 
dmitry501 ©   (2005-06-03 12:20) [18]

function max(var b:mas) : integer;
const    MinInt = Low(Integer);
var i: Integer;
begin
  result:=MinInt;
  for i := Low(mas) to High(mas) do
   if mas[i] > result then
    result := mas[i];
end;


 
Defunct ©   (2005-06-04 02:59) [19]

> dmitry501
Разрешите поправить, ведь mas это некий тип, а не переменная:

type mas : array of integer; //

function max(var b:mas) : integer;
const    MinInt = Low(Integer);
var i: Integer;
begin
 result:=MinInt;
 for i := Low(b) to High(b) do
  if b[i] > result then
   result := b[i];
end;


 
Griffon   (2005-06-05 08:10) [20]

Спасибо Defunct. Подскажи аналогичный обработчик для функции Min.
И обработчик для следующей конструкции: Function Summa (var c:mas; m:integer):integer; для обработки массива введенного в TstringGrid


 
Defunct ©   (2005-06-05 18:16) [21]

> Griffon  
> Min, Summa

Это вы сделаете самостоятельно


 
Griffon   (2005-06-06 06:25) [22]

Defunct, если я бы знал как, то не задавал бы вопросы. Подскажи где можно посмотреть обработчики функций для таких конструкций.


 
dmitry501 ©   (2005-06-06 07:24) [23]

Griffon   (06.06.05 6:25) [22]
В учебнике.


 
Griffon   (2005-06-06 08:52) [24]

Если бы было в учебнике, я бы тогда не писал сюда. У немя учебник Delphi 6. Програмирование на Odject Pascal. Автор Н.Культин.


 
Anatoly Podgoretsky ©   (2005-06-06 08:56) [25]

Учебник для того чтобы учиться, решений курсовых задач там нет.


 
Griffon   (2005-06-06 10:15) [26]

Это не курсовая работа. Я выписал курс Програмирование в Delphi в МИФИ. В учебные материалы входит этот учебник и самоучитель на CD и 6 контрольных. Ни в учебнике, ни в самоучителе ничего не говориться об этих функциях, а контрольных они есть. До этого я вообще не занимался программированием так откуда я могу знать, как писать обработчики для функций в таких конструкциях.


 
dmitry501 ©   (2005-06-06 10:33) [27]

Griffon   (06.06.05 10:15) [26]
Ну вообще-то одна из задач обучения и состоит в том, что бы Вы могли научиться самостоятельно делать подобные задачи.


 
Griffon   (2005-06-06 13:30) [28]

С чего я должен научиться, если нет примеров с использованием таких конструкций.


 
Юрий Зотов ©   (2005-06-06 13:58) [29]

> Griffon   (06.06.05 13:30) [28]

> С чего я должен научиться, если нет примеров с использованием
> таких конструкций.

С головы, дружище. Исключительно с головы. Собственной.

Понимаете, изучение программирования (и не только его) требует не только читать, но еще и думать. Самостоятельно.
Иначе никакое чтение не поможет.

Берем пример [19] и переделываем его под функцию min.

function min(var b: mas): integer;
const MaxInt = High(Integer);
var i: Integer;
begin
 result := MaxInt;
 for i := Low(b) to High(b) do
   if b[i] < result then
     result := b[i];
end;

Теперь сравните эту функцию с [19], найдите отличия и скажите - неужели, имея перед глазами [19], так сложно было написать ее самому?


 
Griffon   (2005-06-07 05:16) [30]

Спасибо Юра, но эту функция я еще вчера сделал. Благодаря ответу Defunct [19].


 
Юрий Зотов ©   (2005-06-07 06:01) [31]

> Griffon   (07.06.05 05:16) [30]

Тогда в чем же проблема? Так держать - и все получится.


 
Griffon   (2005-06-09 05:16) [32]

Подкажите пожалуйста. Как обратиться из другой процедуры к массиву записанному в память [4] в первой процедуре и вызвать функцию Мах для его обработки, если конструкция записана в разделе Implementation, а то у меня что-то ничего не получается.


 
Просто Джо ©   (2005-06-09 05:19) [33]

Рекоммендую все-таки почитать об области видомости переменных в обычном учебнике по Паскалю. Это от силы 1-2 странички.


 
Юрий Зотов ©   (2005-06-09 07:56) [34]

> Griffon   (09.06.05 05:16) [32]

Надо объявить массив ЗА пределами всех процедур. Например, после слова implementation. А вообще - см. [33]. Учиться программировать без книг - это примерно как пытаться запрыгнуть на Луну без разбега. Сколько ни прыгай - толку не будет.


 
Griffon   (2005-06-09 10:11) [35]

Юра как я объявлю массив за пределами всех процедур, если я его ввел в Мемо, а затем записал в память в ходе продецуры следующим образом:

for i := 0 to Memo.Lines.Count - 1 do
mas[i] := IntToStr(Memo.Lines[i]);


 
Virgo_Style ©   (2005-06-09 10:25) [36]

Griffon   (09.06.05 10:11) [35]

Учебник есть, говоришь? Вот и читай... Иначе бесполезно все это...


 
ЮЮ ©   (2005-06-09 10:35) [37]

объяви его в private секции описания классы формы и выкини из локальных переменных


 
Defunct ©   (2005-06-10 01:43) [38]

Griffon   (09.06.05 10:11) [35]

С самого начала "карьеры" с Delphi не путайте типы с переменными и все будет хорошо. Типы объявляйте начиная с ключевой буквы T, а переменные без T.

У вас получается каша, в одном примере mas это тип, а в другом это уже переменная. Если вы тип массива объявите как TMas, а переменную с которой будут работать все отстальные процедуры/функции как mas, то проблемы сразу отпадут.

Наглядный пример:


Implementation

...

Type
  TMas = array of integer; // <--- Объявляем тип

var
  Mas : TMas;  // Объявляем глобальную переменную
               // За пределами всех функций

function max(var b: TMas) : integer;
const    
  MinInt = Low(Integer);
var
  i: Integer;
begin
  result:=MinInt;
  for i := Low(b) to High(b) do
     if b[i] > result then
        result := b[i];
end;

// И где-то в коде передаем нашей функции массив:
...
  <Какая-то переменная> := Max( Mas );
...


Надеюсь, я правильно понял Вашу проблему.


 
Griffon   (2005-06-10 13:10) [39]

Defunct БОЛЬШОЕ СПАСИБО!
Подкажи хорошую книгу по Delphi для начинающих.



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.032 c
3-1117369737
Erich
2005-05-29 16:28
2005.07.11
Ошибка при выполнении SQL запроса.


14-1118379504
boriskb
2005-06-10 08:58
2005.07.11
Есть желающие прокоментировать?


3-1117609080
Ярослав
2005-06-01 10:58
2005.07.11
ошибка Refresh ADODataSet


1-1118481620
4ubaka
2005-06-11 13:20
2005.07.11
Поиск email в тексте TMemo


6-1113145766
W
2005-04-10 19:09
2005.07.11
Как в Delphi быстро переключить прокси??