Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.059 c
3-1117110259
alex_***
2005-05-26 16:24
2005.07.11
MS SQL - число в hex виде


1-1118590976
iskatel
2005-06-12 19:42
2005.07.11
памяти в память


14-1118253491
redlord
2005-06-08 21:58
2005.07.11
teamspeak2 живой базар


14-1118393080
Empleado
2005-06-10 12:44
2005.07.11
Люблю шведов ...


14-1118403954
Суслик
2005-06-10 15:45
2005.07.11
Посоветуйте алгоритм репликации





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский