Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 1088; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.147.193 (0.011 с.) |