Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №3 / Моя Лабораторная №3

.doc
Скачиваний:
14
Добавлен:
20.06.2014
Размер:
1.51 Mб
Скачать

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №3

по дисциплине

«Программирование на языке выс. уровня»

на тему:

«Функции библиотеки string, работа со строками»

Студент

подпись, дата

фамилия, инициалы

Группа

Принял

Фарафонов А.С.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2009

  1. Задание

    Задание

    9

    Дана строка S. Разбить строку на две строки S1 и S2. Строка S1 должна содержать первую и последнюю четверти строки S, а строка S2 должна содержать вторую и третью четверти строки S. Округление проводить в меньшую сторону. Сформировать строки S1 и S2 двумя способами:

    - с использованием функций библиотеки string.h

    - работая со строками как с массивами.

  2. Краткие теоретические сведения

Одномерный массив наиболее часто применяется в виде строки символов. Строка — это одномерный массив символов, заканчивающийся нулевым символом. В языке С признаком окончания строки (нулевым символом) служит символ '\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

  1. Блок-схема программы

Блок-схема подпрограммы «Разбиение строки S на S1 и S2 согласно условию, работая со строками как с массивами»

Блок-схема подпрограммы «Разбиение строки S на S1 и S2 согласно условию, используя функции библиотеки string.h.»

  1. Листинг программы

#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();

}

  1. Контрольный пример

  1. Выводы о проделанной работе

Я Разбил строку S на две строки S1 и S2. Строка S1 содержит первую и последнюю четверти строки S, а строка S2 содержит вторую и третью четверти строки S. Округление провел в меньшую сторону. Сформировал строки S1 и S2 двумя способами:

- с использованием функций библиотеки string.h

- работая со строками как с массивами.

Таким образом, я повысил навык работы в среде C++, ознакомиля с функциями библиотеки string.h и особенности работы со строкой как с массивом.

  1. Список использованной литературы

  1. Шилдт Г. Искусство программирования на C++. БХВ.2005

  2. Шилдт Г. C++ Руководство для начинающих. Вильямс.2005

  3. Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004

Соседние файлы в папке Лабораторная работа №3