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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2012, 22:50   #1
geranton
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 8
По умолчанию Непонятки с задачей (Delphi)

Здравствуйте уважаемые форумчане.
В универе мне задали сделать программу, которая будет рассчитывать количество нужных ингредиентов на различное печенье. То есть в программе должно быть несколько наименований печенья, после ввода количества порций каждого из печений должно рассчитывается количество ингредиентов для каждого печенья.(расчеты там очень простые проблема возникла в другом) Я набросал на бумаге, как должна выглядеть программа, но из-за отсутствия хорошего фотоаппарата, там практически ничего не видно.
http://php-studia.ru/?v=imag0106.jpg
Поэтому постараюсь объяснить так. Сверху на фотографии видно 4 квадрата, а рядом с ними текст и прямоугольник. Так вот квадраты это картинки, текст это наименование, а прямоугольники это, то куда вводить текст. Ну с этим все понятно нужно использовать Label и Edit.
А дальше идет все сложнее. После нажатия на кнопку расчет ингредиентов для печенья где введено кол-во порций должно рассчитаться кол-во нужных ингредиентов, и вывестись ниже, но если в форму Edit ничего не введено, то ничего не должно рассчитываться и ничего не должно выводится. Например, в программе есть Песочное печенье, Овсяное, Кокосовое, и Печенье с орехами и мне нужно 5 порций песочного и 3 овсяного. В таком случае ниже должно вывестись:
Песочное печенье
Список ингредиентов
Овсяное печенье
Список ингредиентов
Но если я укажу 4 порчий песочного и 3 кокосового. То результат должен выглядеть так:
Песочное печенье
Список ингредиентов
Кокосовое печенье
Список ингредиентов
С помощью if (условие) else (действия) такого выполнить я думаю не получится. А собственно я по другому и неумею)
Может быть дадите несколько советов, или может быть у вас есть проекты чем-то похожие на это.
geranton вне форума Ответить с цитированием
Старый 23.03.2012, 23:24   #2
weech
Пользователь
 
Аватар для weech
 
Регистрация: 16.11.2011
Сообщений: 91
По умолчанию

В обработчике нажатия можно сделать примерно так:
Код:
if Edit1.Text<>'' then
рассчитать список
Соответственно, чтобы проверить все эдиты на введенную информацию, предлагаю вам организовать из них массив и в цикле использовать вышеописанный алгоритм.

Последний раз редактировалось weech; 23.03.2012 в 23:40.
weech вне форума Ответить с цитированием
Старый 23.03.2012, 23:50   #3
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

geranton, могу немного поконсультировать по icq (314-206-671)
безвозмездно, если без запар)
GreenWizard вне форума Ответить с цитированием
Старый 24.03.2012, 01:49   #4
geranton
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от weech Посмотреть сообщение
Соответственно, чтобы проверить все эдиты на введенную информацию, предлагаю вам организовать из них массив и в цикле использовать вышеописанный алгоритм.
Что-то я не совсем Вас понял. Можно пример?
geranton вне форума Ответить с цитированием
Старый 24.03.2012, 01:49   #5
geranton
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
geranton, могу немного поконсультировать по icq (314-206-671)
безвозмездно, если без запар)
Спасибо, буду обращатся)
geranton вне форума Ответить с цитированием
Старый 24.03.2012, 09:57   #6
weech
Пользователь
 
Аватар для weech
 
Регистрация: 16.11.2011
Сообщений: 91
По умолчанию

Сначала инициализируете массив:
Код:
Edit: array [1..n] of TEdit;
Затем в обработчике создания формы заполняете:
Код:
Edit[1]:=Edit1;
...
И в OnClick начинаете рассчитывать ингридиенты только для тех эдитов, в которых что-либо написано:
Код:
for i:=1 to n do
    if Edit[i]<>'' then
         {А сюда нужно вставить либо процедуру нахождения кол-ва ингридиентов, либо в ручную рассчитывать.}
weech вне форума Ответить с цитированием
Старый 24.03.2012, 10:22   #7
geranton
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от weech Посмотреть сообщение
Сначала инициализируете массив:
Код:
Edit: array [1..n] of TEdit;
Затем в обработчике создания формы заполняете:
Код:
Edit[1]:=Edit1;
...
Если я привльно вас понял то
Код:
Edit: array [1..n] of TEdit;
задается один раз, а
Код:
Edit[1]:=Edit1;
...
для каждого присутствующего Edit, я не совсем понимаю значение квадратных скобок в данном случае, и нужно ли менять цифру в них в сообтветствии номеру Edit
geranton вне форума Ответить с цитированием
Старый 24.03.2012, 10:36   #8
weech
Пользователь
 
Аватар для weech
 
Регистрация: 16.11.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от geranton Посмотреть сообщение
Если я привльно вас понял то
Код:
Edit: array [1..n] of TEdit;
задается один раз, а
Код:
Edit[1]:=Edit1;
...
для каждого присутствующего Edit, я не совсем понимаю значение квадратных скобок в данном случае, и нужно ли менять цифру в них в сообтветствии номеру Edit
Квадратные скобки означают обращение к соответствующему элементу массива; да, цифру менять нужно, это делается для того, чтобы можно было в цикле обращаться к каждому отдельному эдиту и проверять его на наличие введенного текста.
weech вне форума Ответить с цитированием
Старый 24.03.2012, 10:43   #9
geranton
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 8
По умолчанию

Можно сказать не начал ещ ничего делать,а уже ошибки.
Код:
Edit: array [1..n] of TEdit;
число n это число которое задается в Edit?
Исправте мои ощибки пожалуйста
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Math,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   x,y,z,c,v,b:real;

implementation
       const
    Edit[1]:=Edit1;
{$R *.dfm}
           var
 Edit: array [1..n] of TEdit;
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
for i:=1 to n do
    if Edit[1]<>'' then
    begin
    z:=x*5;
    c:=x*2;
    Label1:='Ïå÷åíüå ïåñî÷íîå'+#13+ 'Ìóêà' + z
    +#13+ 'Ñàõàð' + c;
    end;
     if Edit[2]<>'' then
     begin
    v:=x*4;
    b:=x*3;
    Label1:='Ïå÷åíüå îâñÿíîå'+#13+ 'Ìóêà' + v
    +#13+ 'Ñàõàð' + b;
    end;



end;
geranton вне форума Ответить с цитированием
Старый 24.03.2012, 10:59   #10
weech
Пользователь
 
Аватар для weech
 
Регистрация: 16.11.2011
Сообщений: 91
По умолчанию

Вот, гляньте:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Math,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   x,y,z,c,v,b:real;

implementation
       const
    n=2; //это количество ваших эдитов, исправьте, если нужно больше
{$R *.dfm}
           var
array [1..n] of TEdit;

procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
for i:=1 to n do
    if Edit[i]<>'' then
    begin
    z:=x*5;
    c:=x*2;
    Label1:='Ia?aiua iani?iia'+#13+ 'Ioea' + z
    +#13+ 'Naoa?' + c;
    end;
end;
weech вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачей в Delphi AnToHa-KiLL Помощь студентам 1 07.06.2009 10:32
Проблема с задачей в Delphi миха18 Помощь студентам 1 20.05.2009 06:36
Помогите с задачей по Delphi Asterix Фриланс 4 24.04.2008 20:11
помогите с задачей на Delphi Soilwork Помощь студентам 7 23.04.2008 19:07
помогите с задачей на Delphi lyonya0111 Помощь студентам 11 22.04.2008 17:35