Лабораторная работа №3 (Вариант 24)
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №3
по дисциплине
«Программирование на языке выс. уровня»
на тему:
«Работа со строками»
|
Студент |
|
|
|
Ключанских А.С |
|
|||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
|||||||||
|
Группа |
|
АС-10-1 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|||||||||
|
Принял |
|
|
|
|
|
|||||||||
|
|
|
|
|
Фарафонов А.С. |
|
|||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2010
-
Задание кафедры
224 |
Удалить из строки s все символы, встречающиеся не менее одного раза в строке s1 и не более трех раз в строке s2. - с использованием функций библиотеки string.h - работая со строками как с массивами.
|
-
Краткие теоретические сведения
Стандартная библиотека языка С обладает богатым и разнообразным набором функций для обработки строк и символов. Строковые функции работают с массивами символов (строками), заканчивающимися символом конца строки. В языке С для работы со строковыми функциями используется заголовок <string.h>. Строка — это одномерный массив символов, заканчивающийся нулевым символом. Таким образом, строка содержит символы, составляющие строку, а также нулевой символ. Это единственный вид строки, определенный в С.
Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:
char str[11];
Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например,
"некоторая строка"
В конец строковой константы компилятор автоматически добавляет нулевой символ. Для обработки строк в С определено много различных библиотечных функций. Чаще всего используются следующие функции:
strcpy(s1,s2) - копирование s2 в s1
strcat(s1,s2) - конкатенация (присоединение) s2 в конец s1
strlen(s1) - возвращает длину строки s1
strcmp(s1,s2) - возвращает 0, если s1 и s2 совпадают, отрицательное значение, если s1<s2 и положительное значение, если s1>s2
strchr(s1,ch) - возвращает указатель на первое вхождение символа ch в строку s1
strstr(s1,s2) - возвращает указатель на первое вхождение строки s2 в строку s1
-
Блок-схема программы
-
С использованием функций библиотеки string.h
-
Работая со строками как с массивами.
-
Листинг программы
-
С использованием библиотеки string.h
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
const int len = 100;
void main()
{
setlocale(LC_ALL, "Russian");
char s1[len],s2[len],s3[len];
gets(s1);gets(s2);gets(s3);
char buffer_s1[256],buffer_s2[256],buffer_s3[256];
memset(buffer_s1,0,256);
memset(buffer_s2,0,256);
memset(buffer_s3,0,256);
int i = 0;
char c;
while(s1[i])
{
c = s1[i];
buffer_s1[c]++;
i++;
}
i=0;
while(s2[i])
{
c = s2[i];
buffer_s2[c]++;
i++;
}
i=0;
char s[len];
int j = 0;
while(s3[i])
{
c = s3[i];
if(buffer_s1[c] > 1 && buffer_s2[c] <= 3 && buffer_s2[c] >= 1)
{
i++;
continue;
}
strcpy(&s[j],&s3[i]);
i++;
j++;
}
s[j]=0;
printf("\nРезультат: %s",s);
getch();
}
-
Работая со строками, как с массивами.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
const int len = 100;
void main()
{
setlocale(LC_ALL, "Russian");
char s1[len],s2[len],s3[len];
gets(s1);gets(s2);gets(s3);
char buffer_s1[256],buffer_s2[256],buffer_s3[256];
memset(buffer_s1,0,256);
memset(buffer_s2,0,256);
memset(buffer_s3,0,256);
int i = 0;
char c;
while(s1[i])
{
c = s1[i];
buffer_s1[c]++;
i++;
}
i=0;
while(s2[i])
{
c = s2[i];
buffer_s2[c]++;
i++;
}
i=0;
char s[len];
int j = 0;
while(s3[i])
{
c = s3[i];
if(buffer_s1[c] > 1 && buffer_s2[c] <= 3 && buffer_s2[c] >= 1)
{
i++;
continue;
}
s[j]=s3[i];
i++;
j++;
}
s[j]=0;
printf("\nРезультат: %s",s);
getch();
}
-
Контрольный пример
Выводы о проделанной работе
В ходе выполнения данной лабораторной работы я написал программу, которая удаляет из данной строки символы, которые встречаются более 1 раза в другой строке, но менее 3 раз в третьей. Я реализовал это двумя способами:
- с использованием функций библиотеки string.h
- работая со строками как с массивами.
Таким образом, я улучшил свои навыки в программировании на языке Си, познакомился с функциями стандартной библиотеки string.h, научился решать практические задачи разными способами с помощью одного и того же языка.
Несмотря на различные способы реализации, данная программа выдает один и тот же результат, если ввести и в первый и во второй ее вариант одинаковые строки.
Список использованной литературы
-
Керниган, Б.У. Язык программирования C [Текст]: учеб.пособие / Б.У.Керниган, Д.М.Ритчи. — М.: «Вильямс», 2007. — 304 с.
-
Шилдт, Г. C++ Шаг за шагом [Текст]: учеб.пособие/ Г. Шилдт.— М.: «ЭКОМ», 2007. — 640с.