Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Задачи на Delphi
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 ]
Модераторы: paradise, KMA
  

Opa


Новичок

Помогите реализовать в Delphi обучение нейронов детектированию границы белое и черное!Пожалуйста!!!!

Всего сообщений: 1 | Присоединился: декабрь 2007 | Отправлено: 17 дек. 2007 19:28 | IP
KMA



Долгожитель

Так чтобы по пятьсот раз не дублировать сообщения, предлагаю писать все только сюда. Итак это главный форум по задачам Дельфи.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 17 дек. 2007 20:39 | IP
Kollisto


Новичок

Здравствуйте!!!
Не могли бы Вы помочь мне помочь реализовать эту процедуру вставки элемента в массив на Delphi?
Procedure ElInsert(var X:TArray; var n:Integer;
                 Y:Real; k:Integer);
Var
i:Integer;
Begin
For i:=n downto k Do
  X[i+1]:=X[ i ];
X[k]:=Y;
n:=n+1;    
End;



(Сообщение отредактировал KMA 21 янв. 2008 21:35)

Всего сообщений: 6 | Присоединился: январь 2008 | Отправлено: 21 янв. 2008 17:13 | IP
KMA



Долгожитель

У тебя все верно написано! Что тебе именно не понятно?

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 21 янв. 2008 21:36 | IP
Kollisto


Новичок

Непонятно как все это написать в Delphi, я только изучаю этот язык.

Всего сообщений: 6 | Присоединился: январь 2008 | Отправлено: 22 янв. 2008 21:06 | IP
KMA



Долгожитель

Начнем пожалуй с разъяснения, что такое Delphi. Это IDE (Integrated Development Envirioment может ошибся), т. е. интегрированния среда разработки, в основе которой лежит язык Object Pascal. Еще есть Kylix (это для систем *Unix), а так же Lazarus (она кроссплатформенная). Т. е. если ты знаешь язык Pascal, то проблем с изучением у тебя не должно быть. Все дело только в изучении компонентов.

Компонент представляет собой уже написанный дядюшкой Борландом объект, который обладает определенными свойсвами и методами.

Что именно тебе не понятно? Не понятно как вводить массив? Или может быть как его выводить? Конкретизируй, пожалуйста, и тогда я тебе смогу помочь, а если это возможно, то озвучь полную задачу, и тогда я тебе ее помогу решить.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 23 янв. 2008 15:23 | IP
Kollisto


Новичок

Спасибо Вам за пояснение!:-)
Да, я не могу не ввести массив, не вывести:-(  Я вот просто решаю самостоятельно задачки, но одной трудно во всем разобраться, если сможете помочь, буду очень признательна! И спасибо, что вообще ответили!:-)
Задача:"Существует массив, выражающий последовательность элементов X[1..n]. Необходимо в последовательность вставить число y в позицию k. При этом элементы с номерами от k до n должны быть перемещены на один индекс ближе к концу последовательности".

Всего сообщений: 6 | Присоединился: январь 2008 | Отправлено: 23 янв. 2008 18:08 | IP
KMA



Долгожитель

Kollisto, сейчас я тебе объясню как нужно писать программы на Delphi.

Первое что ты видишь перед собой это форма (TForm) - твоя рабочая область, куда ты размещаешь все остальные интерактивные элементы. Итак, у тебя обычный массив... Поэтому средвство для его ввода может служить компонент Edit (TEdit) или StringGrid. Второй компонент вообще больш предназначен для работы с матрицами (массива 2 порядка), поэтому его мы пока опустим, если интересно будет узнать, то на нем я остановлюсь подробнее.

Итак, помещаем на форму компонент Edit. Давай сразу измененем его имя на arrayEdit (свойство Name, первоначально имя будет Edit1). Зачем мы изменили имя? Только для удобства, вообще элементам своей программы следует давать понятные имена, чтобы не только ты знала как она работает, но и другим давала возможность легко разобраться со своей программой. Над Editом помести компоента метак (Label, TLabel), и измени его свойство Caption (заголовок) на "Введите массив из 6 чисел". Таким образом пользователь будет знать, что ему нужно вводить в поле arrayEdit. Да, еще не забудь очистить у элемента arrayEdit свойство Text, дабы не было никаких лишних записей и оно было бы пустым. Итак ввод данных ты организовала.

Выводить конечный массив мы будем пока через компонент Label, хотя сойдет на самом деле любой. Итак, помести его под arrayEdit, дай ему имя (Name)  resultLabel, и очисти свойство Caption (он будет пустым). Итак, ввывод мы тоже организовали.

Теперь основной элемент, который будет обрабатывать все. Как известно система реагирует на что-то, когда человек нажал кнопку (тот же самый форум отправит сообщение, когда ты нажмешь на кнопку "Отправить"), поэтому ее мы тоже расположем на форме TButton. Измени ее имя на startButton, а так же свойство Caption на "Вставить".

С дизайном закончили, теперь давай приступим к кодированию.

Нажми клавишу F12 и ты перейдешь к листингу программы. Там описываются переменные, типы, константы, используемые модули и сам текст программы. Итак, после раздела uses вставь строчку:

Code Sample:
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
const // раздел констант
   n=7;


Т. е. n у нас теперь есть размер массива. Теперь объявим тип, для этого в разделе Type до описания формы, вставь:
Code Sample:
type 
 // опишем тип массива
 TArray = array [1..n] of integer;
 TForm1 = class(TForm)
   Label1: TLabel;
   arrayEdit: TEdit;
   ...


