Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшее положительное нечетное число, содержащееся в массиве. Гарантируется, что в массиве есть хотя бы одно положительное нечетное число. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
#include
using namespace std;
int main() {
const int N=70;
int a[N];
int i, j, m;
for (i=0; i cin>>a[i];
…
}
Допишите программу используя язык C++ и при этом не меняя переменные, которые даны в начале программы.
В современной школе информатика – достаточно сложный предмет для усвоения учащимися. Основное препятствие для полноценного изучения информатики – нехватка времени. Мною проанализировано много учебных планов и методик преподавания информатики и для общеобразовательных классов, и для профильных с углубленным изучением информатики. Вывод неутешителен. Предлагаемые материалы основываются на гораздо большем годовом количестве учебных часов, чем то, которым мы реально располагаем. Следствием расхождения между рекомендуемым и реальным объемом учебных часов является невозможность использовать в процессе обучения какой-то один учебник информатики. Это неудобно как ученикам, так и преподавателю. Выходом из этой ситуации является разработка собственной методики преподавания информатики с ориентацией на творческую деятельность учащихся и тестовый контроль, которая, не уменьшая объем материала, позволяла бы сократить время на его усвоение учениками и уложиться в отведенное количество часов.
Основываясь на своем опыте работы с учащимися старшего звена, я выделила несколько основных тем, без усвоения которых невозможно успешное изучение всего курса информатики, и разработала собственную методику их преподавания. Я пользуюсь ей уже несколько лет, что позволяет добиваться хороших результатов в освоении учениками моего предмета. С методикой преподавания одной из таких тем я и хочу познакомить вас.
Секрет могущества ЭВМ – высокая скорость и большая память. Для записи алгоритмов, работающих с большими объемами информации, в алгоритмическом языке существуют специальные табличные величины (или просто таблицы). Исполнение многих алгоритмов было бы просто невозможно, если бы соответствующие объекты не были каким-либо образом организованы: упорядочены, классифицированы, занумерованы и так далее. Итак, нужно уметь организовать не только действия, но и те объекты, над которыми эти действия производятся.
Необходимо отметить, что таблицы (массивы) как основное средство представления однородной информации неизбежно используются во всех реальных компьютерных программах. На табличном принципе основана и архитектура современных ЭВМ: память машины можно рассматривать как большой массив байтов, адреса которых располагаются по возрастанию.
Решение 1 (логическое, попроще):
по условию задачи понятно, что
(количество учеников равно числу девочек плюс число мальчиков)
Посмотрим, как происходит поразрядное сложение этих двух чисел:
в первом разряде: -здесь вопросов нет
во втором разряде: -это значит, что цифры три в этой системе счисления нет (к двойке добавили единицу, но тройку не получили, а получили обнуление этого разряда и естественно единица добавилась к следующему разряду, то есть полностью сумма выглядит так: ).
Итак, в этой системе используются только три цифры: 0, 1, 2. Значит это система с основанием 3. ответ: q=3.
Решение 2 (через уравнение, посложнее):
возьмём уравнение, написанное в начале но числа распишем по правилам перевода из системы с любым основанием в десятичную систему:
(1*q^2 +2*q^1 +0*q^0) + (1*q^2 +1*q^1 +0*q^0) = (1*q^3 +0*q^2 +0*q^1 +0*q^0)
а далее будем упрощать выражения и решать полученное уравнение по обычным правилам алгебры:
q^2 + 2*q + q^2 + q = q^3
q^3 - 2*q^2 - 3*q = 0
q * (q^2 - 2*q - 3) = 0
это произведение будет равно нулю если q=0, либо если q^2 - 2*q - 3 = 0
решим это квадратное уравнение:
Итак, корни исходного (кубического) уравнения- числа 0, 3 и -1
Ноль и минус один по условиям нашей задачи не подходят, т.к. основание системы счисления не может быть отрицательным или равным нулю.
Поэтому, имеем только один ответ: основание q=3.
По желанию можно выполнить проверку нашего решения:
Переведём три числа, указанные в условии задачи из троичной системы счисления в десятичную (перевод уже расписан в начале
120₃ = 1*3^2 + 2*3^1 = 9 + 6 = 15₁₀ (девочек)
110₃ = 1*3^2 + 1*3^1 = 9 + 3 = 12₁₀ (мальчиков)
1000₃ = 1*3^3 = 27₁₀ (учеников всего)
Суммируем первые два полученных числа: 15 + 12 = 27
Сумма сходится, значит решение верно.