Главная страница
Навигация по странице:

  • 3. Найти мощность алфавита необходимую для записи сообщения, содержащего 2048 символов, если его объем составляет 512 Мбайт Выполнение работы

  • Задание №1 1.Код приложения.

  • 2. Результат работы приложения в консоли.

  • Задание №2 1.Код приложения.

  • Лабораторная работа 8 Вариант 8 Тема работы массивы Цель научиться использовать массивы Задание


    Скачать 118.82 Kb.
    НазваниеЛабораторная работа 8 Вариант 8 Тема работы массивы Цель научиться использовать массивы Задание
    Дата01.03.2023
    Размер118.82 Kb.
    Формат файлаdocx
    Имя файла8.docx
    ТипЛабораторная работа
    #963591

    Лабораторная работа №8

    Вариант №8

    Тема работы: массивы

    Цель: научиться использовать массивы
    Задание
    1. Группа студентов пришла в бассейн, в котором 4 дорожки для плавания. Инструктор сообщил, что группа будет плавать на дорожке №3. Сколько информации получили студенты из этого сообщения?
    2. При регистрации в системе каждому пользователю выдаётся пароль, состоящий из 15 символов и содержащий только символы из 12-буквенного набора А, В, Е, К, М, Н, О, Р, С, Т, У, X. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируются одинаковым и минимально возможным количеством бит. Кроме собственно пароля для каждого пользователя в системе хранятся дополнительные сведения, для чего отведено 12 байт. Определите объём памяти, необходимый для хранения сведений о 50 пользователях.

    3. Найти мощность алфавита необходимую для записи сообщения, содержащего 2048 символов, если его объем составляет 512 Мбайт?
      1. Выполнение работы
      2. Задание №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. Задание №2



    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. Задание №2


    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.Блок-схемы.




    написать администратору сайта