Subscribe:
    Subscribe Twitter Facebook

    понедельник, 13 декабря 2010 г.

    [TPascal] Количество цифр в числе и операция с ними


    Вычисляем сколько цифр в числе и суммируем их.












    Вновь задачка и решение.
    Задача звучит примерно так:
    Составить программу, которая при вводе числа определит сумму (произведение, разность..) ее цифр (т.е. для суммы 123 => 1+2+3=6)

    Для примера была данна задачка с использованием case of, где идут интервалы 1..9,10..99... - возможное кол-во цифр в числе. Занимает очень много места и мне она просто не понравилась.

    В этот раз не искал возможных решений в интернете, а просто стал придумывать алгоритм.

    Взял за основу возможность деления нацело (mod и div). Т.е. отсекаю каждый раз по цифре и проверяю ее. Заканчиваю вводную и представляю код.

    Код ( опять без форматирования :( ):

    uses crt;

    var

    x:longint;

    i,n:integer;

    begin

    clrscr;

    write('x: ');

    readln(x);

    i:=0; n:=0;

    while x<>0 do begin

    i:=i+(x mod 10);

    x:=x div 10;

    n:=n+1;

    end;

    writeln('Cумма : ',i);

    write('Кол-во цифр : ',n);

    readln;

    end.


    Теперь через процедуру и немного изменим условия.

    Надо посчитать все цифры в числе, кот-ые кратны 3.

    Код:

    uses crt;

    var

    x:longint;

    procedure nums(x:longint);

    var sum,count:integer;

    begin

    sum:=0; count:=0;

    // начинаем цикл с проверкой числа, если число законичилось,т.е. = 0, то закончить

    repeat


    // здесь проверяем кратность цифры

    if x mod 10 <>0 then if (a mod 10) mod 3 = 0

    // подсчитываем кол-во цифр

    then count:= count +1;

    // далее от числа убираем цифру, которую проверяли выше

    x:=x div 10;

    until x=0;

    writeln('Сумма : ',sum);

    write('Кол-во цифр : ',count);

    end;

    begin

    clrscr;

    write('Введите число : ');

    read(x);

    nums(x);

    readln;

    end.

    Комментариев нет:

    Отправить комментарий