#include <iostream>
#include <ctime>
#define N 10
using namespace std;
signed main() {
srand(time(NULL));
setlocale(LC_ALL, "Rus");
int _sum3 = 0, pr_chet = 1, counter_50 = 0;
float s_50 = 0;
int *A = new int[N];
for (size_t i = 0; i < N; i++)
{
A[i] = rand() % 20;
cout << A[i] << " ";
if (A[i] % 3 == 0)
_sum3 += A[i];
if (A[i] < 50) {
counter_50++;
s_50 += A[i];
}
if (((A[i] & 1) == 0) && A[i] > 0)
pr_chet *= A[i];
}
cout << "\nСумма элементов, которые делятся на 3: " << _sum3 << endl;
cout << "Среднее арифметическое элементов массива, которые меньше 50: " << s_50 / counter_50 << endl;
cout << "Произведение четных положительных элементов:" << pr_chet << endl;
return 0;
}
В языке программирования С++ существует два оператора выбора:
1)Оператор выбора if
2) Оператор выбора switch
Операторы выбора позволяют принять программе решение, основываясь на истинности или ложности условия. Если условие истинно (т. е. равно true) значит, оператор в теле if выполняется, после чего выполняется следующий по порядку оператор. Если условие ложно (т. е. равно false) значит, оператор в теле if не выполняется (игнорируется или пропускается) и сразу же выполняется следующий по порядку оператор. Проверяемое условие может быть любым логическим выражением. Логические выражения могут быть образованы операциями равенства и отношения
if (/*проверяемое условие*/)
{
//тело условного оператора
}
Оператор switch
На начальном этапе анализируется выражение или переменная. После чего осуществляется переход к той ветви программы, для которой значение переменной или выражения совпадает с указанным константным выражением. Далее выполняется оператор или группа операторов пока не встретится зарезервированное слово break или закрывающая фигурная скобочка. Если значение переменной или выражения не совпадает ни с одним константным выражением, то передается управление ветви программы содержащей зарезервированное слово default. После чего выполняется оператор или группа операторов данной ветви. Сейчас рассмотрим задачу с использованием оператора выбора switch.
// форма записи оператора множественного выбора switch
switch (/*переменная или выражение*/)
{
case /*константное выражение1/*:
{
/*группа операторов*/;
break;
}
case /*константное выражение2*/:
{
/*группа операторов*/;
break;
}
//. . .
default:
{
/*группа операторов*/;
}
}
Поделитесь своими знаниями, ответьте на вопрос:
1) запись числа 256 в системе счисления с основание n содержит 3 цифры и оканчивается на 4. чему равно минимальное возможное основание системы счисления. 2) 100 (в 7 системе счисления) + x=230 (в 5 системе счисления) 3) в некоторой системе счисления записи десятичных чисел 56 и 124 заканчиваются на 5. определить основание системы счисления. 4) сколько единиц в двоичной записи числа 8 (в 1014 степени) - 2 (в 530 степени) - 12
Конечно, можно такое уравнение решить методом подбора, но это неэффективно.
Минимальное четырехзначное число в системе счисления по любому основанию n записывается как 1000 и оно равно n³. Найдем это n для случая, когда наше число 256 станет четырехзначным: n=∛256 ≈ 6.35.
Следовательно, n не может быть меньше 7.
Вспомним, как мы переводим число из десятичной системы счисления в систему по основанию n. Мы делим наше число "в столбик" на основание системы n, потом записываем остаток, частное снова делим... А в конце к результату приписываем остатки в обратном порядке. Последней цифрой числа буде как раз остаток от первого деления. А у нас по условию он равен 4. Т.е. когда мы разделим 256 на n, то остаток будет равен 4. Тогда число на 4 меньшее, чем 256, должно делиться на n нацело. Начинаем работать с числом 265-4=252.
Разложим его на простые множители: 256=1х2х2х3х3х7. Мы выше отметили, что основание системы n не может быть меньше 7. А у нас как раз есть семерка среди делителей. Попробуем перевести 256 в систему счисления по основанию 7:
256 / 7 = 36, остаток 4 (кто бы сомневался!)
36 / 7 = 5, остаток 1.
Записываем результат: 514₇
И проверяем наше самое первое уравнение.
5х7²+1х7¹+4=5х49+7+4=245+11=256₁₀.
ответ: минимально возможное основание системы счисления- 7
2. 100₇+х=230₅
Поскольку про систему счисления х ничего не сказано, считаем, что она десятичная. Переводим все в десятичную систему и решаем уравнение.
100₇=1х7²=49; 230₅=2х5²+3х5=50+15=65;
49+х=65 ⇒ х=65-49=16
ответ: х=16
3. Вспоминаем написанное в первой задаче. Если число в некоторой системе счисления оканчивается на 5, то оно дает 5 в остатке при делении на основание этой системы счисления. Тогда числа 56-5=51 и 124-5=119 должны делиться нацело на основание системы счисления.
51=1х3х17; 119=1х7х17
НОД обоих чисел равен 17 - это и есть основание системы счисления.
ответ: основание системы счисления равно 17
4. Определение количества единиц в двоичной записи числа
Число 2³⁰⁴² в двоичной системе будет представляться единицей с 3042 нулями. Число 2⁵³⁰ - соответственно единицей с 530 нулями. Вполне понятно, что последние 530 нулей в результате так нулями и останутся. А вот из 531-го справа нуля нужно будет вычитать единицу. как всегда, придется "занимать" единичку из старших разрядов. Для понимания происходящего рассмотрим более короткий пример:
1000000
- 1000
--------------
111000
Мы видим, что начиная с позиции единичного разряда в вычитаемом слева каждый ноль заменился на единицу. В нашем случае в позициях с 531 по 3042 появятся единицы. Их будет 3042-531+1=2512.
Осталось вычесть из результата 12₁₀=1100₂. Тоже посмотрим на "коротком" примере:
100000000
- 1100
-----------------
11110100
В исходном числе была одна единица, а в результате их стало на три меньше, чем было нулей. У нас нулей было 530, следовательно, вместо них станет 530-3=527 единиц
А всего в числе будет 2512+527-1=3038 единиц. Почему отняли одну? Мы ведь для второго вычитания должны были единичку "занять". Вот и получился среди единичек в далеком 531-м разряде ноль.
ответ: 3038 единиц