Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

lamed
Статус: Профессионал
Рейтинг: 2913
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2475
∙ повысить рейтинг »
star9491
Статус: Профессионал
Рейтинг: 2313
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)

Номер выпуска:1125
Дата выхода:01.10.2010, 15:30
Администратор рассылки:Boriss, Академик
Подписчиков / экспертов:187 / 185
Вопросов / ответов:2 / 3

Вопрос № 180047: Здравствуйте.помогите пож решить.Тема "модули".Дано натуральное число N.Сколько различных цифр встречается в его десятичной записи....


Вопрос № 180048: Здравствуйте.помогите пож решить.Тема динамические переменные. Дана последовательность из 1000 элементов.Найти все четные и показать....

Вопрос № 180047:

Здравствуйте.помогите пож решить.Тема "модули".Дано натуральное число N.Сколько различных цифр встречается в его десятичной записи.

Отправлен: 26.09.2010, 10:01
Вопрос задал: sannek2, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Alex1, 2-й класс :
Здравствуйте, sannek2.
Я бы сделал так, как в приложении. Но так-как тема "модули", то я подозреваю, что функцию вычисление кол-ва цифр надо оформить в отдельном модуле. Если это действительно так, то создайте отдельный модуль, вынесите в него функцию CountAlpha и подключите этот модуль в разделе uses в главном модуле.

Программа:

Код:
program Prog;

uses UnitCnt;

var n:integer;
begin
Write('Введите натуральное число N: ');
Readln(n);
Write('Кол-во различных цифр = ', CountAlpha(n));
Readln;
end.


Модуль:

Код:
unit UnitCnt;

interface

function CountAlpha(N:integer):byte;

implementation

function CountAlpha(N:integer):byte;
var M:array[0..9] of boolean;
i, nn:integer;
begin
nn:=N;
for i:=0 to 9 do M[i]:=false;
while nn>0 do begin
M[nn mod 10]:=true;
nn:=nn div 10;
end;
Result:=0;
for i:=0 to 9 do
if M[i] then inc(Result);
end;

end.
Редактирование ответа - исправление автора
-----
∙ Отредактировал: Victor Pyrlik, Модератор
∙ Дата редактирования: 28.09.2010, 18:59 (время московское)

Ответ отправил: Alex1, 2-й класс
Ответ отправлен: 26.09.2010, 15:30
Номер ответа: 263203

