1 of 26

РАЗДЕЛ 8.4В – СИМВОЛЫ И СТРОКИ

ЦО: использовать функции для обработки символов (char, int)

2 of 26

ЗАДАНИЕ 1. ПОЯСНИТЕ НАЗНАЧЕНИЕ СТРОК, ОТМЕЧЕННЫХ НОМЕРАМИ.�

Код программы

Пояснения

int main() {

 

 

char c;

1

 

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

cin>>c;

 

 

cout<<int(c) ;

 

2

 

}

 

 

3 of 26

1.   Мы создаем в памяти компьютера «ячейку» и даем ей имя c.

  • Тип char (от слова character) говорит компьютеру: «В этой ячейке будет лежать только один символ». Например: буква 'A', цифра '5' или знак '!'.

1

2.   Мы выводим на экран не сам символ, а его порядковый номер в таблице символов (ASCII).

  • int(c) — это команда «переводчик». Она берет символ (например, 'A') и превращает его в целое число (для 'A' это будет 65).

#include <iostream>

using namespace std;

int main() {

        char c;             // 1. Создаем переменную для хранения одного символа

    cout << "Vvedi simvol: ";

        cin >> c;         // 2. Считываем символ, который ты введешь с клавиатуры

    // 3. Превращаем символ в число (тип int) и выводим на экран

    // Это и есть вывод кода символа из таблицы ASCII

    cout << "ASCII kod simvola '" << c << "' raven: " << int(c) << endl;

    return 0;

}

4 of 26

ЗАДАНИЕ 2. ПОЯСНИТЕ НАЗНАЧЕНИЕ ФУНКЦИИ.�

  • Ернар пишет строку программу, которая по кодам выводит на экране соответствующий символ. Напиши название функции, которая для этого ему нужна.

  • Ответ: _________________________________________

5 of 26

Функция char() нужна для преобразования числового кода в соответствующий ему символ.

int code = 65;

cout << char(code); // На экране появится буква A

#include <iostream>

using namespace std;

int main() {

    int n;

    cout << "Vvedi chislo (kod): ";

    cin >> n; // Вводим число, например 33

    // Превращаем число n в символ и выводим

    cout << "Eto simvol: " << char(n) << endl; 

    return 0;

}

6 of 26

ЗАДАНИЕ 3. ПРОАНАЛИЗИРУЙ КОД ПРОГРАММЫ И НАПИШИ, С КАКОЙ ЦЕЛЬЮ ОНА БЫЛА НАПИСАНА. ОТВЕТ ОБОСНУЙ. НАПИШИ ТИП ДАННЫХ ДЛЯ ВВОДИМОЙ СТРОКИ�

Код программы

Назначение программы с обоснованием

int main()

{

string s;

int к;

cout<<"Введи слово s: ";

cin>>s;

int k=s.size();

cout<<k;

}

 

 

 

 

 

 

 

 

7 of 26

  • 1. Назначение программы

Цель: Подсчет количества символов (длины) введенного слова. 

Обоснование: В коде используется функция s.size(). Она пересчитывает все буквы, цифры и знаки в строке s и выдает их общее количество. Результат записывается в переменную k и выводится на экран.

2. Тип данных для вводимой строки

Ответ: string

 Пояснение: В самом начале кода написано string s;. Этот тип данных в C++ специально предназначен для хранения целых слов или целых предложений (строк текста).

Код программы

Назначение программы с обоснованием

string s;

Назначение: Определение длины (количества букв) введенного слова.

int k=s.size();

Обоснование: Функция .size() измеряет строку s, а cout << k выводит полученное число на экран.

cout << k;

Тип данных строки: string.

если ты введешь слово "Школа", программа увидит, что в нем 5 букв, и выдаст число 5.

8 of 26

string str="Привет!"

П

р

и

в

е

т

!

str[0]

str[1]

str[2]

str[3]

str[4]

str[5]

str[6]

К отдельным символам строки можно обращаться по индексу. Напри-мер str[0] - это первый символ строки. 

Для того, чтобы узнать длину строки можно использовать метод size() строки. str.size().

Для ввода строку с пробелами, используется функция getline(). Напри-мер: getline(cin, str);

9 of 26

ОПЕРАЦИИ СО СТРОКАМИ

  • Использовать операции определения
  • - длины строки,
  • - склеивания,
  • - удаления,
  • - поиска,

10 of 26

АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ

Со строками можно выполнять следующие арифметические операции:

  • = - присваивание значения.
  • += - добавление в конец строки другой строки или символа.
  • + - конкатенация двух строк, конкатенация строки и символа.
  • ==, != - посимвольное сравнение.

11 of 26

КАК ПОДСЧИТАТЬ КОЛИЧЕСТВО СЛОВ В СТРОКЕ?

12 of 26

