Пример2. Демонстрация работы с функциями строки




Практическая работа № 1. Обработка массива символов.

Объём учебного времени – 2ч

 

Методические рекомендации

1. Цель работы: Научиться работать со строками и символами.

2. Перечень необходимых средств обучения:

 

2.1 Технические средства обучения:

Компьютер Core i3 3.0, 2 Gb оперативной памяти, винчестер 250 Gb, DVD

2.2 Программное обеспечение:

- Программа ОС Windows XP/7;

- Антивирусные программы: Kaspersky AntiVirus;

- Браузер Internet Explorer;

- Интегрированная среда программирования MS Visual Studio 2010.

 

3. Основные теоретические положения:

В C++ используется два типа строк: массив элементов типа char и тип str.

1 вариант.

Объявления массива строк выглядит как объявление массивов чисел:

Для хранения строки нам нужен массив: char str[7] = {"с","т","р","о"."к","а"};

Есть более простой способ: char str[] = "строка";

Каждая строка должна заканчиваться символьной константой "\0", которая представляет пустой байт.

Способы ввода строки с клавиатуры:

1 способ: функцией scanf () со спецификацией ввода %s. Функция вводит символы до первого пробела

2 способ: специальная библиотечная функция gets (). Она находится в файле stdio.h. Данная функция позволяет вводить строки, содержащие пробелы. При этом можно исправлять введённые символы пока не нажата клавиша ENTER.

Обе указанные функции автоматически ставят в конце строки (массива) нулевой байт.

Вывод строк организуется через функции printf () или puts ().Функция puts () предусматривает вывод в конце выводимой строки символа новой строки. Функция printf () не выводит этого символа в конце строки.

Для отображения вводимого текста на русском языке требуется сохранить файл с кодировкой – кириллица (DOS) 866.

 

Пример 1. Ввод и вывод строки разными способами

#include "stdafx.h"

#include <conio.h>

#include <stdio.h>

#include <iostream>

// Ввод строки с клавиатуры

Void main()

{

char str[80];

char str0[80];

printf("Введите строку длиной не более 80 символов \n");

gets(str); /* Читает строку с клавиатуры */

printf("Вы ввели строку: %s \n", str);

printf("Введите еще одну строку длиной не более 80 символов \n");

scanf("%s", str0); /* Читает строку с клавиатуры пока не встретится пробел */

printf("Вы ввели строку \n");

puts(str0);

getch();

}

2 вариант.

Класс string предназначен, естественно, для работы со строками. Он находится в пространстве имен std и для его использования надо подключить string.

Для его работы необходимо в начале программы подключить заголовочный файл string: #include <string>

Пример ввода строки:

char S[6];

cout << "Input string:";

cin.getline (S,6,'.');

cout <<"You string: "<< S<<'\n';

Пример определения длины строки:

char S1[11] = "0123456789";

cout<< "Lenght=" <<strlen(S1)<<'\n';

cout<<"Size ="<<sizeof(S1)<<'\n';

Пример2. Демонстрация работы с функциями строки

#include <iostream>

#include <string>

using namespace std;

#include "stdafx.h"

#include <iostream>

#include <string>

#include <conio.h>

using namespace std;

void main(){

string s0;

string s1;

getline(cin,s0);

getline(cin,s1);

cout<<" Конкатенация строк";

string s = s0 + s1;

cout<<s<<"\n";

cout<<"Получаем символ на определенном месте";

char ch0 = s0.at(1);

cout<<ch0<<"\n";

char ch1 = s0[3];

cout<<ch1<<"\n";

cout<<"Выясняем, не пустая ли строка ";

if (s0.empty()){

cout << "- cтрока пустая"<<"\n";

}

else{

cout << "- cтрока не пустая"<<"\n";

}

cout<<endl;

cout<<"Обмен значения двух строк ";

swap(s0, s1);

//Присваиваем и сравниваем 2 строки"

s1 = s0;

if(s1 == s0){

cout << "Строки равны"<<"\n";

}

else{

cout << "Строки не равны"<<"\n";

}

cout<<endl;

cout<<"Чтение введенной с клавиатуры строки ";

getline(cin, s1);

cout<<s1;

cout<<endl;

cout<<"Получение длины строки ";

cout<<s1.length();

getch();

}

Чтобы обратиться к отдельному символу в строке, используется цикл:

for (i=0; i<4; i++) if (str[i]==’_’) k++; cout << str[0];

 

4. Практические указания:

4.1 Создайте консольное приложение.

4.2 Написать программы для решения задач:

1 вариант.

1. В данной строке подсчитать количество пробелов.

2. Из данной строки получить новую, заменив в ней все символы звёздочка на дефис.

