В сообщении 16+8+4+4=32 символа. Вероятность появления символа А равна 16/32=1/2, символа Б 8/32=1/4, символов В и Г - 1/8. Следовательно, для минимизации длины сообщения (условие "б") самым коротким должен быть символ А, несколько длиннее может быть символ Б и самые длинные - символы В и Г. По этой причине вариант 4) с равной длиной кодов не рассматриваем. Далее, достаточно компактными выглядят коды в варианте 2), но А=0 и В=01 нарушают условие "а" (код 0 является началом кода 01). Остаются варианты 1) и 3) В варианте 1) нарушений условий нет. В варианте 3) код буквы Б 01 является началом кода буквы В 011 и это нарушает условие "а". ответ: 1)
int main() { int i, n; cout<<"Введите количество элементов: "; cin>>n; int a[n]; for (i=0; i<n; i++) { cout<<"Введите "<<i+1<<"-й элемент: "; cin>>a[i]; } int sump=0, koln=0; for (i=0; i<n; i++) { if (a[i]<0) koln++; else if (a[i]>0) sump+=a[i]; } cout<<"Сумма положительных равна "<<sump<<endl; cout<<"Количество отрицательных равно "<<koln<<endl; system("PAUSE"); return 0; }
Тестовое решение: Введите количество элементов: 10 Введите 1-й элемент: 4 Введите 2-й элемент: 0 Введите 3-й элемент: -2 Введите 4-й элемент: 6 Введите 5-й элемент: 5 Введите 6-й элемент: 0 Введите 7-й элемент: -5 Введите 8-й элемент: -2 Введите 9-й элемент: 7 Введите 10-й элемент: -4 Сумма положительных равна 22 Количество отрицательных равно 4 Для продолжения нажмите любую клавишу . . .