Страница 1 из 3

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

Добавлено: 09 фев 2008, 14:50
Mpak
на Турбо паскале
Вот условие:
Описать функцию DigitCount(K) целого типа, находящую количество целого положительного числа К. Используя ету функцию, найти количество цифр для каждого из пяти данных целых положительных чисел.

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

Добавлено: 09 фев 2008, 15:10
MOTOCoder
Как-то так:

[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]

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

Добавлено: 09 фев 2008, 17:21
Mpak
Спасиба бальшое)

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

Добавлено: 10 фев 2008, 09:53
Mpak
Кста, был бы очень презнателен, если ктонибудь обьяснит ету задачку парусски :)

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

Добавлено: 10 фев 2008, 12:51
MOTOCoder
[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]

Вообще, что конкретно не ясно?

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

Добавлено: 10 фев 2008, 13:27
Serge_Bliznykov
Mpak, а какая именно часть программы непонятна?
функция DigitCount работает так - число Num, переданное в функцию в качестве параметра переводится в строку s - и количество чисел в числе = длине полученной строки s

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

Добавлено: 10 фев 2008, 13:36
Serge_Bliznykov
MOTOCoder, респект, опередил!!! ;-))

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

Добавлено: 11 фев 2008, 12:44
BBB

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

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;

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

Добавлено: 11 фев 2008, 15:42
MOTOCoder
BBB писал(а): А если в ф-ию придет отрицательное num ? ;)
Ф-ия, за счет наличия символа '-' в полученной строке, вернет на единицу больше цифр, чем есть.
Тоже про это думал, но потом вниматльно прочитал условие:
Описать функцию DigitCount(K) целого типа, находящую количество целого положительного числа К.

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

Добавлено: 11 фев 2008, 16:17
drummer
проще было написать натурального числа