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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2012, 23:58   #1
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию Задача - Если в номере билета лотереи содержится цифра 7, тогда билет выиграшный. Проверить номер на выигрыш

Доброго времени суток,в колледже задали задачу: В лотерее используется 10000 билетов, каждый билет номер которого содержит 7-выиграшный. Вам дан номер билета,определить является ли он выиграшным.
Проходили тему с операциями mod и div,так думаю что нужно эту задачу решить с помощь их. Код написал но выдает ошибку, в чем ошибка?
Код:
var
a,b,c,d,e:integer;
 begin
 a:=strtoint(Edit1.Text);
 if (b:=10 mod a=3) or (c:=100 mod a=30) or (d:=1000 mod a=300) or (e:=10000 mod a=3000) then
 Showmessage('Вы выиграли!') else
 Showmessage('Вы проиграли!');


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

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2012 в 00:47.
qpuTuJlb вне форума Ответить с цитированием
Старый 07.11.2012, 00:09   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если это Дельфи, то там, насколько мне известно, нельзя делать присвоение в условном операторе, как в Си.
Код:
  n := strtoint(Edit1.Text);
  while n <> 0 do
  begin
    if n mod 10 = 7 then
    begin
      showmessage('Winner');
      exit;
    end;
    n := n div 10;
  end;
  showmessage('Loser');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 07.11.2012 в 00:21.
BDA вне форума Ответить с цитированием
Старый 07.11.2012, 00:42   #3
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

спасибо,а как правильно вписать чтобы выводило сообщение о том что если вводите число больше 10000 то писало "Такого билета нет"
qpuTuJlb вне форума Ответить с цитированием
Старый 07.11.2012, 01:14   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
n := strtoint(Edit1.Text);
if (n < 0) or (n > 10000) then
begin
  showmessage('Ticket with this number does not exist');
  exit;
end;
...{остальной код}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.11.2012, 20:04   #5
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

Код:
var
a:integer;
begin
a:=strtoint(Edit1.Text);
if (a < 0) or (a > 10000) then
begin
showmessage('Такого билета не существует!');
exit;
end;
while a<>0 do
begin
if a mod 10=7 then
begin
showmessage('Вы выиграли!');
exit;
end;
a:=a div 10;
end;
showmessage('Вы проиграли!');

end;
Вообще не реагирует на кол-во билетов,и если ввести очень большое число то программа выдаст ошибку
qpuTuJlb вне форума Ответить с цитированием
Старый 07.11.2012, 20:29   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Странно, у меня работает.
Этот код написан в событии кнопки?
Кстати, вводимое в едит число должно влезать в тип integer, то есть ОЧЕНЬ большие числа нужно по-другому отсекать (вот так отсекутся все недопустимые значения: a:=strtointdef(Edit1.Text,-1); ).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.11.2012, 20:40   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Попробуйте изменить тип переменной a, например:
Код:
var a : longint;
Теперь можно вводить и бОльшие числа.
Для ограничения количества введенных цифр следует определять длину введённой строки, например:
Код:
if Length(Edit1.text) > 5 then
begin
   Edit1.text := '';
   showmessage('Вводите не более 5-и цифр!');
   exit;
end;
И: a - это ведь номер билета, а не количество билетов.
Т.е., когда вводится корректный номер (выигрышный), то нет нужного сообщения?
Попробуйте добавить скобок:
Код:
if ((a < 0) or (a > 10000)) then
begin
showmessage('Такого билета не существует!');
exit;
end;
Вроде должна ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 08.11.2012, 21:19   #8
qpuTuJlb
Пользователь
 
Аватар для qpuTuJlb
 
Регистрация: 31.03.2012
Сообщений: 67
По умолчанию

спасибо,что-то не верно с указанием путя открытия и поэтому ошибку с начало выбивает.
qpuTuJlb вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7 и база на InterBase 1.5 - проверить билет по базам на выигрышность delicious777 Помощь студентам 5 05.10.2012 09:39
По введенному номеру билета определить, является ли билет счастливым. veter_s_morya Паскаль, Turbo Pascal, PascalABC.NET 26 14.06.2011 20:39
если число содержит цифру, тогда... Mitde Общие вопросы C/C++ 9 02.04.2011 23:34
Задача в Exel (стоимость билета в зависимости от расстояния) Phill Помощь студентам 9 30.11.2010 00:20
проверить, содержится ли строка в массиве aurora_87 Общие вопросы C/C++ 6 28.12.2008 01:25