Страница 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
проще было написать натурального числа