Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб7.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

Теоретичні відомості

Символьна константа складається з одного символа ASCII між апострофами (''). Приклади спеціальних символів:

Новий рядок

'\n'

Горизонтальна табуляція

'\t'

Повернення каретки

'\r'

Апостроф

'\''

Лапки

'\"'

Нульовий символ

'\0'

Зворотний слеш

'\\'

Стринги є одним з найбільш корисних та важливих типів даних мови С++. Символьний рядок (стринг) — це масив символів, взятий у лапки ("). Він має тип char. Нульовий символ (\0) автоматично додається останнім байтом символьного рядка та виконує роль ознаки його кінця. Кількість елементів у масиві дорівнює кількості символів у стрингу плюс один, оскільки нульовий символ також є елементом масива. Кожна стрингова константа, навіть у випадку, коли вона ідентична іншій стринговій константі, зберігається у окремому місці пам'яті. Якщо необхідно ввести у рядок символ лапок ("), то перед ним треба поставити символ зворотного слешу (\). У стринг можуть бути введені будь-які спеціальні символьні константи, перед якими стоїть символ \.

Прототипи всіх функцій, що працюють з рядками символів, містяться у файлі string.h. Всі функції працюють з рядками, що закінчуються нульовим символом. Ось деякі з них:

int strcpy(char *s1, char *s2) — копіювати рядок s2 у рядок s1;

int strlen(char *s) — визначити довжину рядку (кількість символів без нульового символа).

сhar *strcat(char*s1,const char*s2) – з’єднати два рядки s1 і s2;

сhar *strcpy(char*s1,const char*s2) – копіює рядок s1 в рядок s2;

int *strcmp (const char*s1,const char*s2) порівнює рядки s1 і s2 . Повертає 0, якщо рядки одинакові, число менше за ноль, якщо s1< s2 і число більше за ноль, якщо s1> s2.

char strlwr(char *s) – перетворює малі літери рядка у великі літери (опрацювуються тільки літери латинського алфавіту);

char strupr(char *s) - перетворює великі літери рядка у малі літери (опрацювуються тільки літери латинського алфавіту);

char *strchr (const char*s1,int s)- виконує пошук символа s у рядку s1 і повертає вказівник на перший знайдений символ або, якщо символ не знайдено то символ NULL

У файлі ctype.h описано прототипи функцій, що призначені для перевірки літер. Ці функції повертають ненульове значення (істина), коли її аргумент задовольняє заданій умові або належить вказаному класу літер, та нуль в іншому випадку. Наприклад:

int islower(int с) — символ с є малою літерою;

int isupper(int c) — символ с є великою літерою;

int isalnum(int c) — символ с є буквою або цифрою;

int isalpha(int c) — символ с є буквою;

int tolower(int c) — перетворення літери у нижній регістр;

int strtol(int c) — перетворення стрингу у довге ціле число;

Завдання для самостійної роботи

1. Опрацювати теоретичний матеріал

2. Проаналізувати умову задачі.

3. Розробити алгоритм та створити програму розв’язання задачі згідно з номером варіанту.

4. Результати роботи оформити протоколом.

Приклад виконання завдання

Написати програму, яка обчисляє значення виразу N0O1N1O2...OkNk , де Ni – ціле одно розрядне число,OI – один з двох знаків арифметичних операцій: додавання (+) або віднімання (-). Далі наведено рекомендований вигляд екрану під час роботи програми (дані, що вводяться користувачем виділені жирним шрифтом)

Введіть арифметичний вираз, наприклад 4+5-3-5+2

9-5+4+2-6

Значення введеного виразу: 4

// Обчислення значення арифметичного виразу

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void main()

