
- •Міністерство освіти і науки україни
- •«Програмування»
- •Чернігів чдту 2013
- •Лабораторна робота № 11. Основи роботи з покажчиками
- •Короткі теоретичні відомості
- •11.1.1Оголошення та ініціалізація покажчиків
- •11.1.2Звернення до даних через покажчики
- •11.1.3Використання кваліфікатора const для покажчиків
- •11.1.4Адресна арифметика
- •11.1.5Нетипізовані вказівники
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 12. Використання покажчиків для обробки масивів
- •Короткі теоретичні відомості
- •11.1.6Приклад формування одновимірного масиву з використанням покажчиків
- •11.1.7Робота з масивами символів через покажчики
- •11.1.8Стандартні функції для роботи з рядками символів
- •11.1.9Масиви покажчиків на рядки символів
- •11.1.10Покажчики на структури Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 13. Використання покажчиків на функції
- •Короткі теоретичні відомості
- •11.1.11Оголошення та ініціалізація матриць
- •11.1.12Матриці як параметри функцій
- •11.1.13Формування та виведення матриць з використанням консолі
- •11.1.14Тотальна обробка даних у матрицях
- •11.1.15Вибіркова обробка матриць
- •11.1.16Перестановки елементів матриці
- •11.1.17Видалення та вставка елементів матриці
- •11.1.18Сортування елементів матриці
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
- •Лабораторна робота № 14. Робота з файлами
- •Короткі теоретичні відомості
- •11.1.19Оголошення шаблону та ініціалізація структур
- •11.1.20Массиви структур
- •11.1.21Введення-виведення структур
- •11.1.22Сортування масивів структур
- •Створення проекту «Результати атестації»
- •11.1.23Інтерфейс користувача для проекту
- •11.1.24Визначення глобальних типів даних програми
- •11.1.25Функція обробки номеру вибраного варіанту
- •11.1.26Функція відображення масиву на консолі
- •11.1.27Додавання нових даних до масиву структур строки в таблицу
- •11.1.28Функція сортування масиву за групою та прізвищем
- •11.1.29Сортування за кількість незадовільних оцінок та середньому балу
- •11.1.30Вибірка студенті, що мають середній бал вище 4
- •11.1.31Підрахунок кількості студентів що мають більше 2-х незадовільних оцінок
- •Завдання для самостійної роботи
- •Вимоги до звіту
- •Контрольні питання
- •Рекомендована література
11.1.8Стандартні функції для роботи з рядками символів
Стандартні бібліотеки мови С надають користувачеві можливість використовувати ряд функцій для опрацювання символьних рядків, а також функцій перетворень рядків символів у числа та зворотних перетворень. Ці функції докладно описані у підручнику [4], стр.152-154. Ознайомтесь із цими функціями і перевірте їх роботу. Майте на увазі, у підручнику є помилка, яку не важко помітити.
У звіті наведіть результати тестування деяких з цих функцій (не менше 2 з кожної групи.)
11.1.9Масиви покажчиків на рядки символів
У практиці програмування зустрічаються задачі в яких доводиться працювати з масивами рядків символів. Прикладом такого масиву може бути список студентів групи. Особливість таких масивів полягає у тому, що майже кожний елемент має свою довжину. Якщо оголошувати такий масив як двовимірний (матриця символів), то ширину такої матриці доведеться вибирати виходячи з найдовшого прізвища. Це призведе до нераціонального використання пам’яті.
Значно краще створити одновимірний масив покажчиків на прізвища і з ним працювати. Нижче наведено приклад, у якому створюється масив покажчиків на рядки. Після ініціалізації масив упорядковується і виводиться на консоль.
//Створення масиву покажчиків на рядки
const char *arrPtrToFio[]={"Жванецький М.В.","Вовк А.П.","Карась П.С."};
//Сортування покажчиків методом вибору
for(int i=0; i<2;i++){
for(int j=1;j<3;j++){
//Порівняння прізвищ
if(strcmp(arrPtrToFio[i], arrPtrToFio[j])>0){
// Обмін покажчиків у масиві
const char *p=arrPtrToFio[i];
arrPtrToFio[i]=arrPtrToFio[j];
arrPtrToFio[j]=p;
}
}
}
//Виведення на консоль
for(int i=0;i<3;i++){
cout<<arrPtrToFio[i]<<endl;
}
Зверніть увагу, під час сортування обмін відбуваеться тільки між покажчиками, а рядки залишаються на місцях.
Ілюстрації до прикладу можна знайти у підручнику [4], стр.159-160.
11.1.10Покажчики на структури Завдання для самостійної роботи
В лабораторній роботі слід створити проект, відповідно до вимог варіантів з таблиць 7.1, 7.2. Номер варіанту вибирайте відповідно до останньої цифри номера залікової книжки.
Таблиця 7.1 передбачає реалізацію таких функцій у проекті:
створення масиву заданим способом;
визначення якоїсь числової характеристики для створеного масиву;
формування нового масиву на основі створеного.
Таблиця 7.1 – Завдання на роботу з масивами |
|||
№ |
Створення масиву |
Числові характеристики |
Формування нового масиву |
1 |
2 |
3 |
4 |
0 |
Random |
Розмах елементів (max-min) |
Видалити парні елементи із масиву |
1 |
Із рядка символів |
Різниця між сумами елементів у парних та непарних позиціях |
Оборот масиву |
2 |
По елементам |
Кількість елементів, що перевищують середнє геометричне |
Вставка елемента в задану позицію |
3 |
Random |
Різниця між середніми арифметичним та геометричним |
Видалення заданого елементу із масиву |
4 |
Із рядка символів |
Різниця між сумами парних та непарних елементів |
Задане число циклічних зсувів ліворуч |
5 |
По елементам |
Середнє відхилення елементів масиву |
Вставка суми елементів у початок масиву |
|
|
|
|
Продовження таблиці 7.1 |
|||
1 |
2 |
3 |
4 |
6 |
Random |
Середні арифметичні значення парних та непарних елементів |
Задане число циклічних зсувів праворуч |
7 |
Із рядка символів |
Дисперсія елементів масиву |
Вставка середнього арифметичного значення в середину масиву |
8 |
По елементам |
Кількість елементів, що перевищують середнє значення |
Пере форматувати масив, спочатку непарні, потім парні |
9 |
Із рядка символів |
Сума елементів, що перевищують середнє значення |
Додати мінімальне значення у початок масиву, а максимальне к кінець |
Таблиця 7.2 передбачає реалізацію у проекті функції для обробки рядка (масиву символів).
Таблиця 7.4 – Завдання на обробку масивів символів |
|
№ |
Завдання |
0 |
Отримати задану кількість символів, від початку рядка |
1 |
Отримати задану кількість символів, від кінця рядка |
2 |
Перетворити рядок цифрових символів у число |
3 |
Перетворити ціле число без знаку у прядок символів |
4 |
Вилучити початкові пробіли з рядка символів |
5 |
Вилучити хвостові пробіли з рядка символів |
6 |
Отримати задану кількість символів, починаючи від заданої позиції |
7 |
Видалити задану кількість символів, починаючи від заданої позиції |
8 |
Вставити задану послідовність символів, починаючи від заданої позиції |
9 |
Отримати позицію заданої послідовності символів |