2 вариант.

1. Подсчитать, сколько раз в данной строке встречается буквосочетание ‘ни’.

2. Из данной строки получить новую, удалив из неё все точки.

3 вариант.

1. Из данной строки получить новую, заменив в ней все символы звёздочка на дефис.

2. Определить, на какую букву оканчивается первое слово.

4 вариант.

1. Заменить все символы, стоящие на чётных местах на пробел.

2. Подсчитать количество букв латинского алфавита в данной строке.

5 вариант.

1. Поменять в строке все предлоги «в» на «с».

2. Выяснить, есть ли в данной строке символы, входящие в слово clear.

6 вариант.

1. Дано арифметическое выражение, определить соответствие открытых и закрытых скобок, в случае несоответствия подсчитать их количество.

2. Заменить все символы, стоящие на нечётных местах на пробел и подсчитать количество пробелов в новой строке.

7 вариант.

1. Выдать номер позиции строки, в которой в пятый раз встречается символ ‘,’.

2. Из данной строки получить новую, удалив из ней все группы букв «abed».

8 вариант.

1. Подсчитать, сколько раз в данной строке встречается буквосочетание ‘ни’.

2. Выяснить, есть ли в данной строке символы, входящие в слово clear.

9 вариант.

1. Подсчитать количество букв латинского алфавита в данной строке.

2. Из данной строки получить новую, заменив "sbc" на "abed".

10 вариант.

1. Поменять в строке все предлоги «в» на «с».

2. Определить, сколько раз в строке содержится заданное слово.

11 вариант.

1. Дана строка символов. Определить, есть ли в строке подряд расположенные символы: точка, запятая и дефис.

2. Из данной строки получить новую, заменив все пробелы двойными пробелами.

12 вариант.

1. Подсчитать количество пар слов, разделённых двойными пробелами.

2. Из данной строки получить новую, удалив из нее все символы, не являющимися буквами латинского алфавита

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

5.1 Перечислите основные функции обработки строк.

5.2 Минимальный набор операций, которыми должен обладать класс string

6. Список рекомендуемой литературы:

Основная литература:

1. Немцова Т.И. Програмиирование на языке выского уровня. Программирование на языке Object Pascal: учеб. пособие /Т.И. Немцова, С.Ю. Голова, И.В. Абрамова. – М.: ФОРУМ: ИНФРА – М, 2012. – 496 с.

2. Овечкин Г.В. Компьютерное моделирование: учебник для студ. учреждений сред. проф. образования / Г.В. Овечкин.- М.: Издательский центр «Академия», 2015.-224с.

3. Немцова, Т. И. Программирование на языке высокого уровня. Программирование на языке С++: учеб. пособие / Т. И. Немцова, С. Ю. Голова, А. И. Терентьев. - М.: ФОРУМ: ИНФРА-М, 2012. - 512 с.: ил. + CD.

4. Гуриков, С. Р. Введение в программирование на языке Visual C#: учеб. пособие / С. Р. Гуриков. - М.: ФОРУМ: ИНФРА-М, 2013. - 448 с.

 

Дополнительная литература:

5. Рао Сиддхартха Освой самостоятельно С++ за 21 день, 7 изд.: Пер с англ.-М.: ООО «И.Д.Вильямс», 2013 – 688 с.: ил. – Парал.тит.англ.

6. Голицына О.Л. Программное обеспечение: учеб. пособие для среднего профессионального образования-М.:ФОРУМ;ИНФРА-М,2006.-432 с.

7. Виллемер А. Программирование на С++/А. Виллемер;[пер. с нем. М.А.Райтман].-М.:Эксмо,2013.-528с.+CD.-(Мировой компьютерный бестселлер).

8. Культин Н.Б. Microsoft Visual C++ в задачах и примерах.- СПб.: БХВ-Петербург,2010.-272 с.:ил.+CD-ROM.

9. Партыка Т.Л. Операционные системы, среды и оболочки: учеб. пособие для студ. учреждений сред. проф. Образования/ Т.Л. Партыка, И.И. Попов. – 3-е изд., перераб. и доп. – М.: ФОРУМ, 2010. – 543 с.

10. Окулов С.М. Основы программирования: учебное пособие.- М.:БИНОМ. Лаборатория знаний, 2010.- 440 с.

11. Голицына О.Л. Основы алгоритмизации и программирования: учеб. пособие для сред. проф. образования.- М: ФОРУМ; ИНФРА-М,2005.-432 с.

12. Рихтер Дж. Программирование приложений для Microsoft Windows /Пер. с англ. – M.: Microsoft Press, 2003. – C.48-313.


 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-12-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: