В подобных случаях объясни свой код утке! (Нет, я не шучу, это известно как отладка резиновой утки )
Пользователь вводит 2 как количество чисел, которое он хочет вставить.
Цикл будет повторяться 2 раза и запрашивать у пользователя число.
Пользователь вводит 1 в качестве первого числа.
1 нечетно, поэтому он перемещается в arrayOdd
, он также добавляется в sumOdd
, то есть 1
.
Пользователь вводит 3 в качестве второго числа. Как это ни странно, он также попадет в arrayOdd
. Внутренний цикл запускается снова, перебирает arrayOdd
, берет первый элемент (1
) и добавляет его в sumOdd
(!), Который теперь равен 2, затем он берет второй элемент (3
) и добавляет это к sumOdd
, sumOdd
равно 5.
Но подождите ... сумма 1 и 3 равна 4, а не 5. Суммирование всех чисел sumOdd
и sumEven
в цикле кажется ошибкой.
for (var x = 0; x < arrayOdd.length; x++) {
sumOdd += arrayOdd[x];
}
Это должно быть:
sumOdd += /* left as an exercise */;
:: GetLogicalDrives () возвраты список доступных (чтение: используемый), управляет как биты в маске. Это должно включать подключенные сетевые диски. Таким образом можно просто обойти биты для нахождения битов, которые являются нулем, означая, что никакой диск не присутствует. Если в сомнении, можно всегда звонить :: GetDriveType () с буквой диска + ":\"
(":\\"
в коде C, или _T(":\\")
в осведомленной о Unicode терминологии, конечно), и это должно возвратиться DRIVE_UNKNOWN
или DRIVE_NO_ROOT_DIR
, если диск доступен.
GetLogicalDriveStrings
может получить Вас просто список в настоящее время используемых букв дисков.
GetVolumeInformation
может использоваться для получения большей информации об определенном диске.
Функция GetLogicalDriveStrings является хорошей начальной точкой.