Консультация № 144258
18.09.2008, 00:54
0.00 руб.
0 3 2
Здравствуйте дорогие эксперты я в паскале очень плохо разбираюсь помогите пожалуйста позарез надо решить 4-е задачи. Только не смйтесь.
1)Дано натуральное число n. Определить сколько цифр в числе.
2)Даны три действительных числа. Отрицательные – заменить её модулём, положительные – нулём.
3)Дано число n. Определить число делителей данного числа.
4)Даны три действительных числа. Определить наименьшее и наибольшее из них.
Причём эти задачи надо решить с помощью фунукций.

Обсуждение

Неизвестный
18.09.2008, 10:38
общий
это ответ
Здравствуйте, Wolvertula!
В приложении код программы, решающий все 4 Ваших задачи.
Для минимального и максимального используются открытые массивы - очень удобно. Аналогично можно было поступить и для изменения элементов массива, но решил показать, как еще можно делать.
Ежели что не понятно будет, спрашивайте

Приложение:
function NumberOfDigits(src: Integer): Integer;
var i: Integer;
begin
i:= 0;
while src <> 0 do begin
inc(i);
src := src div 10
end;
NumberOfDigits := i;
end;

function ConvertNumber(src: Integer): Integer;
begin
if src < 0 then ConvertNumber:=abs(src) else ConvertNumber := 0
end;

function NumberOfDivisors(src: Integer): Integer;
var i, count: Integer;
begin
count := 0;
for i:=1 to src do
if src mod i = 0 then inc(count);
NumberOfDivisors := count;
end;

function Min(n: Array of Integer): Integer;
var i, m: Integer;
begin
m:=1;
for i:=0 to High(n) do
if n[i] < n[m] then m:=i;
Min:=n[m]
end;

function Max(n: Array of Integer): Integer;
var i, m: Integer;
begin
m:=1;
for i:=0 to High(n) do
if n[i] > n[m] then m:=i;
Max:=n[m]
end;


var
a: Array [1..3] of Integer;
i: Integer;

BEGIN
WriteLn(NumberOfDigits(1234));

{Здесь можно организовать ввод чисел с клавиатуры}
a[1] := -12;
a[2] := 1;
a[3] := -335;

for i:=1 to 3 do begin
a[i] := ConvertNumber(a[i]);
WriteLn(a[i])
end;

a[1] := 1234;
WriteLn('Число делителей числа ',a[1],': ', NumberOfDivisors(a[1]));

{Показываем массив и ...}
for i:=1 to 3 do Write(a[i]:8); WriteLn;
Writeln('Минимальное : ', Min(a));
WriteLn('Максимальное: ', Max(a));

END.
Неизвестный
18.09.2008, 10:44
общий
это ответ
Здравствуйте, Wolvertula!
№4. Один из возможных способов
var x,y,z:real;
function max(a,b:real):real;
begin
if a>b then max:=a else max:=b;
end;
function min(a,b:real):real;
begin
if a<b then min:=a else min:=b;
end;
begin
readln(x,y,z);
writeln('max = ',max(max(x,y),max(y,z)));
writeln('min = ',min(min(x,y),min(y,z)));
end.
давно
Профессор
401888
1232
18.09.2008, 11:14
общий
Первую задачу можно решить двумя способами: разложить число на цифры и подсчитать, или преобразовать его в строку и определить ее длину. Привожу второй способ.
Код:
 function KolCif(n:longint):byte;{с помощью строки}
var s:string;
begin
str(n,s); {функция преобразования числа n в строку s}
KolCif:=length(s); {длина строки=кол-во цифр}
end;
Форма ответа