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 килобайт ) Кол-во скачиваний: 329


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

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

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


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

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

 

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