РАЗДЕЛ 8.4В – СИМВОЛЫ И СТРОКИ�
ЦО: использовать функции для обработки символов (char, int)
ЗАДАНИЕ 1. ПОЯСНИТЕ НАЗНАЧЕНИЕ СТРОК, ОТМЕЧЕННЫХ НОМЕРАМИ.�
Код программы | № | Пояснения |
int main() { |
|
|
char c; | 1 |
|
cout<<"Введи символ:"; cin>>c; |
|
|
cout<<int(c) ;
| 2 |
|
} |
|
|
1. Мы создаем в памяти компьютера «ячейку» и даем ей имя c.
1
2. Мы выводим на экран не сам символ, а его порядковый номер в таблице символов (ASCII).
#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;
}
ЗАДАНИЕ 2. ПОЯСНИТЕ НАЗНАЧЕНИЕ ФУНКЦИИ.�
Функция 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;
}
ЗАДАНИЕ 3. ПРОАНАЛИЗИРУЙ КОД ПРОГРАММЫ И НАПИШИ, С КАКОЙ ЦЕЛЬЮ ОНА БЫЛА НАПИСАНА. ОТВЕТ ОБОСНУЙ. НАПИШИ ТИП ДАННЫХ ДЛЯ ВВОДИМОЙ СТРОКИ�
Код программы | Назначение программы с обоснованием |
int main() { string s; int к; cout<<"Введи слово s: "; cin>>s; int k=s.size(); cout<<k; }
|
|
| |
| |
| |
| |
| |
|
Цель: Подсчет количества символов (длины) введенного слова.
Обоснование: В коде используется функция s.size(). Она пересчитывает все буквы, цифры и знаки в строке s и выдает их общее количество. Результат записывается в переменную k и выводится на экран.
2. Тип данных для вводимой строки
Ответ: string
Пояснение: В самом начале кода написано string s;. Этот тип данных в C++ специально предназначен для хранения целых слов или целых предложений (строк текста).
Код программы | Назначение программы с обоснованием |
string s; | Назначение: Определение длины (количества букв) введенного слова. |
int k=s.size(); | Обоснование: Функция .size() измеряет строку s, а cout << k выводит полученное число на экран. |
cout << k; | Тип данных строки: string. |
если ты введешь слово "Школа", программа увидит, что в нем 5 букв, и выдаст число 5.
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);
ОПЕРАЦИИ СО СТРОКАМИ
АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ
Со строками можно выполнять следующие арифметические операции:
КАК ПОДСЧИТАТЬ КОЛИЧЕСТВО СЛОВ В СТРОКЕ?
Компьютеру сложно сразу понять, что такое «слово», но ему очень легко найти пробел.
Главная идея: если в предложении слова разделены одним пробелом, то количество слов всегда будет на одно больше, чем количество пробелов.
Пример: «Мама мыла раму» Пробелов — 2, слов — 3 (2+1).
Программа в цикле считает только «сцепки» (пробелы).
Но слов-то три! Последнее слово «раму» стоит после всех пробелов, и за ним ничего не идет. Поэтому, чтобы получить реальное количество слов, нам нужно к количеству найденных « » между словами прибавить единицу (то самое последнее слово, за которым нет пробела).
Запомни: Мы прибавляем +1 не к количеству слов, а к количеству пробелов.
КАК ЗАМЕНИТЬ ОДИН СИМВОЛ НА ДРУГОЙ?
#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;
}
КАК УДАЛИТЬ СИМВОЛ ИЗ СТРОКИ?
#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;
}
ЗАДАНИЕ 4
Дана строка. Вывести эту строку в обратном порядке.
Дана строка. Определите общее количество символов '+' и '-' в ней.
#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
#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;
}
ЗАДАНИЕ 5. ИНДИВИДУАЛЬНАЯ РАБОТА
ОТВЕТЫ 5 A)
5 B)
5 D)
#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;
}
ЗАДАНИЕ 6. ПАРНАЯ РАБОТА