Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

ОБРАБОТка строк

Цель работы

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;

}

 

Контрольные вопросы и задания

 

1. Дать определение строки.

2. Как объявить строку статически?

3. Как объявить строку динамически?

4. В чем особенность цикла обработки строки?

5. Какие операции можно произвести над символами?

6. Как обратиться к символу строки по имени?

7. Как обратиться к символу строки по адресу?

8. Объявите строку статически, динамически.

9.Обратитесь к символам строки по имени, по адресу при каждом выделении памяти.

10. Для наилучшего освоения темы выполните варианты 3, 9, 14.

 

 

Задание

 

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

 

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

Вариант 2. В заданной строке подсчитать количество не цифр.

 

Вариант 3. В заданной строке подсчитать количество не латинских букв

 

Вариант 4. В заданной строке определить номер первого символа, равного заданному символу.

 

Вариант 5. Дана строка. Заменить все цифры в строке на пробелы и подсчитать количество маленьких латинских букв.

 

Вариант 6. Дана строка. Изменить заданную строку, заменив большие латинские буквы маленькими, а маленькие - на большие. Посторонние символы не менять.

 

Вариант 7. Дана строка. Заменить в исходной строке первые n символов на символ, введенный с клавиатуры. Программа должна работать корректно при любом n.

 

Вариант 8. Дана строка. Заменить в ней указанный символ другим. Символы ввести с клавиатуры.

 

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

 

Вариант 10. Дана строка. Заменить n последних символов на один и тот же каждый. Символ ввести с клавиатуры. Программа должна работать корректно при любом n.

 

Вариант 11. Дана строка. Вычислить адрес символа строки, совпавшего с указанным символом. Если ни один символ из строки не совпал, то вывести сообщение.

 

Вариант 12. Дана строка. Проверить, является ли она палиндромом. Фраза называется палиндромом, если она читается от конца к началу так же, как от начала к концу при игнорировании всех знаков, кроме букв. Например, фраза "аргентина манит негра" – палиндром.

 

Вариант 13. Написать программу, которая анализирует строку, начиная с позиции pos, и вычисляет номер первого найденного пробела. Если пробела нет или значение pos неподходящее – результат равен 0.

 

Вариант 14. Даны две строки. Дозаписать n последних символов второй строки в конец первой. Считать, что размеры строк достаточны.

 

Вариант 15. Даны две строки. Определить, равны ли строки (совпадение должно быть буквальным).

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

 




Поделиться с друзьями:


Дата добавления: 2014-11-06; Просмотров: 1081; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.