Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2 Программирование.doc
Скачиваний:
24
Добавлен:
17.03.2015
Размер:
285.18 Кб
Скачать

Лабораторная работа 7

ОбрабоТка строк Цель работы

1. Научиться:

–объявлять строки в программе статически и динамически;

– вводить строки с пробелами внутри и без пробелов;

– писать стандартный цикл обработки строки;

–обращаться к символам строки по имени и через адрес;

– производить различные действия над символами.

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

Порядок написания программы

1. Выделить память под строку статически или динамически.

2. Ввести строку с клавиатуры.

3. Провести указанную обработку строки.

4. Вывести на экран исходную строку.

5. Вывести результат обработки.

6. Освободить динамическую память (если она выделялась).

Примеры написания программ

Задача. Написать программу, которая возвращает номер последнего символа строки, совпавшего с указанным символом. Если символа в строке нет, возвратить 0.

Анализ решения задачи. Нельзя путать два понятия –индекссимвола строки иномерсимвола строки. Понятия схожи, но номер начинается с 1, а индекс с 0, с помощью индекса организуется перебор символов в строке. Зная индексi, легко определить номер –i+1.

Примечание. Вызов функцииRusперед строками-константами с русским текстом осуществляйте самостоятельно.

1 Вариант решения – обращение к элементу массива идет через имя элемента массива, память выделяется статически, строка вводится без пробелов внутри.

Программа будет строиться в виде проекта.

Текст функции main будет выглядеть так:

//содержимое файла main.cpp

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include "Rus.h" //прототип функции русификации

int main(void)

{

char str[40], simvol; //объявили данные

int n=0,i; //номер искомого элемента массива

// ввод исходных данных

cout<<"\nВведите строку";

cin>>str;

cout<<"Введите символ";

cin>>simvol;

//организуем перебор символов строки для их обработки

for(i=0; str[i]!=0; i++)

if(str[i]== simvol) //если символ строки с инд i совпал с simvol

n= i+1; //номер символа

if(n!=0) //если символ в строке найден

cout<<"\nСимвол "<<n<<" по счету\n"; //вывод номера символа

else

cout<<"Символ в строке не найден";

return 0;

}

2 Вариант решения – обращение к элементу массива идет через адрес элемента массива, память выделяется динамически, строка вводится с пробелами внутри.

//содержимое файла main.cpp

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include "Rus.h" //прототип функции русификации

int main(void)

{

char *str= new char[40], simvol; //объявили данные

int n=0,i; //номер символа и индекс

// ввод исходных данных

cout<<"\nВведите строку";

cin.getline(str, 40);

cout<<"Введите символ";

cin>>simvol;

//организуем перебор символов строки для их обработки

for(i=0; *(str+i)!=0; i++)

if(*(str+i)== simvol) //если символ строки с инд i совпал с simvol

n= i+1; //номер символа

if(n!=0) //если символ в строке найден

cout<<"\nСимвол "<<n<<" по счету\n"; //вывод номера символа

else

cout<<"Символ в строке не найден";

return 0;

}