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

Программирование на языке С++
План занятия
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
Программирование на языке С++
1/21
Средняя оценка: 4.2/5 (всего оценок: 13)
Код скопирован в буфер обмена
Скачать (126 Кб)
1

Первый слайд презентации: Программирование на языке С++

Занятие 8

Изображение слайда
2

Слайд 2: План занятия

Рекурсия Работа со строками

Изображение слайда
3

Слайд 3

Что такое рекурсия? Натуральные числа : 1 – натуральное число если – натуральное число, то – натуральное число Рекурсия — это способ определения множества объектов через само это множество на основе заданных простых базовых случаев. Числа Фибоначчи : при 1, 1, 2, 3, 5, 8, 13, 21, 34, …

Изображение слайда
4

Слайд 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 последняя цифра

Изображение слайда
5

Слайд 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

Слайд 6

Как работает рекурсия? int Fact ( int N ) { int F; cout << "-> N=" << N << endl ; 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 Факториал:

Изображение слайда
7

Слайд 7

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

Изображение слайда
8

Слайд 8

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

Изображение слайда
9

Слайд 9

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

Изображение слайда
10

Слайд 10

Символьные строки #include <iostream> using namespace std; main() { string s; int i; cout << "Введите строку: " ; getline ( cin, s ); for ( i = 0 ; i < s.size(); i++ ) if ( s[i] == 'а' ) s[i] = 'б' ; cout << s; } Задача : заменить в строке все буквы ' а ' на буквы ' б '. цикл по всем символам строки

Изображение слайда
11

Слайд 11

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

Изображение слайда
12

Слайд 12

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

Изображение слайда
13

Слайд 13

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

Изображение слайда
14

Слайд 14

s = "0123456789" ; s1 = s.substr ( 3 ); // "34567 89 " Операции со строками Объединение ( конкатенация ) : string s, s1, s2; s1 = " Привет " ; s2 = " Вася " ; s = s1 + ", " + s2 + "!" ; " Привет, Вася! " Срез ( подстрока ) : s = "0123456789" ; s1 = s.substr ( 3, 5 ); // "34567" с какого символа откуда 5 сколько символов

Изображение слайда
15

Слайд 15

Операции со строками Вставка : s = "0123456789" ; s.insert ( 3, "ABC" ); // "012 ABC 3456789 " что куда с какого символа Удаление : s = "0123456789" ; s.erase ( 3, 6 ); // "0129" с какого символа сколько символов

Изображение слайда
16

Слайд 16

Поиск символа в строке string s = "Здесь был Вася." ; int n ; n = s.find ( ' с ' ); // 3 find – искать if ( n >= 0 ) cout << "Номер символа ' c ': " << n << endl; else cout << "Символ не найден.\ n " ; Вернёт -1, если не нашли! !

Изображение слайда
17

Слайд 17

Поиск подстроки string s = "Здесь был Вася." ; int n ; n = s.find ( "Вася" ); // 10 if ( n >= 0 ) cout << "Слово начинается с s[" << n << "]\ n " ; else cout << "Слово не найдено.\ n " ; s. r find () – поиск с конца строки! !

Изображение слайда
18

Слайд 18

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

Изображение слайда
19

Слайд 19

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

Изображение слайда
20

Слайд 20

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

Изображение слайда
21

Последний слайд презентации: Программирование на языке С++

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

Изображение слайда