Ввід символів та символьних рядків. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввід символів та символьних рядків.



Ввід символів в мові С++ здійснюється за допомогою об’єкта стандартного потоку введення cin та операції взяти з потоку >>:

char sym;

cin >> sym;

Таким чином, після виконання попередньої команди у змінну sym буде записано лише один (перший введений) символ, незалежно від того, скільки символів було введено.

Для вводу символьного рядка існує декілька способів. Оскільки символьний рядок трактується як масив, то його можна вводити в циклі поелементно. Такий спосіб на практиці рідко використовується. Інший спосіб полягає у використанні стандартного потоку cin. Наступний приклад демонструє це:

char sym[10];

cin >> sym;

Таким чином можна ввести тільки 9 символів. Якщо буде здійснено ввід більшої кількості, то в залежності від компілятора, будуть виникати помилки на етапі виконання програми. Даний спосіб має один недолік, який полягає в тому, що з стандартного потоку введення зчитуються символи до тих пір, поки не зустрінеться пробіл, символ табуляції, символ нового рядка або символ кінця файлу EOF. У багатьох випадках виникає необхідність ввести в символьний рядок повний текст. Для цього в С++ передбачена функція cin.getline, яка реалізована як метод об’єкту cin. Ця функція має три аргумента – масив символів, у якому буде зберігатися рядок тексту, максимальна довжина цього рядку та символ-ознака кінця рядка. Наприклад, такий код

char text[80];

cin.getline(text,80,'\n');

оголошує масив символів text довжиною 80 символів і зчитує рядок символів з клавіатури в цей масив. Дана функція припиняє зчитування символів у таких випадках: якщо зустрінеться символ-обмежувач '\n', якщо введено символ-ознака кінець файлу EOF (наприклад за допомогою комбінації клавіш CTRL+Z) або кількість зчитаних символів стала рівна 79 (тобто на одиницю менше за значення другого аргумента, оскільки останній символ резервується для нуль-символа. Сам символ-обмежувач (в нашому випадку '\n') зчитується і відкидається (в масив не заноситься). Третій аргумент функції getline() має символ нового рядка '\n' в ролі значення за замовчуванням, так що попередній виклик функціх може бути записаний у такому вигляді

cin.getline(text,80);

 

Вивід символів та символьних рядків.

Вивід символів та символьних рядків виконує стандартний оператор виведення на основі об’єкту cout. В даному випадку не має обмежень щодо довжини рядка. Слід пам'ятати, що вивід рядка здійснюється до зустрічі першого нуль-символа(‘\0’). Якщо ж він буде відсутній, то вивід буде здійснюватися до тих пір, поки не знайдеться такий символ, або не вичерпається об'єм буфера виводу, і виникне помилка нестачі пам’яті.

 

Приклад:

char s = 'A';

char s1[] = "ABCDEFG";

char s2[] = {'Z', 'Y', 'X', '\0'};

 

cout << s << "\n\r";

cout << s1 << "\n\r";

cout << s2 << "\n\r";

 

КОНТРОЛЬНІ ЗАПИТАННЯ

  1. Як у мові С++ організована робота з рядками символів?
  2. Які способи ініціалізації символьних рядків Ви знаєте?
  3. Які є особливості роботи з символьними рядками в С++?
  4. Яку роль відіграє ім’я масиву символів? Чи можна його використати для адресації довільного символа рядка через вказівник?
  5. Що є ознакою кінця символьного рядка? Напишіть оператор циклу для перебору всіх символів заданого рядка через вказівник типу char.
  6. Які основні функції класифікації та перетворення символів Ви знаєте?
  7. За допомогою якої стандартної бібліотечної функції можна виконати порівняння двох рядків? Наведіть приклад.
  8. Як перетворити числове значення в рядок символів?
  9. Яка різниця між масивом символьних рядків та масивом вказівників на символи рядків?
  10. Як здійснюється введення символів та рядків у С++?
  11. Як скопіювати один рядок в інший? Чому не можна просто присвоїти один масив символів іншому?
  12. Як перевірити чи входить заданий символ у заданий рядок? Напишіть фрагмент коду, який обчислює кількість входжень символа ‘E’ у рядок символів text.

 

ЛАБОРАТОРНЕ ЗАВДАННЯ

1. Ознайомитися з теоретичним матеріалом викладеним вище в даній інструкції і виконати приклади програм.

2. Одержати індивідуальне завдання.

3. Розробити алгоритм розв’язання індивідуального завдання і подати його у вигляді блок-схеми.

4. Скласти програму на мовіС++ у відповідності з розробленим алгоритмом.

5. Виконати обчислення по програмі.

6. Підготувати та здати звіт про виконання лабораторної роботи.

СПИСОК ЛІТЕРАТУРИ

1. Керниган Б., Ритчи Д. Язык программирования С. - М. - Финансы и статистика. - 1992. – 272 с.

2. Уэйт М., Прата С., Мартин Д. Язык С. Руководство для начинающих. - М. - Мир. - 1988. –512 с.

3. К. Джамса. Учимся программировать на языке С++. М.: Мир, 1997. – 320 с

4. Герберт Шилдт. Полный справочник по C++. М. – С.-П.-К., Вильямс. – 2003. – 800 с.

5. Демидович Е. М. Основы алгоритмизации и программирования. Язык Си. (Учебное пособие). – Санкт-Петербург: “БХВ Петербург”. – 2006. – 439 с.

ІНДИВІДУАЛЬНІ ЗАВДАННЯ

Вважаючи, що введене речення з клавіатури складається з довільної кількості слів, між якими є довільна кількість пробілів, і закінчується речення крапкою, написати програму для розв’язання завдання:

1. Посортувати всі слова тексту за першою буквою згідно з алфавітом і видрукувати їх у стовпчик.

2. Надрукувати введене речення трьома способами: а) великими літерами; б) починаючи кожне слово великою літерою; в) великі літери замінити малими, а малі - великими.

