问题
给定一个整数数组,计算其元素正数、负数和零的比率。在小数点后的新行上打印每个分数的小数值。
注意:这个挑战引入了精度问题。测试用例被缩放到小数点后六位,但绝对误差高达 0 的答案是可以接受的。
功能说明
在下面的编辑器中完成 plusMinus 功能。
plusMinus 具有以下参数:
int arr[n]: an array of integers
打印
打印数组中正值、负值和零值的比率。每个值应打印在单独的行上,小数点后有数字。该函数不应返回值。
输入格式
第一行包含一个整数,n,数组的大小。
第二行包含 n 个以空格分隔的整数,用于描述 arr[n]。
输出格式
打印以下行,每行都保留为小数:
正值比例
负值比例
零的比例
解决方案(我是如何解决的)
取名为“正”、“负”和“中性”的三个变量。将初始值存储为零 (0)。
在给定的数组中迭代一个 for 循环。
在迭代数组时,我们必须添加正值、负值和中性值。
通过除以数组长度来计算比率。
打印结果。这是一个棘手的部分,指令说,在新行上打印每个结果,如果您使用 echo 或打印功能,它不会去新行,所以我的解决方案是使用 PHP_EOF。
$postive = 0;
$negative = 0;
$neutral = 0;
a
r
r
s
i
z
e
=
s
i
z
e
o
f
(
arrsize = sizeof(
arrsize=sizeof(arr);
for ($i = 0; $i < $arrsize; KaTeX parse error: Expected '}', got 'EOF' at end of input: …){ if (arr[$i] > 0){
KaTeX parse error: Expected 'EOF', got '}' at position 21: …ive++; }̲else if (arr[$i] < 0){
KaTeX parse error: Expected 'EOF', got '}' at position 21: …ive++; }̲else if (arr[$i] === 0){
$neutral++;
}
}
p
o
s
r
e
s
=
n
u
m
b
e
r
f
o
r
m
a
t
(
pos_res = number_format(
posres=numberformat(positive / $arrsize, $arrsize);
n
e
g
r
e
s
=
n
u
m
b
e
r
f
o
r
m
a
t
(
neg_res = number_format(
negres=numberformat(negative/ $arrsize, $arrsize);
n
e
u
r
e
s
=
n
u
m
b
e
r
f
o
r
m
a
t
(
neu_res = number_format(
neures=numberformat(neutral / $arrsize, $arrsize);
echo $pos_res . PHP_EOL;
echo $neg_res . PHP_EOL;
echo $neu_res. PHP_EOL;
链接到 HackerRank:正负测试