Similar presentations:
Lect6 – Строки символов
1. Строки символов
Основы Программирования 2023.Верхошенцева Светлана Леонидовна
1
2. Тип данных char
char x = 'a';cout << x << ' ' << int(x) << endl;
x = 98;
cout << x << ' ' << int(x) << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
2
3. Таблица ASCII
char x;for(x=-128;x<127;x++){
cout << x << "(" << int(x) << ")" << "\n";
}
cout << endl << endl;
unsigned char y;
for(y=0;y<255;y++){
cout << y << "(" << int(y) << ")" << "\n";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
3
4. Строки как массивы
char hello[]="Hello";cout << hello << endl;
int array[] = {1,2,3,4,5};
for(int i=0;i<5;i++){
cout << array[i] << " ";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
4
5. Строки как массивы
char hello[]="Hello";cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
5
6. Строки как массивы
char hello[]="Hello";cout << hello << endl;
for(int i=0;i<5;i++){
cout << hello[i];
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
6
7. Строки как массивы
char hello[]="Hello";cout << hello << endl;
for(int i=0;i<5;i++){
cout << int(hello[i]) << endl;
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
7
8. Строки как массивы
char hello[]="Hello";cout << hello << endl;
char hello3[] = {‘H’,’e’,’l’,’l’,’o’};
cout << hello3<< endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
8
9. Строки как массивы
char hello[]="Hello";cout << hello << endl;
char hello2[] = {‘H’,’e’,’l’,’l’,’o’,’\0’};
cout << hello2 << endl;
char hello3[] = {‘H’,’e’,’l’,’l’,’o’};
cout << hello3<< endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
9
10. Ноль-символ
char x = ‘\0’;x = 0;
char hello[]="Hello, world!";
cout << hello << endl;
hello[3] = ‘\0’;
cout << hello;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
10
11. Escape-последовательности
• \0 – конец строки• \n – перевод строки
• \t – табуляция
• \' – одиночная кавычка
• \" – двойная кавычка
• \\ – обратная косая черта
• …
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
11
12. Escape-последовательности
char escape[] = "Hello\tworld!\nIt's me!";cout << escape << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
12
13. Escape-последовательности
char x = ''';char y = '\'';
cout << y << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
13
14. Escape-последовательности
char x[] = "Here be the quotes -> " <- ";char y[] = "Here be the quotes -> \" <- ";
cout << y << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
14
15. Одинарные и двойные кавычки
char x = 'a';char y[] = "abcde";
char z[] = "a";
char a = "abc";
char b[] = 'a';
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
15
16. Ввод-вывод строк
char word[100];cin >> word;
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
16
17. Ввод-вывод строк
char word[100];cin >> word;
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
17
18. Ввод-вывод строк
char word[100];cin.getline(word,100);
cout << word;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
18
19. Ввод-вывод строк
char word[100];scanf("%s", word);
printf("%s\n", word);
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
19
20. Ввод-вывод строк
char word[100];gets(word);
printf("%s\n", word);
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
20
21. Разделители
• Пробел• Перенос строки (“\n”)
• Табуляция (“\t”)
• Возврат каретки (“\r”)
• ….
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
21
22. Простая замена
• В строке заменить все вхождения буквы rбуквой w
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
22
23. Простая замена
const int SIZE = 100;char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
for(int i=0;i<SIZE;i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
23
24. <cstring>
<cstring>#include <cstring>
using namespace std;
#include “string.h”
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
24
25. <cstring>
<cstring>• strlen
• strcmp
• strcpy
• strcat
• strchr
• strstr
• …
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
25
26. strlen
const int SIZE = 100;char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
for(int i=0;i<strlen(word);i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
26
27. strlen
const int SIZE = 100;char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='r'){
word[i]='w';
}
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
27
28. Сравнение
• Определить, одинаковы ли введенныестроки
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
28
29. Сравнение
const int SIZE = 100;bool equal = true;
char word1[SIZE], word2[SIZE];
cin.getline(word1, SIZE);
cin.getline(word2, SIZE);
int len1 = strlen(word1);
int len2 = strlen(word2);
if(len1!=len2)
{
equal = false;
}
else {
for(int i=0;i<len1;i++){
if(word1[i]!=word2[i]){
equal = false;
break;
}}}
if(equal){
cout << "YES\n";
} else {
cout << "NO\n";
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
29
30. Сравнение
const int SIZE = 100;char word1[SIZE], word2[SIZE];
cin.getline(word1, SIZE);
cin.getline(word2, SIZE);
if(strcmp(word1, word2)==0){
cout << "YES\n" << endl;
} else {
cout << "NO\n" << endl;
}
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
30
31. strcpy
const int SIZE = 100;char hello[SIZE];
hello = “Hello”;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
31
32. strcpy
const int SIZE = 100;char hello[SIZE], word[SIZE];
strcpy(hello, "Hello");
cout << hello << endl;
strcpy(word, hello);
cout << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
32
33. strcat
const int SIZE = 100;char hello[SIZE], name[SIZE];
hello = “Hello, ”;
cin >> name;
hello += name;
cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
33
34. strcat
const int SIZE = 100;char hello[SIZE], name[SIZE];
hello = “Hello, ”;
cin >> name;
strcat(hello, name);
cout << hello << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
34
35. strchr
const int SIZE = 100;char word[SIZE];
cin.getline(word, SIZE);
cout << "Before:" << word << endl;
int start = 0;
while (strchr(word+start,'r')!=0){
char* pos = strchr(word+start,'r');
*pos='w';
start = pos-word;
}
cout << "After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
35
36. strstr
const int SIZE = 100;int count = 0;
char word[SIZE];
char target[]="abc";
cin.getline(word, SIZE);
int start = 0;
while (strstr(word+start,target)!=0){
count ++;
char* pos = strstr(word+start,target);
start = pos-word+1;
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
36
37. tolower/toupper
#include <cstdlib>using namespace std;
#include “stdlib.h”
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
37
38. tolower/toupper
const int SIZE = 100;char word[SIZE];
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0; i<len;i++){
word[i] = tolower(word[i]);
}
cout << “After:" << word << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
38
39. Простой подсчет
• Посчитать, сколько гласных букв (a,e,i,o,u) встроке
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
39
40. Простой подсчет
const int SIZE = 100;char word[SIZE];
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='a' || word[i]=='e' || word[i]=='i'
|| word[i]=='o' || word[i]=='u'){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
40
41. Простой подсчет
const int SIZE = 100;char word[SIZE];
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(word[i]=='a' || word[i]=='e' || word[i]=='i'
|| word[i]=='o' || word[i]=='u'){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
41
42. Простой подсчет
const int SIZE = 100;char word[SIZE];
char vowels[] = "aeiou";
int count = 0;
cin.getline(word, SIZE);
int len = strlen(word);
for(int i=0;i<len;i++){
if(strchr(vowels, tolower(word[i]))){
count++;
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
42
43. Подсчет слов
const int SIZE = 100;char text[SIZE];
char dividers[] = " \t\n,;.!?";
int count = 0;
bool inWord = false;
cin.getline(text, SIZE);
int len = strlen(text);
for(int i=0;i<len;i++){
if(strchr(dividers, text[i])){
inWord = false;
} else {
if(!inWord){
inWord = true;
count++;
}
}
}
cout << "Count " << count << endl;
Основы Программирования 2023.
Верхошенцева Светлана Леонидовна
43
programming