![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
renesko1 |
![]()
Сообщение
#1
|
![]() поиск ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: nir Репутация: ![]() ![]() ![]() |
Автобусные билеты в рулоне пронумерованы от 000001 до 999999. Составить программу, выводящую на экран количество и номера (в несколько столбиков) всех счастливых билетов в некотором диапазоне, организовав запрос начального и конечного номера билета диапазона.
Примечание: Счастливым считать тот билет, у которого сумма первых трех цифр равна сумме трех последних я изменил ввывод на экран на вывод в текстовой файл (так удобней ,по мойму, анализировать) program lukyticket ;
uses
crt ;
{---------------processing a and b--------------------------------}
function processing (s : integer ) : byte ;
var
unity, ten, hunderd : byte ;
hundiv, tendiv : integer ;
begin
hunderd := trunc( s / 100 ) ;
hundiv := hunderd * 100 ;
ten := trunc( (s - hundiv) / 10 ) ;
tendiv := 10 * ten ;
unity := trunc(( s - hundiv - tendiv) ) ;
s := hunderd + ten + unity ;
end ;
{-----------------------------------------------------------------}
procedure lukyticket ;
const
str1 = 'ticket number : ' ;
str2 = ' : ' ;
razdel = 1000 ;
n = 2 ;
var
i, start, finisch : longint ;
a, b : integer ;
keyrec : longint ;
output : text ;
nolstr : string [ n ] ;
begin
write('vvedite diapason ot --> '); readln(start);
write('do --> '); readln(finisch);
a := 0 ;
b := 0 ;
keyrec := 0 ;
nolstr := '' ;
assign(output,'output.txt');
rewrite(output) ;
for i := start to finisch do
begin
a := trunc( i / razdel ) ;
b := i - a * razdel ;
if processing(a) = processing(b) then
begin
keyrec := keyrec + 1 ;
if ( i > 1000 ) and ( i < 10000) then nolstr := '00' ;
if ( i > 10000 ) and ( i < 100000) then nolstr := '0' ;
if i > 100000 then nolstr := '' ;
writeln(output, str1, keyrec, str2, nolstr, i) ;
end ;
end ;
writeln(output,'--------itog----------------------------}');
writeln(output,'itogo : vsego colvo luckitickets :',keyrec);
close(output);
end ;
{------------------------main programm---------------------}
BEGIN
lukyticket ;
END .
1 вопрос правильность | 2 вопрос можно ли улучшить некотрые строки кардинально не меняя код | ? 3 как вывести в несколько столбцов | вот сама программа --> ![]() забыл дописать прверку на start <= 1000 то ... заранее спасибо. Сообщение отредактировано: renesko1 - 17.02.2008 0:13 -------------------- typedef void Śūnyatā ;
|
![]() ![]() |
![]() |
Текстовая версия | 7.08.2025 3:48 |