Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Задачи на последовательности чиселСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
В программировании часто встречаются задачи на последовательности чисел. Числа в цикле вводятся по одному, обрабатываются (суммируются или еще что-нибудь), при этом количество вводимых чисел заранее неизвестно. Признаком окончания ввода последовательности, как правило, служит условное число. Например, если находится сумма целых положительных чисел, то таким признаком может быть число 0. Алгорит вычисления суммы целых чисел, 0 - признак окончания ввода. 1. Начальная установка: S=0 (в ячейке S будет накапливаться сумма). В этом алгоритме циклический процесс начанается в шаге 2 и заканчивается в 5. Сразу отметим, что реализовать этот алгоритм можно несколькими способами. Запишем первый способ - с использованием оператора break. Поскольку выход из цикла нам будет обеспечен в теле цикла, можно смело брать бесконечный цикл. Полный листинг программы: #include <stdio.h> Попробуем реализовать этот алгоритм, используя введенное число как условие продолжения цикла. В этом примере самое первое число надо ввести до цикла (почему?), а уж в цикле все остальные. int S=0; // S - сумма, инициализирована нулем Отличие от предыдущей реализации в теле цикла - сначала выполняется суммирование, а затем ввод следующего числа. Мало того, этот алгоритм можно записать еще с помощью цикла do - while. Попробуйте это сделать самостоятельно! Как посчитать среднее арифметическое Теперь попробуем посчитать среднее арифметическое введенных чисел. Как вычисляется среднее арифметическое в математике, вы наверняка знаете: вычисляется сумма чисел и делится на их количество. В нашей постановке задачи имеется особенность: количество чисел заранее неизвестно, поэтому надо не только подсчитывать сумму чисел, но также их количество. Поэтому для подсчета числа элементов надо завести еще одну переменную - счетчик; пусть это будет переменная k. Каждый раз при вводе очередного числа значение счетчика увеличивается на единицу. Фрагмент кода, вычисляющий сумму и подсчитывающий количество чисел: int S=0, k=0; // S - сумма, k - счетчик Теперь, когда найдена сумма и количество элементов, наступил тонкий момент. Прежде чем делить сумму на количество, вспомним, как делятся целые числа (а по описанию int они у нас целые). Совершенно верно, дробная часть будет отброшена, и мы получим неверный результат. Надо как-то перейти к вещественным числам. Здесь есть различные приемы, например, умножить S на вещественное число 1.0, тогда промежуточный результат станет вещественным, и окончательный тоже вещественным: printf("Среднее арифметическое равно %f\n", S*1.0/k); Но есть более грамотное решение. float Sr; Теперь можно записать присваивание и дальше вывести значение на экран: Sr=S*1.0/k; И профессиональный способ - с помощью операции приведения типа: Sr=(float)S/k; Записанное в скобках описание вещественного типа (float) на самом деле является операцией приведения типа и относится к тому выражению (переменной), перед которым стоит. Таким образом, значение S преобразуется к вещественному типу, и дальше вычисление идет без проблем. Сочетание цикла и разветвления В задачах такого рода, кроме ввода элементов, в цикле еще выполняются операции сравнения, и в зависимости от результата происходит продолжение алгоритма в том или ином направлении. Типичная такая задача - среди вводимых чисел найти максимальное. 1. Ввести число в ячейку N. Фрагмент листинга с циклом while: int N; // N - очередное число Если же количество чисел заранее известно, можно использовать цикл с параметром, программа при этом становится проще: не надо связывать окончание цикла с "условным" числом: int N=0;
Задания для самостоятельной работы к уроку 11 Задания на использование операторов цикла совместно с условным оператором 1. Вывести на экран все целые числа от 100 до 200, кратные семи. 2. Вывести на экран все целые числа от a до b, кратные c. 3. Известны данные о стоимости каждого товара из группы. Найти общую стоимость тех товаров, которые стоят дороже 1000 рублей (количество таких товаров заранее неизвестно). 4. Известны данные о температуре воздуха декады месяца. Определить, сколько раз температура опускалась ниже 0 градусов. 5. Составить программу поиска трехзначных чисел, которые при делении на 47 дают в остатке 43, а при делении на 43 дают в остатке 47. 6. Найти максимальное и минимальное числа из десяти случайных однозначных чисел. 7. Найти среднее арифметическое двадцати случайных чисел, разрядностью не выше трехзначных. 8. Написать программу, которая проверяет, является ли целое число, введенное пользователем, простым (простым называется натуральное число, большее 1, не имеющее других делителей, кроме единицы и самого себя).
|
||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 925; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.159.237 (0.012 с.) |