Обробка символьних рядків в мові С++. План 1.Загальні відомості про рядковий тип даних. 2.Рядок як параметр функції.

Презентация:



Advertisements
Похожие презентации
Символьні та рядкові величини. Для роботи з символами, словами і рядками в Паскалі існують типи даних - CHAR і STRING, що являють собою символи в кодуванні.
Advertisements

Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове.
Вказівники на функції В мові С імя функції є константним вказівником на перший байт виконавчого коду функції. Це адреса оперативної памяті, яка відповідає.
Рядкова величина – послідовність довільних символів, що охоплюється з обох боків апострофами. Для опису рядкових величин використовують ідентифікатор.
Вказівники і масиви в мові С++. План. 1.Загальні відомості про вказівники. 2.Операції над вказівниками. 3.Вказівники і масиви. 4.Масив як параметр функції.
Основи алгоритмізації та програмування Опрацювання табличних величин. Заняття 1. Алгоритми формування масивів, виведення масивів, зміни значень елементів.
Рядкові величини Рядок це послідовність символів кодової таблиці ЕОМ. При використанні у виразах рядок охоплюється з двох сторін апострофами. Кількість.
Опрацювання структур у функціях Оскільки мова С інтерпретує структури як звичайні змінні, а не вказівники, можна передавати значення структури у функцію.
Функції з неоголошеними параметрами Інколи у функції потрібно передати деяке число фіксованих параметрів та невизначене число додаткових. В цьому випадку.
Класи пам'яті даних. Клас пам'яті, час існування та видимість об'єкта Кожен обєкт програми (змінна, функція,...) має свій тип і клас памяті. Тип визначає.
Консольне введення даних За призначенням клавіші клавіатури можна поділити на групи: – символьні; – клавіші керування: Home, End, …, Delete та чотири стрілки;
1. Назвіть базові типи даних у Паскалі. 2. Які дії можна виконувати з числовими величинами? 3. Що таке масив? 4. Яка різниця між функцією та процедурою?
Обмін блоками даних Зчитати з потоку блок даних заданого розміру можна за допомогою функції size t fread (void *buf, size t size, size t n, FILE *fp);
Рядкові величини в С++ Максименко Марина Миколаївна вчитель інформатики вищої категорії, вчитель-методист Конотопської гімназії Конотопської міської ради.
Підготували: Бондарчук О., Сірий О.. § Визначники Усі визначники незалежно від свого порядку, мають однакові властивості, тому їх краще всього демонструвати.
Формула – це основний інструмент аналізу даних. За допомогою формул можна виконувати математичні дії, порівнювати, обєднувати дані як у межах одного робочого.
Оператори. Введення і виведення даних. Оператор присвоювання Оператори це команди програми. Оператор присвоювання є основним оператором мови програмування.
Табличний процесор (електронні таблиці - ЕТ) Microsoft Excel.
Ізяславський НВК 2, Гульчак інна Василівна Оператор. Виведення даних. Змінна. Типи даних. Оператор надання значень. Константи. Введення даних.
8 Практична робота 11 Налагодження готової програми За новою програмою Урок 38.
Транксрипт:

Обробка символьних рядків в мові С++

План 1.Загальні відомості про рядковий тип даних. 2.Рядок як параметр функції.

1.Загальні відомості про рядковий тип даних. Символьні рядки організовуються як масиви символів, останнім з яких є символ \0, внутрішній код якого дорівнює нулю. Рядок описується як символьний масив. Наприклад: char STR[20]; Одночасно з описом рядок може ініціалізуватися. Можливі два способи ініціалізації рядка за допомогою рядкової константи і у вигляді списку символів: char S[10]="рядок"; char S[]="рядок"; char S [10] = {'р','я', 'д', 'о', 'к','\0'};

Можна визначити символьний масив і так: char S [10] = { 'р', 'я', 'д', 'о', 'к'}; тобто без нульового символу в кінці. Але це приведе до проблем з обробкою такого рядка, оскільки буде відсутній орієнтир на його закінчення. Окремі символи рядка ідентифікуються індексованими іменами. Наприклад, в описаному вище рядку S[0] ='р', S[4] ='к'. Обробка рядків зазвичай пов'язана з перебором всіх символів від початку до кінця. Ознакою кінця такого перебору є виявлення нульового символу.

