Пожалуйста помогите решить

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Mpak
Сообщения: 3
Зарегистрирован: 09 фев 2008, 14:42

на Турбо паскале
Вот условие:
Описать функцию DigitCount(K) целого типа, находящую количество целого положительного числа К. Используя ету функцию, найти количество цифр для каждого из пяти данных целых положительных чисел.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Как-то так:

[syntax='delphi']
program DgCnt;

const
N=5;

var
A:array[1..N] of longint;
i:integer;
{Сама функция}
function DigitCount(Num:longint):integer;
var
s:string;
begin
str(Num,s);
DigitCount:=Length(s);
end;

begin
writeln('Введите 5 чисел');
for i:=1 to N do
readln(A);

for i:=1 to N do
writeln('Число ',A,' содержит ',DigitCount(A),' цифр(ы)');
readln;
end.

end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Mpak
Сообщения: 3
Зарегистрирован: 09 фев 2008, 14:42

Спасиба бальшое)
Mpak
Сообщения: 3
Зарегистрирован: 09 фев 2008, 14:42

Кста, был бы очень презнателен, если ктонибудь обьяснит ету задачку парусски :)
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

[syntax='delphi']

program DgCnt;

const
N=5;{Количество чисел}

var
A:array[1..N] of longint;{Массив для хранения чисел}

i:integer;{Счетчик}

{Сама функция}

function DigitCount(Num:longint):integer;
var
s:string;{Нужна для хранения строкового представления числа}

begin

str(Num,s);{Преобразуем число в строку}
DigitCount:=Length(s); {Количество цифр = количеству символов в записи числа}
end;

begin
writeln('Введите 5 чисел');

for i:=1 to N do
readln(A); {Ввод данных в массив}
for i:=1 to N do
writeln('Число ',
A,{Вывод числа}
' содержит ',
DigitCount(A),{Выполнение функции DigitCount и вывод результата её работы}
' цифр(ы)');
readln;
end.
[/syntax]

Вообще, что конкретно не ясно?
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

Mpak, а какая именно часть программы непонятна?
функция DigitCount работает так - число Num, переданное в функцию в качестве параметра переводится в строку s - и количество чисел в числе = длине полученной строки s
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

MOTOCoder, респект, опередил!!! ;-))
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Код: Выделить всё

function DigitCount(Num:longint):integer;
var  s:string;
begin
 str(Num,s);
 DigitCount:=Length(s);
end;
А если в ф-ию придет отрицательное num ? ;)
Ф-ия, за счет наличия символа '-' в полученной строке, вернет на единицу больше цифр, чем есть.

Код: Выделить всё

function DigitCount(Num:longint):integer;
var  s:string;
begin
 str (Num,s);
 if (Num >= 0) then
   DigitCount := Length(s)
 else
   DigitCount := Length(s) - 1;
end;
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

BBB писал(а): А если в ф-ию придет отрицательное num ? ;)
Ф-ия, за счет наличия символа '-' в полученной строке, вернет на единицу больше цифр, чем есть.
Тоже про это думал, но потом вниматльно прочитал условие:
Описать функцию DigitCount(K) целого типа, находящую количество целого положительного числа К.
Ни что так не ограничивает фантазию программиста, как компилятор...
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

проще было написать натурального числа
Ответить