Дан массив из 8 элементов целого типа равный : -8,13,4,-6,7,10,-5.напишите программу ,которая заменит все положительные числа на 1 ,а все отрицательные увеличит на 10.преобразованный массив вывести на экран в строчку через запятую
Для решения примера вспоминаем, что при переходе от шестнадцатиричной системы счисления к двоичной достаточно заменить каждую шестнадцатиричную цифру четырьмя двоичными (тетрадой). Предлагаемое в условии число представляет собой десятичную дробь, т.е. имеет целую и дробную части. Для целой части незначащими будут левые нули и мы будем искать их в первой тетраде. Для дробной части незначащие нули - последние и мы будем их искать в последней тетраде. Первая тетрада - представление 1(16)=0001(2). Левые три нуля незначащие и их удаляем, остается 1. Последняя тетрада - представление Е(16)=1110(2). Тут один незначащий ноль - правый, остается 111.. Остальные тетрады переписываем без изменения. 12АС,6Е(16)=1 0010 1010 1100 , 0110 111 (2) Считаем количество нулей в записи: 9. Это и есть ответ. Комментарии Отметить нарушение
1. Обращаем внимание, что в заданной системе счисления 25+22=50. Ноль - прекрасная подсказка! При поразрядном сложении в младшем разряде 5+2=0. На самом же деле 5+2 были равны 10, ноль записали, а единица пошла в следующий разряд. Но мы знаем, что 5+2 =7 в десятичной системе, следовательно основание системы равно семи, потому что в любой системе счисления ноль с переносом единицы получается тогда, когда число равно основанию этой системы. Именно поэтому ноль - прекрасная подсказка. Итак, основание системы счисления 7. Проверим. 25₇+22₇=50₇ - как и следовало ожидать, все верно.
2. Мальчиков в кассе 25₇ = 2·7¹+5·7⁰ = 14+5 = 19₁₀ Девочек в классе 22₇ = 2·7¹+2·7⁰ = 14+2 = 16₁₀ Всего учащихся 50₇ = 5·7¹+0·7⁰ = 35₁₀ Проверка: 19+16=35
int main() {
int a[] = { -8, 13, 4, -6, 7, 10, -5 };
for (int i = 0; i < 7; ++i)
std::cout << ((a[i] < 0) ? a[i] += 10 : a[i] = 1) << ",";
return 0;
}