Лабораторная работа №3 / Моя Лабораторная №3
.doc
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №3
по дисциплине
«Программирование на языке выс. уровня»
на тему:
«Функции библиотеки string, работа со строками»
|
Студент |
|
|
|
|
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Фарафонов А.С. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2009
-
Задание
№
Задание
9
Дана строка S. Разбить строку на две строки S1 и S2. Строка S1 должна содержать первую и последнюю четверти строки S, а строка S2 должна содержать вторую и третью четверти строки S. Округление проводить в меньшую сторону. Сформировать строки S1 и S2 двумя способами:
- с использованием функций библиотеки string.h
- работая со строками как с массивами.
-
Краткие теоретические сведения
Одномерный массив наиболее часто применяется в виде строки символов. Строка — это одномерный массив символов, заканчивающийся нулевым символом. В языке С признаком окончания строки (нулевым символом) служит символ '\0'. Таким образом, строка содержит символы, составляющие строку, а также нулевой символ. Это единственный вид строки, определенный в С.
Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:
char str[11];
Последний, 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
-
Блок-схема программы
Блок-схема подпрограммы «Разбиение строки S на S1 и S2 согласно условию, работая со строками как с массивами»
Блок-схема подпрограммы «Разбиение строки S на S1 и S2 согласно условию, используя функции библиотеки string.h.»
-
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
#include <math.h>
void massivom()//работая со строками как с массивами
{
const int N=80;
int i, a1, a3, l, k;
char S[N], S1[N], S2[N], s;
printf("Вводите строку, когда закончите ввод нажмите *:\n");
for(i=0;i<N;i++)
{
s=getch();
if (s=='*') break;
S[i]=s;
}
l=i;
for(i=0;i<l;i++)
printf("%c", S[i]);
printf("\nДлина строки: %d", l);
a1=l/4;
a3=(3*l)/4;
for(i=0;i<a1;i++)
{
k=i;
S1[i]=S[i];
}
for(i=a3;i<l;i++)
{
k++;
S1[k]=S[i];
}
k=0;
for(i=a1;i<a3;i++)
{
S2[k]=S[i];
k++;
}
printf("\nПервая строка:");
for(i=0;i<(a1+l-a3);i++)
printf("%c",S1[i]);
printf("\nВторая строка:");
for(i=0;i<(a3-a1);i++)
printf("%c",S2[i]);
}
void str()//с использованием функций библиотеки string.h
{
const int N=80;
char S[N], S1[N]="", S2[N]="";
int l;
printf("\n\nВведите строку: ");
gets(S);
l=strlen(S);
printf("\nДлина строки= %d",l);
strncat(S1, S, l/4);
strncat(S1, S + 3*l/4, l - 3*l/4);
strncat(S2, S + l/4, l/2);
printf("\nПервая строка:%s", S1);
printf("\nВторая строка:%s", S2);
}
void main()
{
int p;
setlocale(LC_ALL,"Russian");
massivom();
str();
getch();
}
-
Контрольный пример
-
Выводы о проделанной работе
Я Разбил строку S на две строки S1 и S2. Строка S1 содержит первую и последнюю четверти строки S, а строка S2 содержит вторую и третью четверти строки S. Округление провел в меньшую сторону. Сформировал строки S1 и S2 двумя способами:
- с использованием функций библиотеки string.h
- работая со строками как с массивами.
Таким образом, я повысил навык работы в среде C++, ознакомиля с функциями библиотеки string.h и особенности работы со строкой как с массивом.
-
Список использованной литературы
-
Шилдт Г. Искусство программирования на C++. БХВ.2005
-
Шилдт Г. C++ Руководство для начинающих. Вильямс.2005
-
Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004