1. Мощность - 64 символа, Объем информации - 30 байт
2. 16 символов
3. 2 и 3 байта соответственно
Объяснение:
1. Формула(Ф1) объема информации , где I - объем в битах, k - количество символов, i - вес одного символа. Подставляем значения: I=40*6=240бит. Т.к. 1байт = 8 бит, то I= 240/8=30 байт.
Мощность алфавита (N) вычисляется по формуле(Ф2) , где i - информационный вес одного символа. Подставляем значения: символа.
2. Объем сообщения 0,5 КБайта, а т.к 1 КБ= байт = бит, то объем сообщения равен бит.
Количество символов в тексте = кол-во символов в строке * кол-во строк * кол-во страниц = символов.
По формуле Ф1 получаем, что , откуда вес одного символа равен бита.
По формуле Ф2 получаем символов
3. Объем первого сообщения бит, второго - бит. Количество символов первого сообщения символов, второго - символов. По формуле Ф1 получаем, что . Подставляем значения: полученные значения в БИТАХ.
т.к. 1 байт = 8 бит, то получаем значения в байтах
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <locale.h> //Максимальная длина вводимой строки#define Mx_s 255 //Массив символов, которые //необходиом удалить в начале и конце строкиchar sim[] = { '\t', ' '};//Функция проверяющая входит ли данный символ c в массив simint char_in_arr(char c) { int f = 0; for (int i = 0; i < strlen(sim); i++) { if (c == sim[i]) { f = 1; break; } } return f;}
int main(){ setlocale(LC_ALL, "rus"); //Вводимая строка char s[Mx_s]; //Ввод данных printf("\n >> Введите строку\n <<"); fgets(s, Mx_s, stdin); int l = strlen(s) - 1; //Переменные для определения отсечений в начале и конце строки int pos_b = 0; int pos_e = l-1; //Проверяем начало строки //Если нам попадаются удаляемые символы то увеличиваем значение pos_b for (;(pos_b < l) && char_in_arr(s[pos_b]); pos_b++) {} //Проверяем конец строки //Если нам попадаются удаляемые символы то уменьшаем значение pos_e for (;(pos_e >= 0) && (char_in_arr(s[pos_e])); pos_e--) {} //Длина отсеченного отрезка int l2 = pos_e - pos_b + 1; //Если длина корректа то if (l2 > 0) { //Строка для результата char s2[Mx_s]; //Идем по строке s1 int pos = 0; for (int i = pos_b, k_s = 0; i <= pos_e; i++) { //Считаем пробелы, идущие подряд if (s[i] == ' ') k_s++; else k_s = 0; //Если это не подряд идущие пробел if (k_s < 2) { //записываем символ в s2 s2[pos] = s[i]; pos++; } } s2[pos] = '\0'; //Вывод результат printf("\n >> Результат\n <<"); fputs(s2,stdout); } else //Строка пуста/Содержит только символы из массива sim printf("\n >> Ошибка в строке\n"); system("pause>>void"); return 0;}
1. Мощность - 64 символа, Объем информации - 30 байт
2. 16 символов
3. 2 и 3 байта соответственно
Объяснение:
1. Формула(Ф1) объема информации
, где I - объем в битах, k - количество символов, i - вес одного символа. Подставляем значения: I=40*6=240бит. Т.к. 1байт = 8 бит, то I= 240/8=30 байт.
Мощность алфавита (N) вычисляется по формуле(Ф2)
, где i - информационный вес одного символа. Подставляем значения:
символа.
2. Объем сообщения 0,5 КБайта, а т.к 1 КБ=
байт =
бит, то объем сообщения равен
бит.
Количество символов в тексте = кол-во символов в строке * кол-во строк * кол-во страниц =
символов.
По формуле Ф1 получаем, что
, откуда вес одного символа равен
бита.
По формуле Ф2 получаем
символов
3. Объем первого сообщения
бит, второго -
бит. Количество символов первого сообщения
символов, второго -
символов. По формуле Ф1 получаем, что
. Подставляем значения:
полученные значения в БИТАХ.
т.к. 1 байт = 8 бит, то получаем значения в байтах![\left \{ {{i_{1} =\frac{16}{8} }=2, \atop {{{i_{2} =\frac{24}{8}} = 3.\right.](/tpl/images/1463/7983/d1704.png)
//Максимальная длина вводимой строки#define Mx_s 255
//Массив символов, которые //необходиом удалить в начале и конце строкиchar sim[] = { '\t', ' '};//Функция проверяющая входит ли данный символ c в массив simint char_in_arr(char c) { int f = 0; for (int i = 0; i < strlen(sim); i++) { if (c == sim[i]) { f = 1; break; } } return f;}
int main(){ setlocale(LC_ALL, "rus"); //Вводимая строка char s[Mx_s]; //Ввод данных printf("\n >> Введите строку\n <<"); fgets(s, Mx_s, stdin); int l = strlen(s) - 1; //Переменные для определения отсечений в начале и конце строки int pos_b = 0; int pos_e = l-1; //Проверяем начало строки //Если нам попадаются удаляемые символы то увеличиваем значение pos_b for (;(pos_b < l) && char_in_arr(s[pos_b]); pos_b++) {}
//Проверяем конец строки //Если нам попадаются удаляемые символы то уменьшаем значение pos_e for (;(pos_e >= 0) && (char_in_arr(s[pos_e])); pos_e--) {}
//Длина отсеченного отрезка int l2 = pos_e - pos_b + 1; //Если длина корректа то if (l2 > 0) { //Строка для результата char s2[Mx_s];
//Идем по строке s1 int pos = 0; for (int i = pos_b, k_s = 0; i <= pos_e; i++) { //Считаем пробелы, идущие подряд if (s[i] == ' ') k_s++; else k_s = 0;
//Если это не подряд идущие пробел if (k_s < 2) { //записываем символ в s2 s2[pos] = s[i]; pos++; } } s2[pos] = '\0';
//Вывод результат printf("\n >> Результат\n <<"); fputs(s2,stdout); } else //Строка пуста/Содержит только символы из массива sim printf("\n >> Ошибка в строке\n");
system("pause>>void"); return 0;}