Міністерство освіти і науки України ВСП “Технічний фаховий коледж Національного університету “Львівська Політехніка” Відділення інформаційних технологій та комп’ютерної техніки Звіт до лабораторної роботи № 1 З дисципліни “ Алгоритми і СД” Виконав Студент групи 31-ПЗ Михайлишин Руслан Львів 2023 Код: #include <iostream> #include <cstring> using namespace std; int WordIndex(char* s, int n) { // Функція для знаходження індексу n-го слова в рядку s ( традиційна обробка масивів ) int len = strlen(s); // Знаходимо довжину рядка s int wordCount = 0; // Лічильник слів bool inWord = false; // Прапорець, що вказує на те, чи знаходимося ми в слові for (int i = 0; i < len; i++) { // Проходимо по всіх символах рядку if (!inWord && s[i] != ' ') { // Якщо ми не знаходимося в слові і зустріли символ, що не є пробілом, то починаємо нове слово inWord = true; // Позначаємо, що ми в слові wordCount++; // Збільшуємо лічильник слів } else if (inWord && s[i] == ' ') { // Якщо ми знаходимося в слові і зустріли символпробіл, то закінчуємо слово inWord = false; // Позначаємо, що ми не в слові } if (wordCount == n) { // Якщо знайдено n-те слово, повертаємо його індекс у рядку return i - (inWord ? 1 : 0); // Якщо ми в слові, віднімаємо 1, щоб отримати індекс букви слова } } return -1; // Якщо n-те слово не знайдено, повертаємо -1 } int WordIndex2(char* s, int n) { // Функція для знаходження індексу n-го слова в рядку s ( адресна арифметика ) int len = strlen(s); // Знаходимо довжину рядка s int wordCount = 0; // Лічильник слів bool inWord = false; // Прапорець, що вказує на те, чи знаходимося ми в слові char* p = s; // Вказуємо на початок рядка s while (p < s + len) { // Проходимося по всім символам у рядку s if (!inWord && *p != ' ') { // Якщо ми не знаходимось в слові і поточний символ не є пробілом, то починаємо нове слово inWord = true; wordCount++; // Збільшуємо лічильник слів } else if (inWord && *p == ' ') { // Якщо ми знаходимось в слові і поточний символ є пробілом, то закінчуємо слово inWord = false; } if (wordCount == n) { // Якщо знайдено n-те слово, повертаємо його позицію return p - s - (inWord ? 1 : 0); } p++; // Переходимо до наступного символу } return -1; // Якщо n-те слово не знайдено, повертаємо -1 } int main() { char s[] = "You can steer yourself"; // вказаний текст у s рядку int n = 3; // номер слова у s рядку int index = WordIndex(s, n); // визначення позиції початку в рядку ( трад.обробка масивів) cout << "Traditional array processing: " << index << endl; index = WordIndex2(s, n); // визначення позиції початку в рядку ( адресна арифметика) cout << "Address processing arithmetic: " << index << endl; return 0; } Компіляція : Висновок : Я отримав практичні навички роботи з масивами і вказівниками.