Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные занятия_С++.doc
Скачиваний:
4
Добавлен:
23.04.2019
Размер:
462.85 Кб
Скачать

Задание 5.Обработка символов и строк

Цель задания

Получение навыков обработки отдельных символов и текстов с использованием стандартных функций и функций пользователя.

Основные понятия

Переменная типа char предназначена для хранения кода отдельного символа. Для хранения строки символов используется массив типа char.

Размер такого массива на единицу больше, чем количество символов в строке (строка всегда должна завершаться символом '\0').

Например: char h[6]={'H','e','l','l','o','\0'};

Массив можно проинициализировать и строковой константой:

char h[6]= "Hello"; или char h[]="Hello";

Для ввода и вывода строки можно использовать операторы cin, cout соответственно. Причем, оператор cin при вводе строки, содержащей пробелы, введет строку только до первого пробела. Для ввода строк, содержащих пробелы, можно использовать функцию gets(h);.

Подключение библиотеки стандартных функций include <string.h>.

Пример выполнения задания

//Пример 5.1. Ввести текст. Найти самое длинное слово в тексте

//и его длину.

#include <iostream.h>

#include <stdlib.h>

#include <stdio.h>

int main() {

const int L = 256;

char Str[L] ;

cout << "\nВведите строку:";

gets(Str);

cout << "\nИсходная строка:" << Str << endl;

int len= strlen(Str); //Получение длины строки Str

int MaxBegin, MaxEnd; //Индексы нач. и кон. самого длинного слова

int MaxLen=0; //Длина самого длинного слова

int Begin=0, End; // Индексы нач. и кон. очередного слова

Str[len+1]='\0'; //Добавление пробела к концу строки

Str[len]=' ';

//Поиск самого длинного слова

int i=0;

while(i<strlen(Str)-1) {

if(Str[i]==' ' && Str[i+1]!=' ') Begin=i+1;

if(Str[i]!=' ' && Str[i+1]==' ')

{

End=i;

int Len=End-Begin+1; //Получение длины слова

if(Len>MaxLen)

{

MaxLen=Len;

MaxBegin=Begin;

MaxEnd=End;

}

}

i++;

}

cout << "\nМаксимальная длина слова="<<MaxLen<< endl;

cout<<"Слово максимальной длины:"<<endl;

for(int i=MaxBegin; i<=MaxEnd; i++)

cout<<Str[i];

cout<<endl;

system("pause");

return 0;

}

Постановка задания

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

Варианты контрольных заданий

  1. Определить количество слов в тексте, если слова разделены произвольным количеством пробелов.

  2. После каждого символа текста вставить заданную подстроку, например ” * ”.

  3. Поменять местами в тексте первое слово и последнее.

  4. По заданному тексту создать новый текст, слова в котором будут следовать в алфавитном порядке.

  5. В тексте найти все пары слов, из которых одно является обращением другого.

  6. Найти и вывести все слова текста, у которых первый и последний символы совпадают.

  7. В тексте найти количество слов, начинающихся и заканчивающихся гласной буквой.

  8. Напечатать без повторения слова текста, у которых первая и последняя буквы совпадают.

  9. Отредактировать заданный текст, чтобы

а) между словами текста был только один пробел;

б) предложения текста разделялись двумя пробелами.

  1. В тексте найти и напечатать все слова максимальной и все слова минимальной длины.

  2. В тексте гласные буквы расположить в алфавитном порядке.

  3. В тексте удалить лишние пробелы и расположить слова в порядке возрастания их длин.

  4. Определить, является ли заданная последовательность символов: а) идентификатором; б) десятичной записью целого числа .

  5. Даны две строки S1 и S2 . Удалить из строки S1 все символы, встречающиеся в строке S2.

  6. Определить, сколько раз стоящие рядом два слова в тексте начинаются на одну и ту же букву.

  7. Список группы (фамилия, имя) рассортировать в алфавитном порядке по первым k буквам фамилии, где k  задано.

  8. Определить, каких букв, гласных или согласных, больше в каждом предложении текста.

  9. Из текста удалить все слова заданной длины, начинающиеся на гласную букву.

  10. Определить, сколько раз встречается в тексте каждое слово.

  11. Определить, количество слов в тексте, содержащих 1 слог, 2 слога, 3 слога.

  12. Упорядочить слова в тексте в порядке убывания количества их слогов.

  13. В тексте выбрать все слова, начинающиеся с гласных букв, и расположить в порядке возрастания количества букв в слове.

  14. Расположить слова в тексте в порядке убывания количества букв в слове.

  15. В тексте найти самое длинное симметричное слово.

  16. В тексте найти и вывести все слова ” перевертыши ” (читаются одинаково слева направо и справа налево).

  17. В тексте найти слова, которые симметричны (радар, ANNA).

  18. В тексте найти все слова, в которых буквы упорядочены в порядке, обратном алфавитному (TOK, zona).

  19. В тексте найти все слова, в которых буквы упорядочены в алфавитном порядке.

  20. В тексте определить количество различных букв и слово, содержащее наибольшее количество различных букв.

  21. В тексте найти символы, встречающиеся во всех словах, и расположить их в алфавитном порядке.

  22. Удалить из текста слова, встречающиеся более одного раза.

  23. В тексте найти слова, длина которых  простое число, и заменить их ***…* . Количество * должно соответствовать длине слова.

  24. Ввести текст и список слов. Для каждого слова из заданного списка определить, сколько раз оно встречается в тексте, и рассортировать их в порядке убывания найденных количеств.

  25. В заданном тексте после каждого слова вставить введенное слово.

  26. В заданном тексте продублировать слова.