Ім'я файлу: Лабалаторна робота №2 Алгоритмизация.docx
Розширення: docx
Розмір: 222кб.
Дата: 16.11.2020
скачати

МІНІСТЕРСТВО НАУКИ ТА ОСВІТИ УКРАЇНИ
НацІональнИй технІчНИЙ унІверситет

“ХаркІвсЬкий полІтехнІчНий Інститут”
Кафедра програмної ІНЖЕНЕРІЇ ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ УПРАВЛІННЯ


ЛАБОРАТОРНА РОБОТА №1

з дисципліни «Алгоритмізація та програмування»

Виконав:

студент гр. КН-420Б

Бондар Артем
Перевірив:

Доцент каф. ПІІТУ

Білова М. О.

Харків – 2020

Зміст


Зміст 1

Порядок виконання лабораторної роботи 3

Завдання №1 – «Readability» 4

Завдання №2 – «Substitution» 6

Висновок 9

Додаток А 10

Додаток Б 12



Порядок виконання лабораторної роботи



Мета роботи: закріпити знання, пов’язані з використанням масивів, функцій, аргументів командного рядка у мові програмування С на прикладі типу даних string як масиву символів char з використанням хмарного середовища програмування CS50 IDE.

Завдання №1 – «Readability»



Розробити програму, Readability, для обчислення індексу Коулмана-Ліау тексту. Програма повинна запропонувати користувачеві ввести рядок тексту. Програма повинна підрахувати кількість букв, слів і речень у тексті. Буква визначається як будьякий символ від a до z чи будь-який символ від A до Z; слово - будь-яка послідовність символів, розділених пробілами; речення відділяються одне від одного знаками крапки, оклику або питання. Програма повинна надрукувати у консоль «Grade X», де X - рівень оцінки, обчислений за формулою КоулманаЛіау, округлений до найближчого цілого числа. Якщо отримане число індексу дорівнює 16 або вище програма повинна виводити «Grade 16+». Якщо номер індексу менше 1, програма повинна вивести «Before Grade 1».
Основні етапи роботи:

  1. Обмірковування завдання

  2. Розробка алгоритма програми

  3. Написання кода

  4. Тестування коду

  5. Здача коду у CS50 Gradebook


Результати роботи програми:



Скріншот № 1



Скріншот № 2



Скріншот № 3


Завдання №2 – «Substitution»


Розробити програму, яка реалізує шифр простої заміни. Програма повинна прийняти один аргумент командного рядка, ключ для заміни. Сам ключ не повинен враховувати регістр, тому будь-який символ у ключі може бути великим чи малим, що не повинно впливати на поведінку програми. Якщо ваша програма виконується без будь- яких аргументів командного рядка або з кількома аргументами командного рядка, програма повинна надрукувати повідомлення про помилку і повернути з main значення 1 негайно. Якщо ключ недійсний, програма повинна надрукувати повідомлення про помилку на ваш вибір і повернути main значення 1. Програма повинна вивести plaintext:, а потім запропонувати користувачеві ввести текст, який потрібно зашифрувати. Після цього програма повинна вивести ciphertext:, за яким вивести відповідний зашифрований текст. При цьому кожен алфавітний символ у відкритому тексті замінюється відповідним символом в зашифрованому тексті; не алфавітні символи слід виводити без змін. Програма повинна зберігати регістр: великі літери повинні залишатися великими; малі літери повинні залишатися малими. Після виведення зашифрованого тексту слід надрукувати новий рядок. Потім програма повинна закінчити своє виконання, повернувши 0 з main.
Основні етапи роботи:

  1. Обмірковування завдання

  2. Розробка алгоритма програми

  3. Реалізування діаграми діяльності

  4. Написання кода

  5. Тестування коду

  6. Здача коду у CS50 Gradebook


Діаграма діяльності



Результати роботи програми:



Скріншот № 4



Скріншот № 5

Висновок


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


Додаток А


#include

#include

#include

#include
void Grade(string str);
int main(void)

{

string str;

str = get_string("Enter text - ");

Grade(str);

}
void Grade(string str)

{

int Lcount = 0;

int Wcount = 0;

int Scount = 0;

float Grade = 0;

for (int i = 0; i < strlen(str); i++)

{

if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))

{

Lcount++;

}

else if (str[i] == ' ')

{

Wcount++;

}

else if (str[i] == '.' || str[i] == '?' || str[i] == '!')

{

Scount++;

}

}

Wcount++;

Grade = 0.0588 * 100 * (float)Lcount / (float)Wcount - 0.296 * 100 * (float)Scount / (float)Wcount - 15.8;

if (Grade < 16 && Grade >= 0)

{

printf("Grade %i\n", (int)round(Grade));

}

else if (Grade >= 16)

{

printf("Grade 16+\n");

}

else

{

printf("Before Grade 1\n");

}

}

Додаток Б


#include

#include

#include

#include

#include
void upplow(string key, char c);

void Substitute(string key);
int main(int strC, string str[])

{

if (strC == 2)//Количество комманд

{

if (strlen(str[1]) == 26)//Длина введёного ключа

{

for (int i = 0; i < strlen(str[1]); i++)//Проверка каждого елемнта из ключа

{

if (!isalpha(str[1][i]))//Если не является буквой

{

printf("Ключ должен состоять из 26 букв\n");

return 1;

}

for (int j = i + 1; j < strlen(str[1]); j++)//Проверка на повторение

{

if (toupper(str[1][i]) == toupper(str[1][j]))

{

printf("Ключ не должен сожддержать повторяющиеся символы\n");

return 1;

}

}

}

Substitute(str[1]);//Замена

}

else

{

printf("Ключ должен состоять из 26 букв\n");

return 1;

}

}

else

{

printf("Неверный ввод ключа\n");

return 1;

}

return 0;

}

void upplow(string key, char c)//Проверка кажого елемнта на соответсвие с алфавитом

{

string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //массив алфавит

for (int i = 0; i < strlen(alphabet); i++)

{

if (isupper(c))

{

if (c == toupper(alphabet[i]))

{

printf("%c", toupper(key[i]));

}

}

else

{

if (c == tolower(alphabet[i]))

{

printf("%c", tolower(key[i]));

}

}

}

}
void Substitute(string key)

{

string str;

char x;

str = get_string("plaintext: ");

printf("ciphertext: ");

for (int i = 0; i < strlen(str); i++)

{

x = str[i];

if (isalpha(x))//Является ли буквой

{

if (isupper(x))

{

upplow(key, toupper(x));

}

else

{

upplow(key, tolower(x));

}

}

else

{

printf("%c", x);//Печать каждого елемента

}

}

printf("\n");

}
скачати

© Усі права захищені
написати до нас