Постановка задачи
Предположим, что был проведен социологический опрос на какую-либо актуальную тему нашей жизни. Обычно одним из вопросов респонденту является вопрос о его возрасте. При публикации результатов опроса обычно приводятся справочно такие данные, как число опрошенных, средний, минимальный и максимальный возраст участников опроса. Рассмотрим только эту задачу, не касаясь самих результатов опроса.
Далее мы построим алгоритм решения этой простой задачи методами структурного программирования, предложим его реализацию на языке C#, зададим пару вопросов, касающихся смысла задачи, на которые вы постарайтесь ответить.
Решение
Используя принципы структурного программирования выделим в методе static void Main(string[] args) блоки: Ввод данных, Средний возраст, Минимальный и максимальный возраст, Итоги (вывод результатов).
1) При вводе данных сначала задается число участников n и создается массив a (Age — возраст) из n элементов целого типа: int[] a = new int[n];
Затем поочередно вводим с подсказкой возраст каждого человека.
2) Средний возраст находим, предварительно обнулив сумматор m, путем суммирования (в цикле for{ } ) возрастов участников и делением полученной суммы на их число.
3) В другом цикле находим одновременно минимальный и максимальный элементы: до цикла предполагаем, что минимальный и максимальный возраст у первого участника (элемент a[0]), затем в цикле от 1 до (n-1) проверяем условия и изменяем их при необходимости.
4) Вывод результатов — последовательность операторов Console.WriteLine();
Примечание: Отметим, что мы используем всего только три основные конструкции: последовательность, цикл, условие. Циклы вложены в последовательность, условные операторы вложены в цикл. Блоки разделены строками комментариев.
Программная реализация:
// Средний, минимальный и максимальный возраст в группе using System; namespace среднее_значение_минимальный_и_максимальный_элементы { class Program { static void Main(string[] args) { // Ввод данных int n; Console.Write("Численность группы = "); n = Convert.ToInt32(Console.ReadLine()); int[] a = new int[n]; for (int i = 0; i < n; i++) { Console.Write("Возраст {0}-го человека: ", i+1); a[i] = Convert.ToInt32(Console.ReadLine()); } // Средний возраст double m = 0; for (int i = 0; i < n; i++) m = m + a[i]; m = m / n; // Минимальный и максимальный возраст int min, max; min = a[0]; max = a[0]; for (int i = 1; i < n; i++) { if (a[i] < min) min = a[i]; if (a[i] > max) max = a[i]; } // Итоги Console.Write("ИТОГИ:\nВсего опрошено {0}\n", n); Console.WriteLine("средний возраст = {0}", m); Console.WriteLine("Минимальный возраст = {0}", min); Console.WriteLine("Максимальный возраст = {0}", max); Console.ReadKey(); } } }
Результат:
Вопросы на «засыпку»
Подумайте, что будет делать эта программа, если введем возраст более 200 лет или -1 год? Как можно защититься от ошибок ввода?
Рассмотрим следующую типичную задачу — Сортировка массивов.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.