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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2008, 18:26   #1
BzDoN
 
Аватар для BzDoN
 
Регистрация: 29.12.2008
Сообщений: 9
По умолчанию Задача "Счастливый билет" (Turbo Pascal) - трубуется помощь

Вот сама задача:

Код:
USES CRT;
VAR m1,m2,n,n1,n2,n3,n4,n5,n6,s1,s2:LongInt;
BEGIN
ClrScr;
   WriteLn('Vvedite nomer bileta: ');
   ReadLn(n);
   m1:=n div 1000;
    n1:=m1 div 100;
    n2:=m1 mod 10;
    n3:=(m1-n1*100-n2) div 10;
   s1:=n1+n2+n3;
   m2:=n mod 1000;
    n4:=m2 div 100;
    n5:=m2 mod 10;
    n6:=(m2-n4*100-n5) div 10;
   s2:=n4+n5+n6;
   if s1=s2 then WriteLn('Bilet schaslivyi')
                 else WriteLn('Bilet ne schaslivyi');
ReadLn
END.
Здесь:
n - номер билета,
m1 и m2 - первые и последние 3 числа соответственно,
n1, n2, n3, n4, n5, n6 - 1е, 2е, 3е, 4е, 5е, 6е числа билета соответсвенно,
s1 и s2 - сумма первых и последних 3 чисел соответственно.

Помогите, пожалуйста, отредактировать эту программу, чтобы она подсчитала колличество счастливых билетов (вроде около 52 тысяч).
Алгоритм нахождения суммы чисел оставить таким же! Предел от 000000 до 999999 (т.е. чтобы работало только для 6-значных чисел).

P.S. Счастливый билет - сумма первых трёх чисел равно сумме трёх последних (в задаче s1=s2).

Спасибо за ранее!!!

Последний раз редактировалось BzDoN; 29.12.2008 в 18:51.
BzDoN вне форума Ответить с цитированием
Старый 29.12.2008, 18:42   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
var n,n1,n2,i:Longint;
begin
 readln(n);n1:=0;n2:=0;
 for i:=1 to 6 do
  begin
   if i<=3 then n1:=n1+n mod 10
       else n2:=n2+ n mod 10;
   n:=n div 10;
  end;
  if n1=n2 then writeln('Happiness ')
     else writeln('Usual');
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 29.12.2008, 18:59   #3
BzDoN
 
Аватар для BzDoN
 
Регистрация: 29.12.2008
Сообщений: 9
По умолчанию

Спс...
А как вывести колличество счастливых билетов от 000000 до 999999??
BzDoN вне форума Ответить с цитированием
Старый 29.12.2008, 19:08   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
var n,n1,n2,i,j,count:Longint;
    s:string;
begin
count:=0;
for j:=0 to 999999 do
begin
 n:=j;
 n1:=0;n2:=0;
 for i:=1 to 6 do
  begin
   if i<=3 then n1:=n1+n mod 10
       else n2:=n2+ n mod 10;
   n:=n div 10;
  end;
  if (n1=n2) then begin
                      Str(j,s);
                      for i:=1 to 6-length(s) do
                       s:='0'+s;
                      writeln('Happiness ',s);
                      count:=count+1;
                     end;
end;
writeln('Всего ', count);
end.
Но чисел будет очень много
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 29.12.2008 в 19:59.
alex_fcsm вне форума Ответить с цитированием
Старый 29.12.2008, 19:19   #5
BzDoN
 
Аватар для BzDoN
 
Регистрация: 29.12.2008
Сообщений: 9
По умолчанию

Вот теперь то что надо Спасибо!!!
Ток.. эт самое.... прога печатает номера счастливых билетов. А как сделать чтобы после этого в конце ещё написал сколько их всего??
BzDoN вне форума Ответить с цитированием
Старый 29.12.2008, 19:28   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Смотри правку выше
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 29.12.2008, 19:52   #7
BzDoN
 
Аватар для BzDoN
 
Регистрация: 29.12.2008
Сообщений: 9
По умолчанию

Спс!!! Теперь всё работает!!!
Вот только я заметил, что когда программа по порядку отображает счастливые билеты, то есть не только 6-значные числа (например, 52700). Как я понял, Pascal перед числом "52700" опускает число "0".
А можно как нибудь этот "0" поставить?
BzDoN вне форума Ответить с цитированием
Старый 29.12.2008, 19:55   #8
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Смотри правку
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 29.12.2008 в 19:59.
alex_fcsm вне форума Ответить с цитированием
Старый 29.12.2008, 20:05   #9
BzDoN
 
Аватар для BzDoN
 
Регистрация: 29.12.2008
Сообщений: 9
По умолчанию

Я имел в виду не исключить эти не"6"значные числа, а просто при выводе их на экран ставить "0". (вот так: из 52700 в 052700; 30003 в 030003 и т.д.).

Не пишет эти нули... также и остаётся - без нулей

Последний раз редактировалось Stilet; 15.12.2009 в 10:15.
BzDoN вне форума Ответить с цитированием
Старый 30.12.2008, 07:17   #10
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Смотри пост №4
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Домино" на Turbo Pascal'е. Очень нужно! DruiD88 Помощь студентам 15 17.04.2010 13:57
Очень нужна помощь по Turbo Pascal...Не могу составить програму,по теме:"Процедуры и файлы"...( Zara Помощь студентам 2 02.12.2008 18:23
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
"Транспортная задача", "Поиск решения" Perroman Microsoft Office Excel 3 12.12.2007 17:12