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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2013, 20:50   #1
xbron
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 27
По умолчанию Работала, но перестало...

Доброго времени суток! У меня проблема с вводимым значением, при вводе от 2000 и выше, он пишет мне то, что нужно, а в остальном, то есть при вводе в указанных диапазонах, он не хочет. Главное работало, я просто тип переменной "n" поставил double, проверил что-то не получилось, поставил всё на место,а после не работает...

Код:
procedure TForm3.LabeledEdit1Change(Sender: TObject);
var n,procent:real;
begin
n:=strtofloat(labelededit1.Text);

if n<=700 then
begin
procent:=(5*n)/100;
labelededit1.EditLabel.Caption:=floattostr(n-procent)+' Рублей';
end;
if (n<=1200) and (n>=700) then
begin
procent:=(5*n)/100;
labelededit1.EditLabel.Caption:=floattostr(n-procent)+' Рублей';
end;
if (n<=2000) and (n>=1200) then
begin
procent:=(5*n)/100;
labelededit1.EditLabel.Caption:=floattostr(n-procent)+' Ðóáëåé';
end;
if n>=2000 then
begin
procent:=(5*n)/100;
labelededit1.EditLabel.Caption:=floattostr(n-procent)+' Рублей';
end
else
labelededit1.EditLabel.Caption:='Введите сумму';
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 19.03.2013 в 22:40.
xbron вне форума Ответить с цитированием
Старый 20.03.2013, 06:42   #2
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию

А зачем проверять, в каком диапазоне лежит n ?
В любом случае же выполняется одна и та же операция
Код:
procent:=(5*n)/100;
danil123 вне форума Ответить с цитированием
Старый 20.03.2013, 07:56   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Как запрограммировали, так и работает
Код:
n берём из labelededit1;

если n до 700 то
  делаем А

если n от 700 до 1200 то
  делаем А

если n от 1200 до 2000 то 
  делаем А

если n от 2000 то 
  делаем А
иначе
  делаем Б
Может так?
Код:
n берём из labelededit1;

если n до 700 то
  делаем А
иначе
  если n до 1200 то
    делаем Б
  иначе
    если n до 2000 то 
      делаем В
    иначе
      делаем Г

Последний раз редактировалось Sibedir; 20.03.2013 в 08:02.
Sibedir вне форума Ответить с цитированием
Старый 20.03.2013, 09:47   #4
xbron
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 27
По умолчанию

Цитата:
Сообщение от danil123 Посмотреть сообщение
А зачем проверять, в каком диапазоне лежит n ?
В любом случае же выполняется одна и та же операция
Код:
procent:=(5*n)/100;
Для того, что у меня задача такова, это связанно с акцией, при сумме до 700 рублей - 5%, до 1200 - 10%, извините там опечатка в процентах, где 5 там должны быть проценты, ну так вот, суть не меняет всё так же при вводе суммы между этими диапазонами, программа не высчитывает процент и не выводит сумму, при вводе до 2000 выводит только - "Введите сумму".
xbron вне форума Ответить с цитированием
Старый 20.03.2013, 09:51   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
суть не меняет
Поменяет, если поймете то, что Sibedir вам подсказывает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.03.2013, 09:51   #6
xbron
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Как запрограммировали, так и работает
Код:
n берём из labelededit1;

если n до 700 то
  делаем А

если n от 700 до 1200 то
  делаем А

если n от 1200 до 2000 то 
  делаем А

если n от 2000 то 
  делаем А
иначе
  делаем Б
Может так?
Код:
n берём из labelededit1;

если n до 700 то
  делаем А
иначе
  если n до 1200 то
    делаем Б
  иначе
    если n до 2000 то 
      делаем В
    иначе
      делаем Г
Сделал, заработало. Извините, я просто новичок в дельфи, но я точно знал, что в паскале такое не уместно, поскольку в паскале - если ... то ...ИНАЧЕ - это все остальные случаи, не принадлежащие предыдущему условию...
З.Ы. Возможно я ошибаюсь, но так нас учили )
xbron вне форума Ответить с цитированием
Старый 20.03.2013, 10:49   #7
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от xbron Посмотреть сообщение
Извините, я просто новичок в дельфи, но я точно знал, что в паскале такое не уместно, поскольку в паскале - если ... то ...ИНАЧЕ - это все остальные случаи, не принадлежащие предыдущему условию...
В Паскале все точно так же.
В Вашем коде нет ветки ИНАЧЕ. (в отличие от кода Sibedir)
Поэтому он работает так, как был Вами написан, а не так, как Вы хотели написать.
Цитата:
З.Ы. Возможно я ошибаюсь, но так нас учили )
Учили Вас правильно, но плохо.
s-andriano вне форума Ответить с цитированием
Старый 20.03.2013, 19:31   #8
xbron
Пользователь
 
Регистрация: 27.04.2012
Сообщений: 27
По умолчанию

Получается как и в дельфи, в паскале можно употреблять множество иначе?
xbron вне форума Ответить с цитированием
Старый 20.03.2013, 22:43   #9
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

На один if не более одного else.

Но в Вашем случае удобнее будет case.
s-andriano вне форума Ответить с цитированием
Старый 21.03.2013, 13:06   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

не
Код:
var n:real;
Sibedir вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать программу, чтобы работала через одну процедуру.. Proskurina Помощь студентам 6 23.11.2012 23:36
Как сделать чтобы бд работала без установки Delphi Ol'ga БД в Delphi 7 05.06.2012 16:22
как сделать что бы работала быстрее luffi Помощь студентам 3 10.04.2012 23:53
Как сделать чтоб программа работала в фоновом режиме nik-maximal Общие вопросы Delphi 3 25.05.2011 20:14
Как чтобы программа работала на другом компьютере Olaf C++ Builder 2 08.04.2010 12:09