You are on page 1of 8

Міністерство освіти і науки України

Національний університет «Львівська політехніка»


Кафедра систем
автоматичного проектування

Звіт
Про виконання лабораторної роботи №6
Вказівники в мові програмування С
Варіант 13

Виконала:
студент групи КН-11з
Вакарова В.В.

Прийняв:
ассистент, к.т.н
Оборська О.В.

Львів 2021
Мета роботи: Навчитися використовувати вказівники при написанні
програм на мові С.

Лабораторне завдання:
1. Навчитися використовувати вказівники при написанні програм на
мові С.
2. Одержати індивідуальне завдання.
3. Побудувати блок-схеми алгоритмів відповідно до завдання.
4. Скласти програми на алгоритмічній мові C згідно завдання.
5. Відлагодити програми, виконати обчислення, проаналізувати
отримані результати.

Завдання 1
З клавіатури вводиться динамічний рядок, виконати наведене нижче
завдання. При доступі до елементів використовувати вказівники.
13. Перевірити, чи входить літера 'S' та через один символ є цифра '1'.

Блок-схема:
Код:
#include<iostream>
int main()
{
char* str = new char;
bool include = false;
puts("Input str");
gets_s(str, 256);
for (int i = 0; i < strlen(str) - 2; i++)
{
if(*(str+i) == 's' && *(str + i + 2) == '1')
include = true;
}
if (include)
{
printf("yes");
}
else
{
printf("no");
}
}

Результат:
Або:

Завдання 2
Виконати наведене нижче завдання:
13. Задано текст. Створити масив вказівників на окремі знаки
пунктуації. Для кожного, вивести частину тексту від нього і до
наступного.
Блок-схема:
Find:
Main:

Код:
#include <iostream>
using namespace std;

bool Find(char text, const char* seperators)


{
for (int i = 0; i < strlen(seperators); i++)
{
if (text == seperators[1])
{
return true;
}
}
return false;
}
int main()
{
char text[200] = "";
gets_s(text, 200);
char* pPoint[200]{};
int c = 0;
for (int i = 0; i < strlen(text); i++)
{
if (Find(text[i], ".,:!?"))
{
pPoint[c] = &text[i];
c++;
}
}
for (int i = 0; i < c - 1; i++)
{
printf("text between\"&c\" and \"&c\" ", pPoint[i][0], pPoint[i + 1][0]);
for (int j = 0; j <= pPoint[i + 1] - pPoint[i]; j++);
{
printf("&c", pPoint[i][j]);

}
printf("\n");
}
return 0;

Результат:

Контрольні запитання:
1. Що таке вказівник?
Вказівник (pointer) – особливий вид змінної, яка зберігає адресу
об’єкту в пам'яті
та таким чином вказує на нього.
Оголошення вказівника: <тип>*<ім’я змінної> ;
“*” – астерікс (зірочка), декларує, що змінна є вказівником.
2. Які оператори для роботи з вказівниками ви знаєте?
Операції з вказівниками:

А) Операція взяття адреси - “&” (амперсанд)


Б) Операція розіменування вказівника “*”
В) Операція присвоювання
Г) Операція збільшення (зменшення) вказівника: E + I; E – I;
Д) Операція складного присвоювання: E += I; E -= I;
Є) Операції інкременту (декременту): E++; E--; ++E; --E;
Е) Операція індексування: E[i] == *(E + i);
Ж) Операція віднімання вказівників
З) Операції відношення
3. Який зв’язок між вказівником та масивом?
Перевага використання масивів вказівників у тому, що можна
оперувати не самими об'єктами, а тільки їхніми адресами, що дає
значний виграш у швидкості виконання програми.
При вирішенні завдання використовувався як двомірний масив, так і
масив вказівників на рядки. Для того щоб поміняти рядки місцями,
досить поміняти місцями вказівники на дані рядки в масиві
вказівників. Масив вказівників сортується так, щоб перший елемент
вказував на “наймолодший” за алфавітом рядок, а самий останній – на
самий “найстарший” рядок. При введенні рядків кожний рядок
порівнюється з нульовим для перевірки умови закінчення вводу.
У мові C при обробці елементів масиву зручно використовувати
вказівник на цей масив. Будь-який доступ до елемента масиву, що
здійснюється операцією індексування, може бути виконаний і за
допомогою вказівника.
Для двовимірних масивів ім'я є вказівником-константою на масив
вказівників- констант. Елементами масиву вказівників є вказівники-
константи на початок кожного з рядків масиву: тому, при
використанні вказівників "точкою відліку" може бути як найперший
елемент масиву, так і перший елемент кожного з рядків, тобто можуть
використовуватися як вказівникконстанта, що задається ім'ям масиву,
так і вказівники на рядки масиву.
Перевага використання вказівників у тому, що застосовуючи їх,
можна маніпулювати не самими даними, а їхніми адресами, що дає
виграш у швидкості виконання програми.
Оскільки, елементи багатомірних масивів у пам'яті розміщаються
послідовно, то можна звертатися до будь-якого елемента такого
масиву, використовуючи вказівник і один індекс.
Висновок: На цій лабораторній роботі я навчилася використовувати
вказівники при написанні програм на мові С.

You might also like