Компьютеру сложно сразу понять, что такое «слово», но ему очень легко найти пробел.

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

Пример: «Мама мыла раму» Пробелов — 2, слов — 3 (2+1).

Программа в цикле считает только «сцепки» (пробелы).

Но слов-то три! Последнее слово «раму» стоит после всех пробелов, и за ним ничего не идет. Поэтому, чтобы получить реальное количество слов, нам нужно к количеству найденных «    » между словами прибавить единицу (то самое последнее слово, за которым нет пробела).

  • «Кот и пес»: пробелов — 2. По формуле: 2+1=3 слова. (Верно!)
  • «А Б В Г Д»: пробелов — 4. По формуле: 4+1=5 слов. (Верно!)

Запомни: Мы прибавляем +1 не к количеству слов, а к количеству пробелов.

13 of 26

КАК ЗАМЕНИТЬ ОДИН СИМВОЛ НА ДРУГОЙ?

14 of 26

#include <iostream>

#include <string> // Обязательно для работы со строками

using namespace std;

int main() {

    string s;

    cout << "Vvedi stroku: ";

    getline(cin, s); // Считываем всю строку

    // Пробегаем по строке от начала до конца

    for (int i = 0; i < s.size(); i++) {

        if (s[i] == 'A') { // Если нашли букву 'A'

            s[i] = 'B';    // Меняем её прямо в ячейке на 'B'

        }

    }

    cout << "Result: " << s << endl;

    return 0;

}

15 of 26

КАК УДАЛИТЬ СИМВОЛ ИЗ СТРОКИ?

16 of 26

#include <iostream>

#include <string>

using namespace std;

int main() {

    string s;

    cout << "Vvedi stroku s vosklicatelnymi znakami: ";

    getline(cin, s);

    // Идем по строке С КОНЦА к началу

    for (int i = s.size() - 1; i >= 0; i--) {

        if (s[i] == '!') {

            s.erase(i, 1); // Удалить 1 символ в позиции i

        }

    }

    cout << "Resultat: " << s << endl;

    return 0;

}

17 of 26

ЗАДАНИЕ 4

Дана строка. Вывести эту строку в обратном порядке.

Дана строка. Определите общее количество символов '+' и '-' в ней.

18 of 26

#include <iostream>

#include <string>

using namespace std;

int main() {

    string s;

    cout << "Vvedi stroku: ";

    getline(cin, s); // Используем getline, чтобы можно было вводить строки с пробелами

    // Цикл идет от последнего индекса до 0

    for (int i = s.size() - 1; i >= 0; i--) {

        cout << s[i];

    }

    return 0;

}

Apple

size = 5�5 - 1 = 4

19 of 26

#include <iostream>

#include <string>

using namespace std;

int main() {

    string s;

    int count = 0;

    cout << "Vvedi stroku: ";

    getline(cin, s);

    // Проверяем каждый символ по очереди

    for (int i = 0; i < s.size(); i++) {

        if (s[i] == '+' || s[i] == '-') {

            count++;

        }

    }

    cout << "Vsego znakov + i - : " << count << endl;

    return 0;

}

20 of 26

ЗАДАНИЕ 5. ИНДИВИДУАЛЬНАЯ РАБОТА

  • A) Напишите программу на C++, которая запрашивает у пользователя строку и выводит ее длину.
  • B)Напишите программу на C++, которая запрашивает у пользователя строку и символ, а затем выводит количество вхождений этого символа в строку.
  • C)Напишите программу на C++, которая запрашивает у пользователя две строки и объединяет их в одну строку, разделяя их пробелом.
  • D)Напишите программу на C++, которая запрашивает у пользователя строку и символ, а затем заменяет все вхождения этого символа на знак "*".

21 of 26

ОТВЕТЫ 5 A)

22 of 26

5 B)

23 of 26

5 D)

24 of 26

25 of 26

#include <iostream>

#include <string>

using namespace std;

int main() {

    string s;

    bool hasAt = false;

    bool hasDot = false;

    cout << "Vvedi email: ";

    getline(cin, s);

    for (int i = 0; i < s.size(); i++) {

        if (s[i] == '@') {

            hasAt = true;

        }

        if (s[i] == '.') {

            hasDot = true;

        }

    }

    if (hasAt && hasDot) {

        cout << "YES";

    } else {

        cout << "NO";

    }

    return 0;

}

26 of 26

ЗАДАНИЕ 6. ПАРНАЯ РАБОТА

  • D)Напишите программу на C++, которая запрашивает у пользователя строку и выводит все символы строки в обратном порядке.
  • Напишите программу на C++, которая запрашивает у пользователя строку и проверяет, является ли она палиндромом (то есть читается одинаково как слева направо, так и справа налево).
  • Напишите программу на C++, которая запрашивает у пользователя строку и выводит все символы, которые встречаются в ней более одного раза.