{

char st[40]; // рядок

char buf[10]; //зображення чергового числа

char op; //оператор

int rez;………….//значення виразу

int n; //чергове число

int i,j;

cout<<”введіть арифметичний вираз\n”;

cout<<” наприклад 4+5-3-5+2\n”;

cout<<”пропуски та інші знаки недопустимі\n”;

cin>>st; //введення рядка

cout<<”введений вираз\n”;

printf("\n%s",st); //виведення рядка

rez=0; //значення виразу

op=’ ‘;

i=j=0;

while (st[i])

{// введіть число

j=0;

while(st[i]>=’0’ && st[i]<=’9’ )

buf[j++]=st[i++];

buf[j]=’\0’;

n=atoi(buf); //перетворити рядок в ціле

// виконати дії

switgh(op)

{

case ‘+’: rez+=n; break;

case ‘-‘: rez-=n; break;

case ‘ ‘:rez=n; break;

}

// виділити знак операції

op=st[i++];

}

cou t <<”значення виразу:”<<rez);

getch();

}

Завдання до роботи

Скласти програму завдання, відповідно до варіанту. Текст вибрати самостійно, ввести і отримати результати. Під текстом в даному завданні слід розуміти послідовність, що містить від 1 до 255 символів. Групи символів, що розділенні пропусками і не містять пропусків всередині, назвемо словами.

У звіті відтворити введений текст і одержаний результат.

Варіанти завдань

1. Дано текст. Визначити, скільки яких цифр він містить.

2. Дано текст. Визначити, скільки букв він містить.

3. Дано текст. Визначити, чи є в ньому символи +,-,=,*.

4. Дано число. Кожну групу символів 120 у цьому числі замінити на символи 478.

5. Дано текст. Визначити, чи містить він символи, відмінні від букв і цифр.

6. Дано текст. Якщо в тексті немає символа *, то залишити цей текст без змін. Якщо ж ні, то кожну малу латинську літеру замінити на цифру 1 .

7. Дано текст. Якщо в ньому є цифра 2, то кожен символ перед цією цифрою замінити на букву а.

8. Дано текст. Якщо в ньому є символ +, то кожен наступний після + символ замінити символом -.

9. Дано текст. Якщо в ньому є малі латинські букви то кожен символ, що знаходиться за кожною групою малих латинських букв, замінити крапкою.

10. Дано текст. Визначити, скільки він містить крапок.

11. Дано текст. Порахувати кількість слів у тексті.

12. Дано текст. Знайти всі слова, що містять букву а.

13. Дано текст. Знайти всі слова, що не містять букву о.

14. Дано текст. Знайти всі слова, що починаються з букви с і закінчуються буквою а.

15. Дано текст. У словах, що закінчуються на іпg замінити це закінчення на еd.

. Контрольні запитання

  1. Чим відрізняється рядок від буфера?

  2. Які ви знаєте класи функцій для обробки символьної інформації?

  3. Наведіть приклади функцій:

- для роботи з буферами;

- для роботи зі стрингами;

- визначення класу символів та перетворення символів.

- перетворення даних.

Лабораторна робота № 9

Тема : Програмування з використанням функцій

Мета роботи: Оволодіння практичними навичками використання функцій

Теоретичні відомості

Програма на мові С++ складається з однієї або декількох функцій. Функція — це логічно самостійна частина програми, яка може отримувати параметри, та повертати значення. Функція має наступний формат визначення:

[тип_даних] ім'я_функції (перелік_аргументів | void)

{

опис даних

оператори

[return (вираз)]

}

Сукупність виразів у фігурних дужках називається тілом фунції. Поле тип_даних задає тип значення, що повертає фунція. Якщо воно відсутнє, то вертається значення int. Якщо поле тип_даних містить ключове слово void, функція не повертає ніякого значення.

Поле ім'я_функції — це ім'я (вказівник) функції.

Поле перелік_аргументів визначає аргументи, що передаються в функцію, та містить будь-яку комбінацію типів та імен. Це поле є необов'язковою частиною визначення функції. Якщо у функцію не передаються ніякі аргументи, це поле може бути порожнім або містити ключове слово void.

Звернення до функції має вигляд:

ім'я_функції(перелік_аргументів);

Перелік аргументів складається з виразів, відділених комами, типи яких повинні співпадати з типами відповідних параметрів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]