русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Приклад 3.2


Дата добавления: 2015-07-09; просмотров: 3548; Нарушение авторских прав


Знайти в тексті всі слова, що починаються та закінчуються буквою a, та скопіювати їх в нову рядок через пробіл. Під новий рядок необхідно виділити рівно стільки пам’яті, скільки необхідно для запису знайдений слів.

Розв’язок. Поставлено задачу вирішимо у два етапи: спочатку підрахуємо кількість необхідної пам’яті, а за тим запишемо у новий рядок необхідні слова.

#include <iostream>

#include <conio.h>

#include <string.h>

int main()

{

char str[] = "test word 1: asdda. Test word 2: asdfg, word 3: Awea";

char strCopy[sizeof(str)];

strcpy(strCopy,str);//створюємо копію рядка

char seps[] = " :?!;,.\t\n";//знаки препинания

std::cout<<str<<std::endl;

char *token = strtok(str, seps);//пошук першого слова

int lenResult=0;

int countWord=0; //кількість слів

//Підрахуємо кількість необхідної пам'яты для рядка-результата

while( token != NULL )

{

int last = strlen(token)-1;

if (

(token[0] == 'a' || token[0] == 'A')

&& (token[last] == 'a' || token[last] == 'A')

)

{

lenResult+= strlen(token)+1;

++countWord;

}

token = strtok(NULL, seps );//пошук наступного слова



}

char* resString = new char [lenResult];

resString[0]='\0'; //створюєму пустий рядок

strcpy(str,strCopy);//відновлюємо рядок

token = strtok(str, seps);//пошук першого слова

int curentNumberWord=0;

while( token != NULL )

{

int last = strlen(token)-1;

if (

(token[0] == 'a' || token[0] == 'A')

&& (token[last] == 'a' || token[last] == 'A')

)

{

strcat(resString,token);

++curentNumberWord;

if (countWord!=curentNumberWord)//Якщо не останнє слово

{

strcat(resString," ");

}

}

token = strtok(NULL, seps );//пошук наступного слова



}

std::cout<<"\nResult:\n"<<resString<<std::endl;

delete[]resString;

getch();//задержка экрана

return 0;

}

 

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

 

1. Що таке рядок символів у мові С++?

2. Розібратися з технікою вводу-виводу рядка у Visual C++.

3. Коли можна не описувати довжину рядка?

4. Познайомитися з функціями роботи з рядками у С++.

 

3.4 Варіанти індивідуальних завдань

 

1. Ввести з клавіатури дві строки і замітити першу строку на другу.

2. Порівняти два рядки, якщо вони рівні то вивести повідомлення про рівність.

3. Об'єднати два рядки

4. Підрахувати кількість слів в рядку

5. У тексті слово "країна " замінити словом "Україна"

6. Скільки разів у заданому реченні зустрічаються слова "КСМ" та "СКС" ?

7. Виписати із тексту слова, що починаються та закінчуються цифрою.

8. Знайти у тексті найдовше слово, що складається з цифр.

9. У тексті слово "моє" замінити словом "наше".

10. У тексті виділити всі слова, що починаються літерою "к".

11. Видалити із тексту слова, що закінчуються на "ь".

12. Підрахувати у тексті кількість слів, в яких немає цифр.

13. Вибрати з тексту найдовше слово.

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

15. Надрукувати слово тексту з найбільшою кількістю приголосних звуків.

16. Ввести два речення. Якщо у них є однакові слова, то замінити їх у другому реченні на відповідну кількість символів "*".

17. Підрахувати у тексті кількість слів, в яких немає цифр.

18. Сформувати масив, елементи якого налічують кількість літер у словах речення.

19. Провести кодування та розкодування тексту, вибравши самостійно спосіб кодування.

20. Ввести список українських футбольних команд європейського рівня і у ньому “Металіст” поміняти їх місцями з “Динамо”.

21. Виділити з тексту слова, які мають однакову кількість літер.

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

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

24. Видалити з тексту усі зайві (більше одного) пропуски .

25. Чи є в тексті слова, що починаються та закінчуються літерою заданою в рядку запиту?

26. Надрукувати усі слова тексту, кількість літер в яких дорівнює даному числу.

27. Якщо у реченні зустрічаються підряд декілька однакових символів, то залишити тільки по одному символу.

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

30. У введеному списку з 10 прізвищ визначити найкоротше прізвище.

 

 


 



<== предыдущая лекция | следующая лекция ==>
Функції для роботи з рядками | ЗМІСТ ЛАБОРАТОРНИХ ЗАНЯТЬ ТА ФОРМА КОНТРОЛЮ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.655 сек.