Лабораторная работа 8 Вариант 8 Тема работы массивы Цель научиться использовать массивы Задание
Скачать 118.82 Kb.
|
Лабораторная работа №8 Вариант №8 Тема работы: массивы Цель: научиться использовать массивы Задание 1. Группа студентов пришла в бассейн, в котором 4 дорожки для плавания. Инструктор сообщил, что группа будет плавать на дорожке №3. Сколько информации получили студенты из этого сообщения? 2. При регистрации в системе каждому пользователю выдаётся пароль, состоящий из 15 символов и содержащий только символы из 12-буквенного набора А, В, Е, К, М, Н, О, Р, С, Т, У, X. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируются одинаковым и минимально возможным количеством бит. Кроме собственно пароля для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено 12 байт. Определите объём памяти, необходимый для хранения сведений о 50 пользователях. 3. Найти мощность алфавита необходимую для записи сообщения, содержащего 2048 символов, если его объем составляет 512 Мбайт?
Задание №1 1.Код приложения. #include #include #include #include ”stdafx.h” int tmain(int argc, _TCHAR* argv[]) { using namespace std; setlocale(LC_ALL, "Russian"); cout << "Группа студентов пришла в бассейн, в котором N дорожек для плавания.\nИнструктор сообщил, что группа будет плавать на дорожке k.\nСколько информации получили студенты из этого сообщения?\n"; int N; // количество дорожек для плавания int k; // номер дорожки, на которой будут плавать студенты cout << "N = "; cin >> N; cout << "k = "; cin >> k; // так как все события p(x) равновероятны, то используем формулу Хартли: I = log2(N) double I = log(N) / log(2); cout << "Сообщение: 'группа будет плавать на дорожке " << k << "' весит " << I << " бит."; system("pause"); return 0; } #include #include #include #include ”stdafx.h” int tmain(int argc, _TCHAR* argv[]) { using namespace std; setlocale(LC_ALL, "Russian"); cout << "При регистрации в системе каждому пользователю выдаётся пароль,\nсостоящий из n символов и содержащий только символы из a - буквенного набора.\n"; cout << "В базе данных для хранения сведений о каждом пользователе отведено одинаковое\nи минимально возможное целое число байт. При этом используют посимвольное\n"; cout << "кодирование паролей все символы кодируются одинаковым и минимально возможным\nколичеством бит. Кроме собственно пароля для каждого пользователя в системе\n"; cout << "хранятся дополнительные сведения, для чего отведено s2 байт.\nОпределите объём памяти, необходимый для хранения сведений о k пользователях.\n"; int s; // размер всех сведений о пользователе в байтах int s1; // размер пароля пользователя в байтах int s2; // размер дополнительных сведений о пользователе в байтах int n; // количество символов в одном пароле int a; // количество символов в алфавите int k; // количество пользователей cout << "n = "; cin >> n; cout << "a = "; cin >> a; cout << "s2 = "; cin >> s2; cout << "k = "; cin >> k; s1 = ceil((ceil(log(a)/log(2))*n)/8); // ceil(log(a)/log(2)) - количество бит для кодирования одного символа с алфавитом a // ceil((...*n)/8) - количество байт для всего пароля из n символов s = (s1 + s2) * k; cout << "Объём памяти, требуемый для кодирования паролей и дополнительной информации для " << k << " людей - " << s << " байт\n"; system("pause"); return 0; } 2. Результат работы приложения в консоли. 3.Блок-схемы.
1.Код приложения. #include #include #include #include ”stdafx.h” int tmain(int argc, _TCHAR* argv[]) { using namespace std; setlocale(LC_ALL, "Russian"); cout << "При регистрации в системе каждому пользователю выдаётся пароль,\nсостоящий из n символов и содержащий только символы из a - буквенного набора.\n"; cout << "В базе данных для хранения сведений о каждом пользователе отведено одинаковое\nи минимально возможное целое число байт. При этом используют посимвольное\n"; cout << "кодирование паролей все символы кодируются одинаковым и минимально возможным\nколичеством бит. Кроме собственно пароля для каждого пользователя в системе\n"; cout << "хранятся дополнительные сведения, для чего отведено s2 байт.\nОпределите объём памяти, необходимый для хранения сведений о k пользователях.\n"; int s; // размер всех сведений о пользователе в байтах int s1; // размер пароля пользователя в байтах int s2; // размер дополнительных сведений о пользователе в байтах int n; // количество символов в одном пароле int a; // количество символов в алфавите int k; // количество пользователей cout << "n = "; cin >> n; cout << "a = "; cin >> a; cout << "s2 = "; cin >> s2; cout << "k = "; cin >> k; s1 = ceil((ceil(log(a)/log(2))*n)/8); // ceil(log(a)/log(2)) - количество бит для кодирования одного символа с алфавитом a // ceil((...*n)/8) - количество байт для всего пароля из n символов s = (s1 + s2) * k; cout << "Объём памяти, требуемый для кодирования паролей и дополнительной информации для " << k << " людей - " << s << " байт\n"; system("pause"); return 0; } 2. Результат работы приложения в консоли. 3.Блок-схемы.
1.Код приложения. #include #include #include #include ”stdafx.h” int tmain(int argc, _TCHAR* argv[]) { using namespace std; setlocale(LC_ALL, "Russian"); cout << "Найти мощность алфавита необходимую для записи сообщения\n"; cout << "содержащего k символов, если его объем составляет v Мбайт?\n"; int k; // количество символов в сообщении double v; // объём сообщения в Мбайтах double i; // объём одного символа int nMax; // максимальная мощность алфавита int nMin; // минимальная мощность алфавита cout << "k - "; cin >> k; cout << "v - "; cin >> v; i = floor((v * 1024 * 1024 * 8) / k); nMax = pow(2, i); nMin = pow(2, i-1); cout << "мощность алфавита: от " << nMin+1 << " (2^" << i-1 << " + 1) до " << nMax << " (2^" << i << ")\n"; system("pause"); return 0; } 2. Результат работы приложения в консоли. 3.Блок-схемы. |