3. У введеному реченні визначити середню довжину слова.

4. Визначити відсоток вживання у введеному реченні кожної з голосних літер. Результат записати в спадному порядку.

5. Сформувати нове речення зі слів введеного, в яких немає вказаної користувачем літери.

6. Ввести два речення. Поміняти місцями передостаннє слово першого речення на перше слово другого речення.

7. Ввести речення і ключове слово. Надрукувати всі слова з введеного речення, які не містять літер із заданого ключового слова, або вивести повідомлення про їх відсутність.

8. Визначити і надрукувати два найкоротших слова з введеного речення.

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

10. Вилучити з введеного речення всі слова, які містять задану користувачем комбінацію з двох символів.

11. Замінити у введеному реченні слово з заданим порядковим номером відповідною кількістю однакових заданих користувачем символів. У випадку, коли номер перевищує введену кількість слів друкувати відповідне повідомлення про реальну кількість слів у введеному реченні.

12. Визначити і надрукувати найкоротше та найдовше слово з введеного речення.

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

14. Визначити і надрукувати слово з введеного речення, в якому найбільше разів зустрічається задана літера.

15. Вилучити з введеного речення слово, задане своїм порядковим номером. У випадку, коли номер перевищує введену кількість слів друкувати відповідне повідомлення про реальну кількість слів у введеному реченні.

16. Порахувати кількість різних букв у введеному реченні.

17. Надрукувати всі слова з введеного речення, які містять понад 8 літер.

18. Сформувати колонку зі слів введеного речення, роздрукувавши кожне слово в інверсному порядку (ззаду - наперед).

19. Сформувати і надрукувати нове речення зі зворотнім до введеного порядком слів.

20. Надрукувати ті слова з введеного речення, які складаються з усіх різних літер, або вивести повідомлення про їх відсутність.

21. Порахувати кількість заданих трьох літер у введеному реченні.

22. Ввести речення і ключове слово. Визначити, чи є у введеному реченні слово, яке складається з тих самих літер, що й задане ключове слово.

23. Ввести два речення. Визначити і надрукувати літери з обох речень, які не є спільними. Відповідні заголовні та малі літери вважаються однаковими.

24. Замінити у введеному реченні четверте по порядку слово на задане користувачем. У випадку, коли кількість слів менша чотирьох, друкувати відповідне повідомлення про реальну кількість слів у введеному реченні.

25. Порахувати кількість приголосних у введеному реченні.

26. Визначити і надрукувати два найдовших слова з введеного речення.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 1192; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.234.184.8 (0.011 с.)