DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до модульної контрольної роботи № 2 з дисципліни «Алгоритмізація та програмування 1»

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
ООП
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2021
Тип роботи:
Звіт
Предмет:
Алгоритмізація та програмування
Група:
ТР-15
Коротко про документ

Про що ця робота

Звіт містить програмну реалізацію дешифрування повідомлення за допомогою оберненої матриці мовою C. У роботі виконано розрахунки визначника матриці та знаходження векторів результатів за варіантом.

У роботі розглядаються

  • Програмування мовою C
  • Робота з матрицями
  • Обчислення визначника
  • Шифрування та дешифрування
  • Векторні обчислення
  • Модульна контрольна робота

Зміст і розділи

  1. Завдання за варіантом
  2. Код програми
  3. Хід виконання роботи
Для кого:Студенти технічних спеціальностей, викладачі програмування
Викладачі:Не вказано

Ключові поняття

матрицявизначникобернена матрицядешифруваннямодуль 26функціямасивмова C

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 1: Базові концепції програмування ЗВІТ до модульної контрольної роботи № 2 Варіант 16(1) Дата «15» грудня 2021 Завдання за варіантом: (16) / Тобто варіант 8, тобто 4-й. Матриця шифрування:  7  6  4  5   ЗАКОДОВАНЕ ПОВІДОМЛЕННЯ: «kpah» Варіант роботи коли ми беремо «а» як символ під номером 1: / Та варіант виконання задачі коли ми беремо «а» як символ під номером 0: / Код програми: На перевірку буде надісланий варіант програми, за яким «а» під номером 1. Посилання на Repl.it: https://replit.com/join/jnhrpcfmna-tr-15[ім’я автора приховано] #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> void modar(int ar[2][2], float ar2[2][2],float deter){ float n; int mat[2][2]; for(int i=0; i<2;i++)//Знаходження оберненої матриці без визначника for(int j=0;j<2;j++) mat[j][i]=pow(-1,i+j)*ar[1-i][1-j]; for(int i=0; i<2;i++){ for(int j=0;j<2;j++){ int k=1; int mo = 0; n = ar2[i][j]; while(mo!=1){ if(n<0){ if(n != round(n)){ ar2[i][j]=(mat[i][j]+26*k)/deter; n=ar2[i][j]; }else{ ar2[i][j]=ar2[i][j]+26*k; n=ar2[i][j]; } }else if(n != round(n)){ ar2[i][j]=(mat[i][j]+26*k)/deter; n=ar2[i][j]; }else{ ar2[i][j]=round(n); mo=1; } k++; } } } } void printMatrix(int arr[2][2]){//Метод для виводу матриці printf("Задана матриця"); for(int i=0; i<2;i++){ printf("\n"); for(int j=0;j<2;j++){ printf("\t%d\t", arr[i][j]); } } } float getN(int arr[2][2]){//Метод для обчислювання визначинка 2 float N=0; N=arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0]; if (N == 0){ printf("\nВизначник дорівнєю 0, обчислення неможливе \n"); } else { printf("\nВизначник: %f", N); } return N; } int main(void){ int a[2][2], i, j; float mat[2][2]; float det; printf("Ввести початкову данні для матриці:\n"); for(i = 0; i < 2; i++)//Ввод початкових данних for(j = 0; j < 2; j++) scanf("%d", &a[i][j]); printMatrix(a); det = getN(a); for(int i=0; i<2;i++)//Знаходження оберненої матриці for(int j=0;j<2;j++) mat[j][i]=pow(-1,i+j)*a[1-i][1-j]/det; printf("\nОбернена матриця");//Вивід оберненої матриці for(int i=0; i<2;i++){ printf("\n"); for(int j=0;j<2;j++){ printf(" %.4f ", mat[i][j]); } } printf("\nОбернена матриця після обрацювання"); modar(a, mat,det); int arr3[2][2]; for(int i=0; i<2;i++){ printf("\n"); for(int j=0;j<2;j++){ arr3[i][j]=round((int)mat[i][j]); printf(" %d ", arr3[i][j]); } } printf("\nВвести початкову строку:"); char str1[5]=""; int kod[4]; scanf("%4s", str1); printf("\nПочаткова строка: %s", str1); char alf[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; printf("\nЇї код:"); for(int i=0;i<4;i++){ for(int j=0;j<26;j++){ if(str1[i]==alf[j]){ kod[i]=j+1; } } printf(" %d ",kod[i]); } int arr4[2][1]; int f=0; for(int i = 0; i < 2; i++){ arr4[i][0]=arr3[i][0]*kod[f]+arr3[i][1]*kod[f+1]; } f=f+2; printf("\nВектор результатів для %c%c: після mod 26:",str1[0],str1[1]); for(int i = 0; i < 2; i++){ if(arr4[i][0]>26) arr4[i][0]=arr4[i][0]%26; kod[i]=arr4[i][0]; printf("\n%d", arr4[i][0]); } for(int i = 0; i < 2; i++){ arr4[i][0]=arr3[i][0]*kod[f]+arr3[i][1]*kod[f+1]; } printf("\nВектор результатів для %c%c: після mod 26:",str1[2],str1[3]); for(int i = 0; i < 2; i++){ if(arr4[i][0]>26) arr4[i][0]=arr4[i][0]%26; kod[i+2]=arr4[i][0]; printf("\n%d", arr4[i][0]); } printf("\nКод отриманого повідомлення:\n"); for(int i=0; i<4;i++){ printf("%d ", kod[i]); } printf("\nОтримане повідомлення:\n"); for(int i=0; i<4;i++){ printf("%c", alf[kod[i]-1]); } return 0; } У контрольній роботі потрібно було знайти зашифроване повідомлення. Для цього було знайдено обернену матрицю до вхідної матриці 2 на 2, за варіантом. Перевірені елементи матриці на натуральність, якщо елемент не підходить, то він змінюється, поки не стане натуральним. Після цього знаходиться попарно вектор результатів згідно до вхідного зашифрованого повідомлення. Потім ці два вектора по черзі можаться на отриману перед цим матрицю. Таким чином знаходиться код отриманого повідомлення. Після цього знаходиться вже саме повідомлення за допомогою коду, який ми знайшли. Присвоєння змінним для виконання завдання було виконану за допомогою зчитування з командної строки. Було обчислено завдання згідно до варіанту 4(16). Виведені обидві матриці та визначник. Всі розрахунки були перевірені калькулятором. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!