Uploaded by oldtownroadukr

Лабoраторна.1

advertisement
Міністерство освіти і науки України
ВСП “Технічний фаховий коледж Національного університету
“Львівська Політехніка”
Відділення інформаційних технологій
та комп’ютерної техніки
Звіт до лабораторної роботи № 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;
}
Компіляція :
Висновок :
Я отримав практичні навички роботи з масивами і вказівниками.
Download