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

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

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

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

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

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування 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-15khavkin #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). Виведені обидві матриці та визначник. Всі розрахунки були перевірені калькулятором. Зроблено звіт з лабораторної роботи та вчасно надіслано викладачу на перевірку.
Антиботан аватар за замовчуванням

19.06.2023 18:06-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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