Лабораторная работа № 12. Обработка символьной информации
Для представления символьной информации можно использовать символы, символьные переменные и символьные константы.
Задание
| Краткие теоретические сведения
| 1. Изучить способы преобразования символов, выполнив программу в правой части.
Внести изменения в программу с тем, чтобы продемонстрировать, как прописная буква выводится в виде строчной.
| Заменить в программе четвертую и пятую строки на:
char *pc;
pc = & c;
*pc = n + '0';
printf(" %c\n", *pc);
Объяснить результат.
| 2. Выполнить прокрутку программы, записанной в правой части и записать ее условие.
Опробовать программу с различным текстом.
| Строка символов хранится в памяти как массив. Количество элементов в таком массиве на один элемент больше, чем указано в программе, т.к. в конец строки всегда добавляется '\0'.
В данной программе указатель может содержать нулевое значение, поэтому перед операцией разыменования его следует проверять.
| 3. Выполнить программу, приведенную в правой части.
Объяснить принцип использования функции из стандартной библиотеки.
| Пусть имеется адрес файла в сети, например: http: \\belstu.by\p1\p2\file1.htm
Определить имя последней папки (каталога).
# include < stdio.h>
# include < string.h>
void main()
{
char st[50]; int i, k, n, j;
printf(" vvedite stroku: "); scanf(" %s", st);
for (i = strlen(st); i > = 0; i--)
{ if (st[i] == '\\') break; }
k = i;
for (j = (k - 1); j > = 0; j--)
{ if(st[j] == '\\') break; }
n = j;
if (k == n)
printf(" '\\' ");
else
{ char s[20];
strncpy(s, & st[n + 1], k – n - 1);
s[k - n - 1] = 0;
printf(" posledniy katalog: %s\n", s);
}
}
| Функция
| Краткое описание функции
| strcmp
| int strcmp(const char *str1, const char *str2);
Сравнивает строки str1 и str2. Если str1 < str2, то результат < 0, если str1 = str2, то результат = 0, если str1 > str2, то результат> 0.
| strcpy
| char* strcpy(char*s1, const char *s2);
Копирует байты из строки s1 в строку s2
| strdup
| char *strdup (const char *str);
Выделяет память и переносит в нее копию строки str.
| strlen
| int strlen (const char *str);
Вычисляет длину строки str
| strncat
| char *strncat(char *s1, const char *s2, int kol);
Приписывает kol символов строки s1 к строке s2
| strncpy
| char *strncpy(char *s1, const char *s2, int kol);
Копирует kol символов строки s2 в строку s1
| strnset
| char *strnset(char *str, int c, int kol);
Заменяет первые kol символов строки s1 символом с
| atoi
| int atoi(char *str);
Преобразует строку в целое
| atof
| float atof(char *str);
Преобразует строку в число с плавающей точкой
|
|
| 4. В правой части записаны два варианта решения задачи. Выполнить программы и объяснить различия между ними.
| Пример проверки правильности расстановки круглых скобок в строке.
#include < stdio.h>
void main()
{ char s[256]; int i, c;
printf(" Enter string: ");
gets(s);
for(c=i=0; s[i]! = 0; i++)
{ if(s[i]=='(') c++;
if(s[i]==')') c--; }
if(! c)
printf(" Ok\n");
else
printf(" Not Ok\n");
}
| #include < stdio.h>
void main()
{ char s[256]; int i, c; char *ps;
printf(" Enter string: "); gets(s);
for(c=0, ps = s; *ps! = 0; ps++)
{ if(*ps == '(') c++;
if(*ps == ')') c--; }
if(c==0)
printf(" Ok\n");
else
printf(" Not Ok\n");
}
|
|
5. Выполнить задание из таблицы ниже двумя способами: используя индексы и используя указатели. При написании программне использовать стандартные операции и функции для строк символов.
№ варианта
| Условие задачи
|
| Написать программу, реализующую вставку в строку n символов, начиная с позиции k.
|
| Написать программу, реализующую выделение подстроки S 1 длиной k с позиции номер n из строки.
|
| В строке есть два символа *. Получить все символы между первым и вторым символом *.
|
| Написать программу, которая удаляет в строке все буквы bв тексте, написанном латинскими буквами.
|
| Исключить из строки группы символов, расположенные между скобками вместе со скобками. Предполагается, что нет вложенных скобок.
|
| В строке есть символы *. Преобразовать строку следующим образом: удалить все символы *, и повторить каждый символ, отличный от *.
|
| Преобразовать строку: после каждой буквы a добавить символ!
|
| Написать программу, которая осуществляет сравнение двух строк и выводит сообщение о том, какие символы совпадают.
|
| Написать программу, реализующую функцию вставки подстроки S1 длиной k в строку S с позиции номер n.
|
| Написать программу, которая записывает строку в обратном порядке.
|
| Вывести текст, составленный из последних букв всех слов.
|
| Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвертым и т. д.
|
| Отредактировать заданное предложение, удаляя из него все слова с чётными номерами.
|
| Найти самое длинное и самое короткое слово в заданном предложении.
|
| Из предложения удалить все символы, совпадающие с символом, введенным с клавиатуры.
|
| Из текста удалить те его части, которые заключены в кавычки (вместе с кавычками).
|
В начало практикума
Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...
|
Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...
|
Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...
|
Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...
|
Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...
Эндоскопическая диагностика язвенной болезни желудка, гастрита, опухоли Хронический гастрит - понятие клинико-анатомическое, характеризующееся определенными патоморфологическими изменениями слизистой оболочки желудка - неспецифическим воспалительным процессом...
Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности.
1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности.
1.1. Международная безопасность (глобальная и...
|
Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x):
Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...
Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...
Уравнение волны. Уравнение плоской гармонической волны. Волновое уравнение. Уравнение сферической волны Уравнением упругой волны называют функцию , которая определяет смещение любой частицы среды с координатами относительно своего положения равновесия в произвольный момент времени t...
|
|