Оценка ответа: 5
Комментарий к оценке:
Спс большое

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263203 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Micren, Профессионал :
    Здравствуйте, sannek2.
    Программа. Проверял в FreePascal.
    Код:
    {$I-}
    program DigitsInNumber;

    uses MyUnit;

    var
    N:Word;
    Digits:TDigitSet;
    Count:Byte=0;
    I:TDigitRange;

    begin
    { Ввод числа }
    Write('N='); ReadLn(N);

    if IOResult=0 then begin

    Digits:=ContainDigits(N);

    Write('Contain digits:[');
    for I:=Low(TDigitRange) to High(TDigitRange) do begin
    if I in Digits then begin
    Inc(Count);
    Write(I,',');
    end;
    end;

    WriteLn(#8,']');
    WriteLn('Count:&# 39;,Count);
    end else begin
    WriteLn('I/O Error');
    end;

    ReadLn;
    end.

    Модуль:
    Код:
    unit MyUnit;

    interface

    type
    TDigitRange=0..9;
    TDigitSet=set of TDigitRange;

    function ContainDigits(Num:LongWord):TDigitSet;

    implementation

    function ContainDigits(Num:LongWord):TDigitSet;
    var
    Tmp:Byte;
    Res:TDigitSet=[];
    begin
    { Подсчет кол-ва различных цифр }
    repeat
    Tmp:=Num mod 10;
    Num:=Num div 10;
    if not (Tmp in Res) then begin
    Res:=Res+[Tmp];
    end;
    until Num=0;
    ContainDig its:=Res;
    end;

    end.

    Пример работы:
    Код:
    N=44343
    Contain digits:[3,4]
    Count:2

    Ответ отправил: Micren, Профессионал
    Ответ отправлен: 26.09.2010, 15:45
    Номер ответа: 263204

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо большое

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263204 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Вопрос № 180048:

    Здравствуйте.помогите пож решить.Тема динамические переменные.
    Дана последовательность из 1000 элементов.Найти все четные и показать.

    Отправлен: 26.09.2010, 10:16
    Вопрос задал: sannek2, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Micren, Профессионал :
    Здравствуйте, sannek2.
    Программа. Проверял во FreePascal.
    Код:
    program P_180048;

    const
    COUNT=1000; { Количество элементов }

    type
    TData=Word;
    PData=^TData;
    TDataArray=array[1..COUNT] of TData;
    PDataArray=^TDataArray;

    const
    MAX=High(TData); { Для Turbo Pascal замените High(TData) на 65535,
    или любое понравившееся число из диапазона 0..65535 }

    var
    Data:PData;
    I:Word;

    begin
    Randomize;

    { Выделяем память }
    GetMem(Data,SizeOf(TData)*COUNT);

    { Заполняем случайными числами }
    for I:=1 to COUNT do begin
    PDat aArray(Data)^[I]:=Random(MAX);
    end;

    { Проверка и вывод четных }
    for I:=1 to COUNT do begin
    if not Odd(PDataArray(Data)^[I]) then begin
    Write(PDataArray(Data)^[I]:8);
    end;
    end;

    { Освобождаем память }
    FreeMem(Data,SizeOf(TData)*COUNT);

    ReadLn;
    end.

    Пример работы:
    Код:
       37620   25014   21826   30390   47104   23122   20430   59344   20432   20358
    28800 23270 26482 5902 40130 56866 28526 40334 12064 38300
    42942 47908 27438 58306 16458 37422 62264 23210 26334 16098
    13096 13202 19176 50936 55288 2074 37384 22682 18338 52462
    57148 63678 34314 42618 56726 40158 28410 40306 40532 41712
    22198 11448 20234 42228 44980 46950 21664 46220 34650 32892
    2944 40278 146 60054 48108 7028 59316 36726 59276 32280
    2910 28372 57040 11154 12724 31442 16570 35224 36174 58942
    3634 32164 41188 41564 28428 64930 24186 43248 28126 17502
    50734 64014 28758 22132 42602 27450 54034 33622 11990 21686
    27762 42012 63662 35672 13736 58616 63672 6448 7336 58018
    18390 41096 25972 29188 9418 26720 29008 63788 3504 38240
    41932 16816 198 54922 63722 490 30048 39098 13150 48874
    63266 13966 26308 54614 13374 28118 61502 25736 14460 60340
    59092 5274 14430 34876 2182 38426 39120 23688 61828 49830
    1594 14762 10006 400 08 60416 44854 65446 51916 17760 34718
    22422 53380 48300 20048 20172 11188 51046 22502 49906 44368
    41776 6084 55194 37186 52436 61028 46728 13752 33672 16780
    63908 64350 11610 13944 55624 53088 28044 54774 36298 46240
    61658 15528 23412 46370 6534 58786 32958 41812 40352 19482
    4862 17176 63634 2088 61386 46764 11908 43918 48562 2714
    54886 54772 11866 31368 55066 1644 4698 20230 2786 22484
    16626 59434 40346 53684 31692 49342 42288 23726 60942 20976
    24298 54698 54672 50440 65176 55760 26318 58648 56722 59652
    8418 19936 30532 21564 35436 56574 18622 14354 24340 51796
    10468 36254 62666 48554 11362 45018 6246 64636 30700 2652
    15510 12200 61966 32592 7386 36218 26850 47448 3240 29986
    12170 43672 59700 35888 11256 48406 55992 42026 29924 39978
    36044 3074 59318 2052 45060 192 46618 11216 3306 53930
    53988 60516 45464 44580 2242 41866 43994 27946 32430 3460
    36912 31062 41664 30250 50946 23120 26098 23732 2306 63528
    61468 10302 7596 37446 50316 26908 61158 65502 45594 41020
    28778 7718 44272 52724 1170 48258 45484 60948 3438 12836
    24720 5108 30114 23352 59884 30980 29424 5746 52984 35528
    22812 52096 48092 51252 55068 37982 7146 11578 26204 26064
    16040 7982 57210 64336 48376 14654 34166 23112 40276 15784
    36244 34334 60378 28526 14286 64114 19262 53208 51938 34246
    16520 8972 26656 37426 12180 41654 33920 58690 17584 23988
    60988 45330 39696 59932 1434 46604 62694 39054 31422 56444
    24538 10146 31290 12538 62852 59680 16804 47202 55328 7836
    7024 59906 41844 5246 58144 492 0 19892 62222 60020 51636
    25482 18602 12686 55268 15516 3136 39944 60526 34244 43692
    36784 51490 30408 38648 20658 41360 31474 47584 19866 26032
    57522 19786 60118 11248 65146 824 62348 18824 39292 16628
    24258 7200 61876 60412 44584 47152 35766 10450 36556 17760
    56800 36740 764 2322 21242 33360 45200 36714 18448 63146
    2624 16130 10118 27332 11630 33868 7764 21344 22082 13918
    47332 782 35336 46330 49398 11688 15232 12560 10014 55110
    60254 14154 14972 56766 55300 4242 59720 65386 28064 52302
    59164 49884 51326 63312 41408

    Ответ отправил: Micren, Профессионал
    Ответ отправлен: 27.09.2010, 20:05
    Номер ответа: 263216

    Оценка ответа: 5
    Комментарий к оценке:
    Спс

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 263216 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.21 от 28.09.2010

    В избранное