IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> задача про рулон билетов..., 1 првильность ? 2 ...
renesko1
сообщение 16.02.2008 23:33
Сообщение #1


поиск
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


Автобусные билеты в рулоне пронумерованы от 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 как вывести в несколько столбцов |

вот сама программа --> Прикрепленный файл  zadacha.rar ( 31.9 килобайт ) Кол-во скачиваний: 322


забыл дописать прверку на start <= 1000 то ...

заранее спасибо.

Сообщение отредактировано: renesko1 - 17.02.2008 0:13


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 8:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"