Разделы презентаций


Программирование на языке С++

Содержание

План занятия Рекурсия Работа со строками

Слайды и текст этой презентации

Слайд 1Программирование на языке С++
Занятие 8

Программирование на языке С++Занятие 8

Слайд 2План занятия
Рекурсия
Работа со строками


План занятия Рекурсия Работа со строками

Слайд 3Что такое рекурсия?
Натуральные числа:
Рекурсия — это способ определения множества объектов

через само это множество на основе заданных простых базовых случаев.
Числа

Фибоначчи:

1, 1, 2, 3, 5, 8, 13, 21, 34, …

Что такое рекурсия?Натуральные числа:Рекурсия — это способ определения множества объектов через само это множество на основе заданных

Слайд 4Вычисление суммы цифр числа
int sumDig ( int n )
{

int sum;
sum = n %10;
if ( n >=

10 )
sum += sumDig ( n / 10 );
return sum;
}

рекурсивный вызов

sumDig( 1234 )

4 + sumDig( 123 )

4 + 3 + sumDig( 12 )

4 + 3 + 2 + sumDig( 1 )

4 + 3 + 2 + 1

последняя цифра

Вычисление суммы цифр числаint sumDig ( int n ) { int sum; sum = n %10; if

Слайд 5Алгоритм Евклида
Алгоритм Евклида. Чтобы найти НОД двух натуральных чисел, нужно

вычитать из большего числа меньшее до тех пор, пока меньшее

не станет равно нулю. Тогда второе число и есть НОД исходных чисел.

int NOD ( int a, int b )
{
if ( a == 0 || b == 0 )

if ( a > b )
return NOD( a - b, b );
else return NOD( a, b – a );
}

return a + b;

рекурсивные вызовы

условие окончания рекурсии

Алгоритм ЕвклидаАлгоритм Евклида. Чтобы найти НОД двух натуральных чисел, нужно вычитать из большего числа меньшее до тех

Слайд 6Как работает рекурсия?
int Fact ( int N )
{
int F;


cout

if ( N <= 1 )
F = 1;
else F = N * Fact(N - 1);
cout << "<- N=" << N << endl;
return F;
}

-> N = 3
-> N = 2
-> N = 1
<- N = 1
<- N = 2
<- N = 3

Факториал:

Как работает рекурсия?int Fact ( int N ){ int F;   cout

Слайд 7Зачем нужны символьные строки?
char s[10]; // массив символов
элементы массива –

отдельные объекты
сложно работать со строками переменной длины
Хочется:
строка – единый объект
длина

строки может меняться во время работы программы

string s; // символьная строка

строка

Зачем нужны символьные строки?char s[10]; // массив символовэлементы массива – отдельные объектысложно работать со строками переменной длиныХочется:строка

Слайд 8Символьные строки
Начальное значение:
string s = "Привет!";
Вывод на экран:
cout

= "Привет!";
Присваивание:

Символьные строкиНачальное значение:string s =

Слайд 9Символьные строки
Ввод с клавиатуры:
cin >> s;
Отдельный символ:
s[4] = 'a';
Длина строки:
только

до пробела!
getline ( cin, s );
до перевода строки (Enter)
int n;
...
n

= s.size();

метод для объектов типа string

Символьные строкиВвод с клавиатуры:cin >> s;Отдельный символ:s[4] = 'a';Длина строки:только до пробела!getline ( cin, s );до перевода

Слайд 10Символьные строки
#include
using namespace std;
main()
{
string s;
int i;
cout

( i = 0; i < s.size(); i++ )
if ( s[i] == 'а' )
s[i] = 'б';
cout << s;
}

Задача: заменить в строке все буквы 'а' на буквы 'б'.

цикл по всем символам строки

Символьные строки#include using namespace std;main(){ string s; int i; cout

Слайд 11Задачи
«A»: Ввести с клавиатуры символьную строку и заменить в ней

все буквы «а» на «б» и все буквы «б» на

«а» (заглавные на заглавные, строчные на строчные).
Пример:
Введите строку:
ааббААББссСС
Результат:
ббааББААссСС
Задачи«A»: Ввести с клавиатуры символьную строку и заменить в ней все буквы «а» на «б» и все

Слайд 12Задачи
«B»: Ввести с клавиатуры символьную строку и определить, сколько в

ней слов. Словом считается последовательности непробельных символов, отделенная с двух

сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Найдено слов: 3
Задачи«B»: Ввести с клавиатуры символьную строку и определить, сколько в ней слов. Словом считается последовательности непробельных символов,

Слайд 13Задачи
«C»: Ввести с клавиатуры символьную строку и найдите самое длинное

слово и его длину. Словом считается последовательности непробельных символов, отделенная

с двух сторон пробелами (или стоящая с краю строки). Слова могут быть разделены несколькими пробелами, в начале и в конце строки тоже могут быть пробелы.
Пример:
Введите строку:
Вася пошел гулять
Самое длинное слово: гулять, длина 6
Задачи«C»: Ввести с клавиатуры символьную строку и найдите самое длинное слово и его длину. Словом считается последовательности

Слайд 14s = "0123456789";
s1 = s.substr( 3 ); // "3456789"
Операции

со строками
Объединение (конкатенация):
string s, s1, s2;
s1 = "Привет";
s2 =

"Вася";
s = s1 + ", " + s2 + "!";

"Привет, Вася!"

Срез (подстрока):

s = "0123456789";
s1 = s.substr( 3, 5 ); // "34567"

с какого символа

откуда

5

s =

Слайд 15Операции со строками
Вставка:
s = "0123456789";
s.insert( 3,"ABC" ); // "012ABC3456789"
что
куда
с какого

символа
Удаление:
s = "0123456789";
s.erase ( 3, 6 ); // "0129"
с какого

символа

сколько символов

Операции со строкамиВставка:s =

Слайд 16Поиск символа в строке
string s = "Здесь был Вася.";
int n;
n

= s.find ( 'с' ); // 3
find – искать
if (

n >= 0 )
cout << "Номер символа 'c': "
<< n << endl;
else cout << "Символ не найден.\n";

Слайд 17Поиск подстроки
string s = "Здесь был Вася.";
int n;
n = s.find

( "Вася" ); // 10
if ( n >= 0 )


cout << "Слово начинается с s["
<< n << "]\n";
else
cout << "Слово не найдено.\n";

Слайд 18Пример обработки строк
Задача: Ввести имя, отчество и фамилию. Преобразовать их

к формату «фамилия-инициалы».
Пример:
Введите имя, отчество и фамилию:

Василий Алибабаевич Хрюндиков
Результат:
Хрюндиков В.А.

Алгоритм:
найти первый пробел и выделить имя
удалить имя с пробелом из основной строки
найти первый пробел и выделить отчество
удалить отчество с пробелом из основной строки
«сцепить» фамилию, первые буквы имени и фамилии, точки, пробелы…

Алибабаевич Хрюндиков

Хрюндиков

Хрюндиков В.А.

Пример обработки строкЗадача: Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».  Пример:	 Введите имя,

Слайд 19Пример обработки строк
main()
{
string s, name, name2;
int n;
cout

s );
name = s.substr(0,1) + '.';// начало имени
n = s.find(' '); // найти пробел
s = s.substr ( n+1 ); // удалить имя
n = s.find(' '); // найти пробел
name2 = s.substr(0,1) + '.';// начало отчества
s = s.substr ( n+1 ); // осталась фамилия
s = s + ' ' + name + name2; // результат
cout << s;
}
Пример обработки строкmain(){ string s, name, name2; int n; cout

Слайд 20Задачи
«A»: Ввести с клавиатуры в одну строку фамилию, имя и

отчество, разделив их пробелом. Вывести фамилию и инициалы.
Пример:
Введите фамилию, имя

и отчество:
Иванов Петр Семёнович
П.С. Иванов
Задачи«A»: Ввести с клавиатуры в одну строку фамилию, имя и отчество, разделив их пробелом. Вывести фамилию и

Слайд 21Задачи
«B»: Ввести адрес файла и «разобрать» его на части, разделенные

знаком '/'. Каждую часть вывести в отдельной строке.
Пример:
Введите адрес файла:
C:/Фото/2013/Поход/vasya.jpg
C:
Фото
2013
Поход
vasya.jpg

Задачи«B»: Ввести адрес файла и «разобрать» его на части, разделенные знаком '/'. Каждую часть вывести в отдельной

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика