Лабораторная работа №5. Строки

Цель работы:Приобретение навыков программирования при решении задач обработки текстов.

 

Отчет на лабораторную работу должен содержать:

- задание по варианту;

- листинг программы, записанного по правилам языка Си/Си++ (все значения для вычисления ввести с клавиатуры.);

- составить блок-схему данного алгоритма;

- скриншот результата программы.

 

5.1 Варианты заданий

1. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 2, то удаляются все числа, которые делятся на 2.

2. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L четная, то удаляются 2 первых и 2 последних символа.

3. Выяснить, имеются ли среди символов S1...Sn некоторой строки все буквы, входящие в слово DOS.

4. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L нечетная, то удаляется символ, стоящий посередине строки.

5. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов каждого второго символа ! на $.

6. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов всех пробелов на символ $.

7. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L>10, то удаляются все цифры.

8. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 3, то удаляются все числа, делящиеся на 3.

9. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 5, то подсчитывается количество скобок всех видов.

10. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 4, то первая часть строки меняется местами со второй.

11. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L=10, то удаляются все A...Z.

12. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина

L >15, то удаляются все a…z.

13. В строке символов поменять местами символы на четных и нечетных позициях.

14. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина

L >6, то выделяется подстрока в { } скобках.

15. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина

 

5.2 Методические указания к выполнению лабораторной работы

Строка – это массив, элементы которого являются символы.

Основные действия над строками и символами реализуются с помощью описываемых ниже стандартных функций:

- size_t strlen (const char *s) — возвращает длину в байтах строки s, не включая '\0'.

- char * strcat (char *dest, const char *src) — присоединяет строку src в конец строки dest.

- char * strcpy (char *dest, const char *src) — копирует строку src в место па­мяти, на которое указывает dest.

- char * strncat (char *dest, const char *src, size_t maxlen) — присоединяет maxlen символов строки src в конец строки dest.

- char * strncpy (char *dest, const char *src, size_t maxlen) — копирует maxlen первых символов строки src в место памяти, на которое указывает dest.

- char * strstr (char *sl, const char *s2) — отыскивает первое вхождение строки s2 в строку si.

- int strcmp (const char *sl, const char *s2) — сравнивает две строки в лекси­кографическом порядке с учетом различия прописных и строчных букв; возвращает значение меньше нуля, если si располагается в упорядочен­ном по алфавиту порядке раньше, чем s2, и больше нуля, если наоборот. Функция возвращает нуль, если строки идентичны.

- char * stricmp (const char *sl, const char *s2) — аналогична strcmp, только не различает прописные и строчные буквы.

Пример

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

#include <stdio.h>

#include <string.h>

#include <conio.h>

 

void main(void)

{

char s[100]; // обьявление символьного массива

int i, k;

clrscr();

puts(" Введите исходную строку");

gets(s);

k=strlen(s);

puts(" ... РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ......\n");

for (i=k; i>=0; i--)

printf("%c",s[i]);

/* вывод элементов массива в обратном порядке */

printf("\n Press any key...");

getch();

}

 

Контрольные вопросы:

1. Что означает нуль-терминатор?

2. Какими переменными инициализируются строки?

3. Как инициализируются строки?

4. Как обратиться к элементу строки?

5. Как происходит подключение стандартных библиотек.

6. Что такое строка?

7. Чем отличие стоки от одномерных массивов?

8. Какая стандартная библиотека отвечает для работы со строками?