在TurboPascal7中除以0



我正在做我的学校项目,我(几乎)对这个问题感到愤怒。我的解决方案的有效性是95%,但我有1个输入错误——我不知道输入,但我知道,输入失败是因为错误代码200,它是0的除数。

我的项目是:

"整数的位数和被定义为整数书面形式的位数和。通常我们使用数字的十进制(以10为基数)表示来计算位数和,但在本练习中,我们将以给定的基数来计算。编写一个函数,当数字以给定的基数书写时,该函数计算自然数的位数和。使用此函数,编写一个程序,读取两个自然数(每一个都在自己的行上,并且都是十进制表示):一个基数B和一个数字N。输出应该是以B为基数的N的数字和(以十进制表示)。">

我试图通过添加2个条件来解决问题,但它没有起到任何作用,错误仍然存在。我正在使用一个公式,可以在这里找到https://en.wikipedia.org/wiki/Digit_sum。这是代码本身,它不长。

program CifernySoucetZobecneny;
var
Soustava, Cislo, i: longint;
HorniMez: longint;
Soucet: real;
function Mocnina(Zaklad: longint; Exponent: longint): longint;
var
i, Pomoc: longint;
begin
Pomoc := 1;
for i := 1 to Exponent do
begin
Pomoc := Pomoc * Zaklad;
end;
Mocnina := Pomoc;
end;
begin
readLn(Soustava);
readLn(Cislo);
if (Soustava = 0) then
begin
writeLn('0');
exit;
end;
if (Soustava = 1) then
begin
writeLn(Cislo);
exit;
end;
HorniMez := Trunc(Ln(Cislo)/Ln(Soustava));
Soucet := 0;
for i := 0 to HorniMez do
begin
Soucet := Soucet + ((1/Mocnina(Soustava, (i)))*((Cislo mod Mocnina(Soustava, (i+1))) - (Cislo mod Mocnina(Soustava, i))));
end;
writeLn(Soucet:0:0);
end.

如果有人能查看代码并告诉我,我在哪里除以0,我将不胜感激,因为我尝试了很多输入,花了很多小时在这上面,但没有得到正确的解决方案。谢谢大家。

PS:我是捷克人,所以变量和函数的名称不是英文的,很抱歉,但我希望这不会成为问题。

Cislo = 0时,下面对Ln(Cislo)的计算会给出运行时错误200。这是因为Ln(0)未定义(在Ln()的允许范围之外)。

相关内容

  • 没有找到相关文章

最新更新