Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Введення/виведення символів і рядків
Розглянемо функції, якіпризначені для введення/виведення символів і рядків і належать до стандартної бібліотеки (заголовний файл stdio.h).
Введення по одному символу з потоку введення – здійснюється із клавіатури за допомогою функції getchar(), що повертає код уведеного символу:
int getchar(void);
Виведення одного символу на екран – здійснюється функцією putchar(), параметром якої є код виведеного символу:
int putchar(int ch);
Введення символу без відображення на екрані – здійснюється функцією getch()з бібліотеки conio. (заголовний файл conio.h).
char getch(void);
У цієї функції, як і в getchar немає параметру. Крім того, значення, що повертається функцією, може бути присвоєно символьній змінній типу char.
Введення рядка символів із клавіатури – здійснюється функцією gets(), параметром якої є покажчик на початок того рядка, у який вводяться дані. Функція повертає той же самий покажчик:
char *gets(char *string);
Функція gets читає все, що набирається доти, поки не натиснута клавіша Enter. Ця функція дозволяє вводити пробіли, чим відрізняється від іншої функції введення scanf, що читає всі символи доти, поки не зустрінеться пробіл (табуляція, кінець рядка).
Виведення рядка символів на екран – здійснюється функцією puts(), параметром якої є покажчик на початок того рядка, з якого виводяться дані. Функція повертає кількість виведених символів:
int puts(char *string);
Бібліотечні функції для роботи з символами та рядками
У мовах С/С++ передбачені спеціальні функції, призначені для роботи із символами (табл. 1). Частина функцій перевіряють одиночні символи й повертають ненульове значення (true) або нуль (false). Наприклад, isdigit(c) дозволяє перевірити, чи є зміннаc однієї із цифр між 0 і 9. Інша частина функцій у таблиці 10.1 забезпечує конвертування регістра букв. Так, tolower(c) повертає версію букви c у нижньому регістрі, тобто малу літеру. Наприклад, інструкція cout <<tolower('F') виведе на екран символ f.
Наступний фрагмент коду використовується як елемент циклу do-while, у якому користувач для продовження циклу повинен увести 'Y'. Цикл буде виконуватися незалежно від того, у якому регістрі уведений символ: 'y' або 'Y'.
do{ // тіло циклу
}
while (toupper(choice) == 'Y')
Параметром функцій у таблиці 5.1 є змінна c типу char або int, а для звертання до функцій підключається заголовний файл ctype.h.
Табл. 1. Функції для роботи із символами
Тип
| Функція
| Опис
| int
| isalnum(c)
| повертає true, якщо c – буква або цифра
| int
| isalpha(c)
| повертає true, якщо c – буква
| int
| isblank(c)
| повертає true, якщо c – пробіл або символ табуляції
| int
| isdigit(c)
| повертає true, якщо c – цифра
| int
| islower(c)
| повертає true, якщо c – символ у нижньому регістрі
| int
| isupper(c)
| повертає true, якщо c – символ у верхньому регістрі
| int
| isspace(c)
| повертає true, якщо c – пробіл, табуляція, повернення каретки, новий рядок
| int
| tolower(c)
| повертає символ c у нижньому регістрі
| int
| toupper(c)
| повертає символ c у верхньому регістрі
|
Для обробки рядків призначені функції, прототипи яких утримуються у файлі string.h. Найбільш популярні з них наведені в таблиці 2.
Табл. 2. Функції обробки рядків
Прототип
| Опис
| int strlen(char*s)
| Довжина рядка, але без нуль-символу кінця рядка
| int strcmp(char*s1, char*s2)
| Порівнює рядки s1 і s2, повертає 0 (рівні), < 0 (s1<s2), > 0 (s1 > s2)
| char *strcpy(char*s1, char*s2)
| Копіювання рядка s2 у рядок s1; повертає s2
| char *strcat(char*s1, char*s2)
| Додає s2 до рядка s1; перший символ s2 записується поверх нуль-символу s1; повертає s1
| char *strchr (char*s, char ch)
| Пошук у рядку s першого входження символу ch
|
Постановка задачі
1. Скласти програму на С++, у якій створюється одновимірний чисельний масив і виконується його обробка відповідно до варіанта завдання.
2. Скласти програму на С++ для роботи з рядками відповідно свого варіанту, використовуючи по можливості бібліотечні функції.
Варіанти
№
| Завдання
| 1.
| Створити масив з 30-ти натуральних чисел від 1 до 10. Елементи масиву послідовно зростають від 1 до 10, потім після 10 слідує 1, 2 і так далі.Вивести масив на екран в один рядок за допомогою cout.
Вивести на екран таблицю ASCII (стовпці - три старших двійкових розряди таблиці ASCII, рядки - чотири молодших розряди).
| 2.
| Створити масив з 30-ти парних чисел 2, 4, 6,... Вивести масив на екран в один рядок за допомогою printf. Вивести на екран тільки елементи, які кратні 4.
Скласти програму, що у рядку, уведеному користувачем, підраховує число входжень того або іншого символу. Написати функціюcount обчислення числа входжень у рядок s символу c:
int count(char *s, char c);
| 3.
| Створити масив з 30-ти непарних чисел 1, 3, 5,.. Вивести масив на екран за допомогою printf. Вивести на екран тільки елементи, які кратні 3.
Скласти програму, що скорочує рядок на n символів. Якщо довжина вихідного рядка менше або дорівнює n, рядок не міняється. Написати функцію «скорочування» із прототипом:
void truncate(char *s, int n);
| 4.
| Створити масив з 10-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. Вивести на екран тільки елементи, які поданіпарними числами.
Скласти програму, що у рядку, уведеному користувачем, перетворить першу букву кожного слова в прописну. Написати функцію такого перетворення, що має прототип:
void capitalize(char *s);
| 5.
| Створити масив з 10-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. Обчислити суму 5-гоі 10-гоелементів масиву, доступ до яких забезпечується записом «покажчик-зсув».
Скласти програму, що дозволяє для рядка, уведеного користувачем, визначити кількість слів, що починаються із цифри.
| 6.
| Створити масив з 10-ти чисел-кубів 13, 23 33,.. Вивести масив на екран за допомогою cout. Обчислити різницю 6-го і 10-го елементів масиву, доступ до яких забезпечується записом «покажчик-зсув».
Скласти програму, що дозволяє для рядка, уведеного користувачем, визначати: (1) його довжину; (2) кількість цифр; (3) кількість букв. Вибір дії здійснюється за допомогою меню.
| 7.
| Користувач уводить елементи в цілочисельний масив mas[5] за допомогою cin. Вивести отриманий масив на екран за допомогою cout. Обчислити і вивести суму елементів масиву з непарними індексами.
Скласти програму, що додає до слова пробіли ліворуч і праворуч так, щоб центрувати слово й зробити його довжину рівноюn. Якщо довжина слова більше або дорівнює n, слово не міняється. Якщо загальне число пробілів непарне, то праворуч ставиться додатковий пробіл. Написати функцію центрування слова, що має прототип:
void center(char *s, int n);
| 8.
| Користувач уводить елементи в цілочисельний масив mas[5] за допомогою операції cin і запису «покажчик-зсув». Вивести масив на екран за допомогою cout. Визначити суму елементів масиву й вивести її на екран.
Вивести на екран всі букви й цифри таблиці ASCII.
| 9.
| Користувач вводить елементи в цілочисельний масив mas[5] за допомогою функції scanf. Вивести масив на екран за допомогою printf. Визначити суму елементів зпарними індексамиі вивести її на екран.
У масиві рядків, уведених користувачем, знайти перші входження символу 'm'. Використати функцію strchr().
| 10.
| Створити і вивести на екран масив з 30-ти непарних чисел 1, 3, 5,... Користувач визначає номери елементів, суму яких потрібно обчислити. Вивести суму на екран.
У масиві рядків, уведених користувачем, знайти перші входження символів 's' і 'S'. Використати функції strchr(),tolower().
| 11.
| Створити і вивести на екран масив з 10-ти чисел-кубів 13, 23 33, … За допомогою запису «покажчик-індекс» визначити суму елементів масиву й вивести її на екран.
Скласти програму сортування масиву рядків, уведених користувачем. Використати функцію strcmp().
| 12.
| Створити і вивести на екран масив з 10-ти чисел-квадратів 12, 22 32,.. За допомогою запису «покажчик-індекс» визначити суму непарних елементів масиву й вивести її на екран.
Скласти програму, що видаляє всі пробіли в рядку, уведеному користувачем.
| 13.
| Створити і вивести на екран масив з 10-ти чисел-квадратів 12, 22 32,.. За допомогою запису «покажчик-індекс» визначити суму парних елементів масиву, суму елементів і вивести ці дані на екран.
Скласти програму, що дозволяє для двох рядків, уведених користувачем, виконати: (1) порівняння; (2) копіювання; (3) конкатенацію. Вибір дії здійснюється за допомогою меню.
| 14.
| Створити і вивести на екран масив з 30-ти непарних чисел 1, 3, 5,..... Користувач визначає номери елементів, суму яких потрібно обчислити. Знайти суму за допомогою запису «покажчик-індекс».
Скласти програму, що дозволяє для рядка, уведеного користувачем, визначати: (1) його довжину; (2) кількість слів; (3) кількість подвійних пробілів. Вибір дії здійснюється за допомогою меню.
| 15.
| Користувач уводить елементи в цілочисельний масив mas[10]. Вивести масив на екран за допомогою printf. Знайти номери непарних елементів і вивести ці номери на екран.
Скласти програму, що підраховує число слів у рядку, уведеному користувачем, а також формує масив з довжин слів.
| 16.
| Користувач уводить елементи в цілочисельний масив mas[10]. Вивести масив на екран за допомогою cout. Знайти номери парних елементів і суму цих номерів.
Написати функцію, що повертає значення 0 (не паліндром) і 1 (паліндром) і яка маєпрототип:
int palindrome(char *s);
| 17.
| Користувач уводить елементи в цілочисельний масив mas[10] за допомогою функції scanf.. Вивести масив на екран за допомогою printf. Знайти максимальний елемент масиву й вивести на екран значення елемента і його номер.
Скласти програму, що визначає, чи є слово, уведене користувачем, паліндромом.
| 18.
| Користувач уводить елементи в цілочисельний масив mas[10] за допомогою функції scanf і запису «покажчик-зсув». Вивести масив на екран за допомогою printf. Знайти мінімальний елемент масиву й вивести на екран значення елемента і його номер.
Скласти програму, що читає слово, уведене користувачем, і міняє порядок букв у слові на зворотний. Написати функцію обертання слова, що має прототип:
char * word_reverse(char *s);
| 19.
| Користувач уводить елементи в цілочисельний масив mas[10] за допомогою операції cin і запису «покажчик-зсув». Вивести масив на екран за допомогою cout.Визначити, чи є в масиві рівні елементи, і вивести відповідне повідомлення на екран.
Вивести на екран таблицю ASCII, а також малі літери, код яких кратний 3.
| 20.
| Користувач уводить елементи в цілочисельнні масиви mas1[5] і mas2[5]. Вивести масиви на екран за допомогою cout.Визначити, чи є рівні елементи у двох масивах, і вивести відповідне повідомлення на екран.
Скласти програму, що додає до рядка пробіли ліворуч, роблячи довжину рядка рівної n. Якщо довжина вихідного рядка більше або дорівнює n, рядок не міняється. Написати функцію додавання пробілів, що має прототип:
void blank_left(char *s, int n);
| 21.
| Користувач уводить елементи в цілочисельнні масиви mas1[5] і mas2[5]. Вивести масиви на екран за допомогою printf. Визначити, чи є рівні елементи із двох масивів. Порівняння елементів виконувати шляхом переміщення покажчика за допомогою запису «покажчик-зсув».
Скласти програму, що підраховує число слів у рядку, уведеного користувачем. Для цього написати функцію із прототипом:
int num_word (char *s);
| 22.
| Користувач уводить елементи в цілочисельні масиви mas1[7] і mas2[7]. Вивести масиви на екран за допомогою cout.Визначити, чи є рівні елементи із двох масивів. Порівняння елементів виконувати шляхом переміщення покажчика за допомогою запису «покажчик-індекс».
Вивести на екран таблицю ASCII, а також прописні букви, код яких кратний 5.
| 23.
| Створити масив з 6-ти чисел-квадратів 12, 22 32,.. Вивести масив на екран за допомогою printf. З використанням запису «покажчик-індекс» вивести адреси елементів; кожну адресу в окремий рядок.
Скласти програму, що підраховує число малих літер у рядку, уведеної користувачем. Для цього написати функцію із прототипом:
int num_lower(char *s);
| 24.
| Створити масив з 6-ти чисел-кубів 13, 23 33,.. Вивести масив на екран за допомогою cout. З використанням запису «покажчик-зсув» вивести адреси елементів; адреси відокремити табуляцією.
Скласти програму, що підраховує число прописних букв у рядку, уведеного користувачем. Для цього написати функцію із прототипом:
int num_upper (char *s);
| 25.
| Користувач уводить елементи в цілочисельний масив mas[5] за допомогою cin і запису «покажчик-зсув». Вивести масив на екран звикористанням операції cout.Знайти максимальний елемент масиву й вивести на екран значення елемента і його номер.
Скласти програму, що підраховує число слів у рядку, уведеного користувачем. Для цього написати функцію із прототипом:
int num_word (char *s);
|
Методичні вказівкі
1. Для відділення елементів масиву на екрані використовувати табуляцію, пробіли або маніпулятори (при роботі з cout).
2. Операції над рядками оформляти у вигляді окремих функцій.
Зміст звіту
Звіт з виконаної роботи включає наступні розділи:титульний лист, постановка задачі, варіант завдання, текст програми, скріншот з результатами роботи програми, висновки.
Лабораторна робота5. «Двовимірні масиви» (2 год.)
Ціль роботи: Формування уміння визначати й ініціалізувати багатовимірні масиви;виконувати операції над масивами з використанням функцій. Освоєння передачі у функціїмасиву й елементів масиву.
Теоретичні відомості
|