Пример //Заміна символів рядка на зірочки #include void main() { char S[]="fh5j"; int i=0; clrscr () ; puts (S) ;// виведення рядка на екран while (S [i]) {S [i++] ='*'; puts(S); } printf("\n Dovzhina ryadka=%d",i); getch(); }

Серед стандартних бібліотек С/С++ існує бібліотека функцій для обробки рядків. Її заголовний файл string.h. strcat Формат функції: char *strcat(char *s1, char *s2); Функція додає s2 до s1 і повертає s1. У кінець результуючого рядка додається нуль-символ. strchr Формат функції: char *strchr(char *s, int ch); Функція повертає вказівник на перше входження символу ch в рядок s, якщо його немає, то повертається NULL.

strcmp Формат функції: int *strcmp(char *s1, char *s2); Функція порівнює рядки і повертає негативне (якщо s1 менше s2), нульове (якщо s1 рівне s2) або позитивне (якщо s1 більше s2) значення. strlen Формат фннкції: size_t strlen(char *s); Функція повертає довжину рядка (без урахування символу завершення рядка).

strcpy Формат функції: char *strcpy(char *sl, char *s2); Функція копіює s2 в s1 і повертає s1. strcspn Формат функції: size_t strcspn(char *s1, char *s2); Функція повертає значення індексу будь-якого з символів з s2 в рядку s1.

strspn Формат функції: size_t strspn(char *s1, char *s2); Функція повертає індекс першого символу в s1, відсутнього в s2. strstr Формат функції: char *strstr(char *s1, char *s2); Функція виконує пошук першого входження підрядка s2 в рядок s1. У разі вдалого пошуку, повертає вказівник на елемент з s1, з якого починається s2, і NULL інакше.

Приклад Ввести символьний рядок. Перевернути (обернути) цей рядок. Наприклад, якщо ввели рядок «abcdef», то в результаті в ній повинні отримати «fedcba». //Обернення рядка #include void main() { char C,S[10]; int i; clrscr(); printf("Vvedit ryadok "); gets(S) ; for(i=0; i<=(strlen(S)-1)/2 ; i++ ) { C=S[i] ; S[i]=S [strlen (S)-i-1] ; S[strlen(S)-i-1]=C;} printf("\nPerevernutiy ryadok:") ; puts(S); getch(); }

Рядок як параметр функції. Необхідно пам'ятати, що ім'я масиву є покажчик на його початок. Проте для рядків є одна істотна відмінність від масивів інших типів: ім'я рядка є покажчиком- змінною, і, отже, його значення може піддаватися зміні. Приклад Визначення функції обчислення довжини рядка (аналог стандартної функції strlen()). int length(char *s) { int k; for(k=0; *s++! = '\0 ' ; k++); return k;}

Приклад Програма обернення рядка у вигляді функції. //обернення рядка #include int length(char *str); void invers(char *str); void main() { char S[]=" "; clrscr(); printf("\n%s",S); invers(S);//виклик функції інвертування рядка printf("\n%s",S); getch(); } //функція обчислення довжини рядка int length(char *s) { int k; for(k= 0; *s++!='\0'; k++); return k; } //функція інвертування рядка void invers(char *e) { char c; int i,j,m; m=length(e); //виклик функції length for(i=0, j=m-1; i<j; i++, j--) { c=e[i]; e[i]=e[j]; e[j]=c; } }

Приклад Описати функцію вставки символу в рядок. Параметри функції: рядок, позиція вставки, символ, що вставляється. Використовувати цю функцію в основній програмі, де початковий рядок, номер позиції і символ, що вставляється, задаються введенням. // Вставка символу в рядок #include void INSERT(char *str, int p, char c) { int i; for(i=strlen(str); i>=p; i--) str[i+1]=str[i]; str[p]=c; } void main() { char c, S [100]; int n; clrscr(); puts("Vvedit ryadok:"); gets(S); puts("Vvedit poziciyu dlya vstavki:"); scanf("%d",&n); puts("Vvedit symbol:"); c=getche(); INSERT(S,n,c); puts("\nRezultat:"); puts (S); getch(); }