Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Лекція 11, 12

Тема : Рядкові дані. Функції обробки даних.

Мета: Вивчення та закріплення знанб на базі рішення задач з рядковими даними. Придбання навичок по розробці програм з рядковими даними.

Рядки в с + + дозволяють нам працювати з символьними даними. Завдяки ним ми можемо читати з клавіатури текст , якось його обробляти і потім , наприклад , знову його виводити в консоль.

У С + + існує 2 типу рядків . Перший з них - це масив змінних типу char .

Якщо хто не пам'ятає , то змінна типу char зберігає в собі 1 символ . Розмір такого рядка дорівнює розміру масиву - 1, тому останній елемент містить NULL (порожній мінлива без значення ) , який позначає символ кінця рядка.

наприклад:

char name [50] ;

cin >> name ;

cout << " Hello " << name << endl ;

Другий з варіантів , більш зручний - це спеціальний клас string

Для його роботи необхідно на початку програми підключити заголовний файл string :

# include <string>

У відмінності від типу char , string є класом . Більш докладно про класах я розповім пізніше , зараз вам досить знати , що класи містять у собі відразу кілька речей: змінні , константи та функції для роботи із змінними. Це досить грубе пояснення , але на перший час вам вистачить.

Для створення рядка вам необхідно на початку програми написати using namespace std ;

Тепер щоб створити рядок досить написати:

string s ;

Для запису в рядок можна використовувати оператор =

s = " Hello " ;

Приклад роботи з класом string :

string name ;

cout << " Enter your name " << endl ;

cin >> name ;

cout << " Hi " << s << " ! " << endl ;

Але поки ви скористалися тільки однієї принадністю рядків : відсутністю необхідності задавати її розмір. Але крім цього існує безліч функцій для роботи з рядками .

s.append ( str ) - додає в кінець рядка рядок str . Можна писати як s.append (змінна ) , так і s.append ( "рядок " ) ;

s.assign ( str ) - присвоює рядку s значення рядка str . Аналогічно запису s = str ;

int i = s.begin ( ) - записує в i індекс першого елемента рядки

int i = s.end ( ) - аналогічно , але останнього

s.clear ( ) - як випливає з назви , відчищає рядок. Тобто видаляє всі елементи в ній

s.compare ( str ) - порівнює рядок s з рядком str і повертає 0 у випадку збіг (насправді порівнює коди символів і повертає з різницю)

s.copy (куди , скільки , починаючи з якого) - копіює з рядка s в куди ( там може бути як рядок типу стринг , так і рядок типу char ) . Останні 2 параметри необов'язкові (можна використовувати функцію з 1,2 або 3 параметрами )

bool b = s.empty ( ) - якщо рядок порожній , повертає true , інакше false

s.erase (звідки , скільки) видаляє n елементів із заданою позиції

s.find ( str , позиція ) - шукає рядок str починаючи з заданої позиції

s.insert ( позиція , str , починаючи , beg , count ) - вставляє в рядок s починаючи з заданої позиції частина рядка str починаючи з позиції beg і вставляючи count символів

int len= s.length ( ) - записує в len длинну рядка

s.push_back ( symbol ) - додає в кінець рядка символ

s.replace ( index , n , str ) - бере n перших символів з str і замінює символи рядка s на них , починаючи з позиції index

str = s.substr ( n , m ) - повертає m символів починаючи з позиції n

s.swap ( str ) змінює вміст s і str місцями.

s.size ( ) - повертає число елементів в рядку.

Ось власне більшість необхідних функція для роботи з рядками в с + +. Набір досить непоганий , більше вам поки не знадобиться

Тепер трохи прикладів і потім практика . Постарайтеся самі зрозуміти , що робить кожен приклад.

string name , surname , text , fullname , s1 , s2 , s3 , user ;

user = " Petya Petrov " ;

cout << " Enter your name " << endl ;

cin >> name ;

cout << " Enter your surname " << endl ;

cin >> surname ;

fullname = name ;

fullname + = "" ; / / додаємо пробіл

fullname.append ( surname ) ;

if ( fullname.compare ( user ) == 0) / / < => if (! ( fullname.compare ( user )))

cout << " Your are good user " << endl ;

else

cout << " Bad user " << endl ;

cout << " enter s1 " << endl ;

cin >> s1 ;

cout << " enter s2 " << endl ;

cin >> s2 ;

s1.swap ( s2 ) ;

cout < " new s1 : " << s1 << endl << " new s2 : " << s2 << endl ;

cout << " Enter big text with your name " << endl ;

cin >> text ;

int i = 0 ;

i = text.find ( " name " ) ;

while ( i! = -1 )

{text.replace ( i , name.length ( ) , name ) ;

s3 = text.substr ( i , name.length ( )) ;

cout << " Replaced : " << s3 << endl ;

i = text.find ( " name " ) ;

}cout << " New text : " << endl << text << endl ;

text.clear ();

cout << " text : " << text << endl ;

Задачі для рядків типу char :

Підрахувати кількість символів з ​​рядку (рядок кінчається елементом 0 : c = 0 if ( c == 0) cout << " end " << endl ;

Вам вводять рядок , потім вводять підрядок . Якщо підрядок є в введеної рядку вивести так, інакше немає

Вводять 3 рядки: а, б , с. Замінити у рядку з рядок а на рядок б

Задачі для рядків типу string :

Вводять текст і вводять підрядок , знайти всі входження підрядок в текст

Вводять текст і два слова , замінити всі слова 1 на слова 2 і всі слова 2 на слова 1

Вводимо ім'я і текст , вивести всі входження імені в текст ( ім'я + 5 символів до і 5 символів після нього)

Вводять 2 тексту. Порівняти їх , об'єднати , вивести всі прогалини , крапки, коми , двокрапки . Потім вивести розмір кожного тексту і загальний розмір . Потім поміняти всі букви а на a (росіяни на латинські ) і до на k . Потім вивести кількість замін.


Читайте також:

  1. Вид заняття: лекція
  2. Вид заняття: лекція
  3. Вид заняття: лекція
  4. Вид заняття: лекція
  5. Вид заняття: лекція
  6. Вступна лекція
  7. Вступна лекція 1. Методологічні аспекти технічного регулювання у
  8. Клітинна селекція рослин.
  9. Колекція фонограм з голосами осіб, які анонімно повідомляли про загрозу вибуху
  10. ЛЕКЦІЯ (4): Мануфактурний період світової економіки
  11. Лекція - Геополітика держави на міжнародній арені
  12. Лекція 02.04.2013




Переглядів: 470

<== попередня сторінка | наступна сторінка ==>
Лекція 10 | Лекція 15

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.009 сек.