![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Спеціальні функції для роботи з рядками та символамиСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Для рядків не визначено операцій присвоювання, додавання, порівняння, оскільки рядок не є основним типом даних. Для роботи з рядками використовуються спеціальні бібліотечні функції, опис яких міститься у файлі < string.h>. Деякі з цих функцій наведено у таблиці 8.1:
Таблиця 8.1 Функції стандартної бібліотеки для роботи з рядками – файл < string.h>
Для роботи з символами у файлі < ctype.h> стандартної бібліотеки визначено функції, наведені в таблиці 8.2:
Таблиця 8.2 Функції стандартної бібліотеки для роботи з символами-файл <ctype.h>
Приклад 1: Дано рядок символів, що складається зі слів, слова відокремлені пропусками. Видалити з рядка всі слова, що починаються з цифри. #include <iostream.h> #include <string.h> #include <ctype.h> void main() {const int n=250;// розмірність рядкового масиву char s[n], // вихідний рядок w[25], // проміжний масив для збереження слова з рядка *mas[10];// масив вказівників для збереження слів з рядка cout<<“\nBведiть рядок:\n”; cin.getline(s, n); int k=0, t=0, i, len, j; len=strlen(s); while(t<len) { for(j=0,i=t; isspace(s[i])==0; i++,j++) w[j]=s[i]; // виокремлюємо слово до пробілу w[j]=’\0’;// формуємо кінець слова strcpy(mas[k],w);// копіюємо слово у масив k++;// збільшуємо лічильник слів у рядку t=i+1;// перехід через пробіл до наступного слова у // вихідному рядку s } strcpy(s,” ”);// очищуємо вихідний рядок for(t=0; t<k; t++)// заповнюємо рядок if(isalpha(mas[t][0])!=0){// якщо перший символ не цифра {strcat(s,mas[t]);// дописуємо слово в оновлений рядок strcat(s,” “);// додаємо пробіл після слова
} cout<<”\nНовий рядок:\n”<< s;// виводимо результат } Приклад 2: Програма яка підраховує скільки разів задане слово зустрічається у тексті файлу. Наприклад, у англійській поговірці “Don’t trouble trouble until trouble troubles you” слово “trouble” у чистому вигляді зустрічається 3 рази. #include <fstream.h> #include <string.h> # include<ctype.h> void main() {const int len=81; char word[len], line [len];// масиви для слова і рядка cout<< “Введiть слово для пошуку:”; cin>> word; int_lword=strlen(word);// визначення довжини слова ifstream fin (“text.txt”, ios:: in | ios:: nocreate); if(!fin) {cout<< “Помилка відкриття файлу.”<<endl;return 1;} int count=0; // поки не досягнуто нуль-символу while(fin.getline(line, len)) {char *p=line;// вказівникові присвоєно адресу рядка while(p=strstr(p,word))/* якщо слово знайдено вказівник стає на позицію початку слова у рядку*/ { // адреса початку входження слова передається с char * c=p; p+=l_word;// перехід вказівника р через слово // слово не на початку рядка if(c!=line) /* Чи є символ перед словом розділювачем? Інакше – перейти до наступної ітерації */ if(!ispunct(*(c-2))&& isspace(*(c-1))) continue; // Чи є символ після слова розділювачем? if (ispunct(*p)|| isspace(*p)|| (*p==’\0’)) count ++; } } cout << “Слово зустрічається в тексті ”<< count; <<” разів”<<endl; } Приклад виконання завдання. Дано текст, який складається з букв і пропусків. На друк вивести слова, які містяться в ньому, і їх кількість. Словом вважати послідовність букв, розділених пропусками. Блок-схема
Програма мовою Pascal program lab_Text; var s,p: string; i,k: integer; Begin s:=´поздововляю з новим роком´; p:=‘ ’; k:=0; writeln (s); writeln (´слова:´); for i:=1 to length (s) do if s [i]= ‘ ’ Then begin if length (p)>0 then Begin writeln (p); p:=‘ ’; k:=k+1 End End else p:=p+s [i]; if length (p) >0 then Begin writeln (p); k:=k+1 end; writeln (¢кількість слів:’, k:4) End. Програма мовою С
#include <stdio.h> #define SIZE 255 Main() { int k=0, i=0; char text[SIZE]=”Поздововляю з новим роком”; char *word=text; //адресу початку масиву – у word printf(“слова:\n”); while (*word) //поки не нульовий байт { if (*word!= ‘ ‘) //якщо пропуск { printf(“%c”,*word); //друкувати символ if (!i) {i++; k++;} //якщо i=0 } Else { if (i) printf(“\n”); //якщо i не =0 i=0; } word++; //збільшити адресу } printf(“\n Кількість слів: %d\n”,k); } Контрольні запитання. 1. Як оголошують символьні змінні? 2. Як визначити символьні змінні у тексті? 3. Яким програмним засобом виконується перегляд тексту по одному чи N символів? 4. Як здійснити доступ до окремого символу рядка? 5. Які стандартні функції і процедури для роботи з рядками ви знаєте?
Завдання. 1. В заданому тексті знайти і вивести на друк цифри, які містяться в ньому, і їх кількість.
2. В заданому тексті знайти і вивести на друк кількість і номери позицій букви “А”, які містяться в ньому.
3. В заданому тексті знайти і вивести на друк кількість цифр і кількість букв, які містяться в ньому.
4. Дано текст. Підрахувати кількість малих латинських букв, які містяться в ньому до 10-го символа включно. На друк вивести ці букви і обчислену кількість. 5. Дано текст. Вияснити, чи є від ідентифікатором. Ідентифікатор – це послідовність букв і цифр, яка починається з букви.
6. Дано текст. Вияснити, чи є він числом. Від’ємні числа містять на початку знак мінус.
7. Якщо в заданому тексті немає символа “*”, то залишити його без зміни. В противному випадку кожну латинську букву, яка знаходиться перед першим символом “*”, замінити на крапку.
8. Дано текст. Якщо він не містить символа “+”, то залишити його без зміни. В противному випадку кожну цифру, яка знаходиться перед першим символом “+”, замінити на кому.
9. Дано текст, який містить букви і пропуски. Якщо в ньому немає слова “весна”, то залишити його без зміни. В противному випадку замінити всі слова “весна” на “зима”. Словом вважати послідовність букв, розділених пропусками.
10. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, довжина яких перевищує 5 символів. Словом вважати послідовність букв, розділених пропусками.
11. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які містять по 2 букви “А”. Словом вважати послідовність букв, розділених пропусками.
12. Дано текст, який містить букви і пропуски. Знайти і надрукувати слова і їх кількість, які закінчуються буквосполученням “ати”. Словом вважати послідовність букв, розділених пропусками.
13. Дано текст, який містить букви і пропуски. Знайти слова, які закінчуються буквосполученням “ати”, і замінити це буквосполучення на “али”. Словом вважати послідовність букв, розділених пропусками.
14. Дано текст, який містить букви і 2 символи “%”. Знайти кількість букв, які знаходяться між першим і другим символами “%”.
15. Дано текст, який містить букви і пропуски. Знайти і надрукувати слово, в якому міститься найбільше символів “А”. Словом вважати послідовність букв, розділених пропусками. 16. Слова в тексті розділені пропусками. Після кожного слова поставити знак оклику. 17. Визначити яка відповідь надійшла з клавіатури: так або ні (чи є у відповіді окремі символи ‘y, ‘Y’, ‘n’,’N’). 18. Визначити яка відповідь надійшла з клавіатури: так або ні (чи є у відповіді окремі слова ‘так’, ‘Так’,’ні’,’Ні’-?). 19. З двох текстів рівної довжини створити новий текст чергуванням. 20. З двох текстів різної довжини зформувати новий текст чергуванням. 21. У вхідному тексті слово ‘товариш’ замінити на слово ‘пан’. 22. У всіх словах ‘кит’ тексту замінити ‘и’ на ‘і’. 23. У тексті вирізати літеру ‘ь’ з слів ’моль’. 24. Підрахувати кількість входжень тексту ‘тобто’ у вхідний текст. 25. Підрахувати кількість входжень тексту ‘бо’ у вхідний текст (як слово і як фрагмент). 26. Відсортувати слово (слово складається з літер) у алфавітному порядку. 27. Вивести число зі зворотнім порядком цифр. 28. Визначити суму цифр числа.
29. Вивести цифри вхідного числа з назвою розрядів (до мільйона). Для збереження назв створити текстовий масив. 30. Скласти усі цифри, що є в тексті. Лабораторна робота № 9.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-05; просмотров: 1097; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.38.91 (0.01 с.) |