PDA

Показать полную графическую версию : [решено] Анализ элементов числового массива


kelevara
08-05-2013, 16:16
Добрый день!
Имеется некий текстовый файл, в котором находится набор чисел. Необходимо определить, сколько в нем положительных чисел.
Для этого я составил следующую программу:


$num_of_plus = 0
$i = 0
$f = get-content nn.txt
for ($i = 0; $i -lt $f.length; $i++)
{
"Число $i равно"
if ($f[$i] -ge 0) {$num_of_plus += 1}
}
"Число положительных элементов в файле nn.txt равно $num_of_plus"


Но в итоге выводится лишь следующее:
Число 0 равно
Число 1 равно
Число 2 равно
Число 3 равно
Число 4 равно
Число 5 равно
Число 6 равно
Число 7 равно
Число 8 равно
Число 9 равно
Число 10 равно
Число положительных элементов в файле nn.txt равно 11

Я думаю, что напутал где-то тут (if ($f[$i] -ge 0) {$num_of_plus += 1}), но как сделать правильно - не знаю.

Kazun
08-05-2013, 16:25
-ge - Больше или равно
-gt - Больше

if ($f[$i] -gt 0)

kelevara
08-05-2013, 16:28
Kazun, ненене, проблема не в этом. Я немного модифицировал код, чтобы было видно, какие именно числа он проверяет


$num_of_plus = 0
$i = 0
$f = get-content nn.txt
for ($i = 0; $i -lt $f.length; $i++)
{
"Число $i равно $f[$i]"
if ($f[$i] -gt 0) {$num_of_plus += 1}
}
"Число положительных элементов в файле nn.txt равно $num_of_plus"


В результате он выдает следующее:
Число 0 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[0]
Число 1 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[1]
Число 2 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[2]
Число 3 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[3]
Число 4 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[4]
Число 5 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[5]
Число 6 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[6]
Число 7 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[7]
Число 8 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[8]
Число 9 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[9]
Число 10 равно 25 -2 65 43 2 -84 -65 -3 95 8 4[10]
Число положительных элементов в файле nn.txt равно 11

Kazun
08-05-2013, 16:29
Файл как выглядит?

kelevara
08-05-2013, 16:31
Kazun, вот так:
25
-2
65
43
2
-84
-65
-3
95
8
4

Kazun
08-05-2013, 16:33
$num_of_plus = 0
$f = get-content nn.txt
for ($i = 0; $i -lt $f.length; $i++)
{
Write-Host Число $i равно $f[$i]
if ([int]$f[$i] -gt 0) {$num_of_plus += 1}
}
"Число положительных элементов в файле nn.txt равно $num_of_plus"

kelevara
08-05-2013, 16:36
Kazun, большое спасибо, все работает!
Если я правильно понял, то конструкция [int]$f[$i] означает, что из этой переменной будет извлечено только одно число, а не весь массив?

Kazun
08-05-2013, 16:38
[int]$f[$i] - получить по номеру элемента $i значение из массива,т.к. $f[$i] - возвращает строку,приведем ее к типу int(целые числа).

kelevara
08-05-2013, 16:40
Kazun, ок, понял. Спасибо!




© OSzone.net 2001-2012