Таким образом ты описала тип массива (я думаю, ты уже с этим знакома ) Обрати внимание он у меня целочисленный.

Все основные приготовления закончены. Итак, давай опять перейдем на форму выделим startButton и щелкнем по ней два раза (это аналогично выбору действия на вкладке Events события onClick), т. е. если говорить совсем примитивно, ты таким образом сказала, "что нужно сделать программе, если нажмут на кнопку "Вставить"". Итак, здесь будет основной код программы:
Code Sample:
procedure TForm1.startButtonClick(Sender: TObject); 
var i: byte;
   _mas: TArray;
begin
    // запишем в _mas элементы из arrayEdit
    _mas:=getArrayFromStr(arrayEdit.Text, n);
   
    // обрабатываем массив _mas
    ...
   
    // выведем массив _mas
    for i:=1 to n do
     resultLabel.Caption:=IntToStr (_mas [ i ]) + ' ';
end;



Теперь я объясню что я написал. Смотри, первая функция которая получает из строки значения массива. Она написана мной, и подойдет для любого числа элементов массива, вот ее описание, ты должна это добавить ДО процедуры обработчика кнопки:

Code Sample:
// функция возвращает массив из строки source,  
//заданной длины length

function getArrayFromStr (source: string; const _length: integer): TArray;
var
  _arr: TArray;
  i, p: byte;
begin
    i:=0; // cчетчик количества элементов
    source:=source+' ';
    while (i<>(_length)) do
     begin
      p:=1; // начальный индекс строки
      while source[p]<>' ' do  // ищем позицию разделителя
       inc (p);
      dec(p);
      _arr[ i ]:=StrToInt(copy(source, 1, p));
      inc(i);

      delete(source, 1, p); // удалим число вместе с разделителем

      //удаляем лишние пробелы перед следующим числом
      p:=1;
      while source[p]=' ' do
       inc(p);
      dec(p);
      delete (source, 1, p);
     end;
     getArrayFromStr:=_arr // в итоге возвратим массив
end;



Тебе не надо разбираться с этим кодом (если у тебя малый опыт, он может показаться немного сложным, но я оставил комментарии). Суть его вот в чем. У тебя есть строка (входное параметр source) и количество элементов, которые надо получить, т. е. дана скажем строка:
15 25 14    45 74 87
То эта процедура считает все значения разделенные через пробел и запишет первые _length в массив типа TArray, после чего она его вернет.

Почему строка??? Сейчас объясню. Смотри вот если поле у arrayEdit.Text, оно хранит значение, которое вбили в это поле, т. е. ты вводишь строчку в Edit, а программа может узнать, что ты там ввела при помощи обращения Edit.Text. Дак вот это поле по умолчанию текстовое, т. е. типа string. Как ты знаешь, в паскале нельзя путать типы. у тебя целочисленный массив, поэтому необходимо использовать функции привидения типов. Сейчас я из перечислю:

IntToStr (source: int64): string; Переводит из целочисленного значения указанного в source в строковое string, отсюда и название "integer to string".
StrToInt (source: string): int64; то же самое, но наоборот, из строки в целочисленное значение.

Теперь думаю стало понятно. Еще раз обращаю внимание как дожны быть описаны процедуры, смотри:

Code Sample:
function getArrayFromStr (source: string; const _length: integer): TArray; 
begin
     ...
end;

...

procedure TForm1.startButtonClick(Sender: TObject);
begin
     ...
end;



вот теперь вроде все. Почему именно такое расположение? Потому что испозуема процедура должна быть описана раньше, чем к ней обращаются (это правило действует только для процедур, а не для описанных методов).

Вот этого материала дожно хватить, чтобы ты сделала программу. Вопросы будут, задавай. Код работающий, все тестировалось.


(Сообщение отредактировал KMA 24 янв. 2008 12:01)

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 24 янв. 2008 11:58 | IP
Kollisto


Новичок

Уважаемый, KMA, СПАСИБО ВАМ ОГРОМНЕЙШЕЕ!!!:-)
Я Вам очень благодарна. Спасибо, что все разъяснили, буду теперь разбираться.
Вы делаете доброе дело, спасибо Вам за это, УДАЧИ Вам и всего хорошего!!!!!!!!!!!!!!!!:-)

Всего сообщений: 6 | Присоединился: январь 2008 | Отправлено: 24 янв. 2008 20:28 | IP
Nonse



Новичок

Здраствуйте ! можете помочь с данной задачей плз.
Дана последовательность ,содержащая от 1 до 30 слов ,в каждом из которых от 1 до 5 прописных (больших) латинских букв :
между соседними словами - не менее одного пробела ,после последнего слова -точка.
Указать слова ,в которых есть повторяющиеся символы.
(Данная лаба была по теме "Обработки строк ")

Заранее спасибо


(Сообщение отредактировал Nonse 5 апр. 2008 14:59)

Всего сообщений: 2 | Присоединился: апрель 2008 | Отправлено: 5 апр. 2008 14:57 | IP

Отправка ответа:
Имя пользователя   Вы зарегистрировались?
Пароль   Забыли пароль?
Сообщение

Использование HTML запрещено

Использование IkonCode разрешено

Смайлики разрешены

Опции отправки

Добавить подпись?
Получать ответы по e-mail?
Разрешить смайлики в этом сообщении?
Просмотреть сообщение перед отправкой? Да   Нет
 

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 ]

Форум работает на скрипте © Ikonboard.com