Как лучше всего подсчитать, сколько раз значение встречается в массиве? - PullRequest
2 голосов
/ 25 ноября 2011

Мне было дано задание написать программу, которая читает ряд отметок о назначении из текстового файла в массив, а затем подсчитывает, сколько отметок в определенных скобках, т.е. 40-49, 50-59 и т. Д. . Значение -1 в текстовом файле означает, что назначение не было передано, а значение 0 означает, что назначение было настолько плохим, что оно не было оценено.

Я мог бы легко это сделать, используя пару циклов for, а затем использовать операторы if для проверки значений, увеличивая при этом соответствующие целые числа для подсчета количества вхождений, но для получения более высоких оценок мне нужно реализовать программа «лучше». Каков был бы лучший, более эффективный способ сделать это? Я не ищу код прямо сейчас, просто "Это то, что вы должны сделать". Я пытался придумать разные способы сделать это, но ни один из них не кажется лучше, и мне кажется, что я просто пытаюсь усложнить это ради него.

Я попытался использовать двумерный массив, в котором значения хранятся в качестве параметра функции, а затем использовать функцию для распечатки числа вхождений определенных значений, но я не смог заставить это скомпилировать, так как синтаксис был неверным для использования 2D-массива в качестве параметра, и я не слишком уверен, как это сделать.

Любая помощь будет оценена, спасибо.

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

В качестве пищи для размышления, если это школьное задание, вы, возможно, захотите применить другие вещи, которые вы изучили в курсе.

Вы уже учились сортировке?Возможно, вы могли бы сначала отсортировать список, чтобы не выполнять итерации по массиву несколько раз.Вы можете просто пройти по нему один раз, взять все -1 и выплюнуть, сколько у вас есть, затем взять все из них в следующей скобке и т. Д.

edit: это, конечно, при условии, чтовы используете 1d массив.

1 голос
/ 25 ноября 2011

Зачем вам нужна пара для петель? одного достаточно.

Создайте массив размером 10, где массив [0] - это отметки от 0 до 9, массив [1] - от 10 до 19 и т. Д. Когда вы видите число, поместите его в соответствующий массив массива, используя целочисленное деление например, Массив [(INT) марка / 10] ++. когда вы закончите, массив будет содержать количество меток в каждом сегменте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...