Слайд 2Вопрос 1
Строковые переменные
![Вопрос 1 Строковые переменные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-1.jpg)
Слайд 3Понятие строки
Строка представляет собой массив символов, заканчивающийся нуль-символом.
Нуль-символ – это символ
![Понятие строки Строка представляет собой массив символов, заканчивающийся нуль-символом. Нуль-символ – это](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-2.jpg)
с кодом, равным 0, что записывается в виде управляющей последовательности ‘\0’.
По положению нуль-символа определяется фактическая длина строки.
Слайд 4Объявление строковой переменной
char str[10] = “My text”;
В этом примере под строку выделяется
![Объявление строковой переменной char str[10] = “My text”; В этом примере под](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-3.jpg)
10 байт, 7 из которых занято под символы строки, а восьмой – под нуль-символ.
Если строка при определении инициализируется, ее размерность можно опускать:
char str[] = “Program”; // выделено и заполнено
// 8 байт
Слайд 5Присваивание строк
Операция присваивания одной строки другой не определена (поскольку строка является массивом)
![Присваивание строк Операция присваивания одной строки другой не определена (поскольку строка является](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-4.jpg)
и может выполняться с помощью цикла или функций стандартной библиотеки .
Слайд 6Функция strcat
strcat(s1, s2) – функция добавляет s2 к s1 и возвращает s1.
Например:
char
![Функция strcat strcat(s1, s2) – функция добавляет s2 к s1 и возвращает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-5.jpg)
s1[10]="New";
char s2[10]="Text";
strcat(s1,s2);
В переменной s1 окажется значение NewText.
Слайд 7Функция strcpy
strcpy(s1, s2) – функция копирует s2 в s1 и возвращает s1
Например:
char
![Функция strcpy strcpy(s1, s2) – функция копирует s2 в s1 и возвращает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-6.jpg)
s1[10]="New";
char s2[10]="Text";
strcpy(s1,s2);
В переменной s1 окажется значение Text.
Слайд 8Функция strcmp
strcmp(s1,s2) – сравнивает строки s1 и s2.
Функция возвращает положительное (если
![Функция strcmp strcmp(s1,s2) – сравнивает строки s1 и s2. Функция возвращает положительное](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-7.jpg)
s1 больше s2), нулевое (если s1 равно s2) или отрицательное (если s1 меньше s2).
Строки считаются равными когда они полностью совпадают по составу символов.
Строка считается больше другой, если в ней раньше встречается символ с кодом больше.
Если одна строка полностью совпадает с началом другой, то большей считается более длинная строка.
Слайд 9Функция strlen
strlen(s) – функция возвращает длину строки (при этом символ конца строки
![Функция strlen strlen(s) – функция возвращает длину строки (при этом символ конца строки не учитывается).](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-8.jpg)
не учитывается).
Слайд 10Прочие функции
strncat(s1, s2, n) – функция добавляет не более n символов из
![Прочие функции strncat(s1, s2, n) – функция добавляет не более n символов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-9.jpg)
s2 к s1 и возвращает s1.
strncpy(s1, s2, n) – функция копирует не более n символов из s2 в s1 и возвращает s1.
Слайд 11Пример
Задание. Пользователь вводит строку размером до 30 символов и еще один отдельный
![Пример Задание. Пользователь вводит строку размером до 30 символов и еще один](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-10.jpg)
символ. Подсчитать, сколько раз этот символ встречается в строке, введенной пользователем.
#include "stdafx.h"
#include
#include
#include
#include
using namespace std;
Слайд 12Текст программы
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE,"");
char str[30];
char s;
cout<<"Введите строку\n";
gets(str);
cout<<"Введите символ\n";
cin>>s;
![Текст программы int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_CTYPE,""); char str[30]; char](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-11.jpg)
Слайд 13Текст программы
int k=0;
for (int i=0; i if (str[i]==s)
k++;
cout<<"Количество вхождений символа
![Текст программы int k=0; for (int i=0; i if (str[i]==s) k++; cout](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-12.jpg)
"<
Слайд 14Текст программы
cout<<"Для окончания работы нажмите любую клавишу...";
getch();
return 0;
}
![Текст программы cout getch(); return 0; }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-13.jpg)
Слайд 16Понятие и вид структуры
В отличие от массива, все элементы которого однотипны, структура
![Понятие и вид структуры В отличие от массива, все элементы которого однотипны,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-15.jpg)
может содержать элементы разных типов.
Структура задается следующим образом:
struct [ имя_типа ] {
тип_1 элемент_1;
тип_2 элемент_2;
…
тип_n элемент_n;
} [ список_переменных ];
Слайд 17Элементы структуры
Элементы структуры называются полями структуры и могут иметь любой тип, кроме
![Элементы структуры Элементы структуры называются полями структуры и могут иметь любой тип,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-16.jpg)
типа этой же структуры, но могут быть указателями на него.
Описание структуры определяет новый тип, имя которого можно использовать в дальнейшем наряду со стандартными типами.
Слайд 18Пример задания структуры
struct Worker{ // описание нового типа
// Worker
char fio[30];
int age,
![Пример задания структуры struct Worker{ // описание нового типа // Worker char](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-17.jpg)
code;
double zarpl;
}; // описание заканчивается точкой с запятой
// определение массива типа Worker и указателя на тип Worker:
Worker mas_struct[100];
Слайд 19Пример задания структуры
Можно не определять отдельный тип – тогда после описания структуры
![Пример задания структуры Можно не определять отдельный тип – тогда после описания](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-18.jpg)
может идти список переменных, массивов или указателей. Например:
struct { // описание нового типа
char fio[30];
int age, code;
double zarpl;
} mas_struct[100], zap;
Слайд 20Инициализация структуры
Для инициализации структуры значения ее элементов перечисляют в фигурных скобках в
![Инициализация структуры Для инициализации структуры значения ее элементов перечисляют в фигурных скобках](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-19.jpg)
порядке их описания:
struct {
char fio[30];
int age, code;
double zarpl;
} worker = {"Миронов", 31, 215, 18400.50};
Слайд 21Доступ к полям структуры
Доступ к полям структуры выполняется с помощью операций выбора
![Доступ к полям структуры Доступ к полям структуры выполняется с помощью операций](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-20.jpg)
. (точка) при обращении к полю через имя структуры, например:
Worker worker, mas_struct[100];
worker.fio = "Миронов";
mas_struct[8].code = 215;
Слайд 22Пример
Задание.
Заполнить массив из 7 семи записей следующей структуры:
ФИО студента;
курс;
группа;
оценка по математике;
оценка по
![Пример Задание. Заполнить массив из 7 семи записей следующей структуры: ФИО студента;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-21.jpg)
программированию;
оценка по физике.
Слайд 23Пример
Вывести на экран массив записей в виде таблицы следующего вида:
![Пример Вывести на экран массив записей в виде таблицы следующего вида:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-22.jpg)
Слайд 24Текст программы
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
![Текст программы #include "stdafx.h" #include #include #include #include #include using namespace std;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-23.jpg)
Слайд 25Текст программы
int _tmain(int argc, _TCHAR* argv[])
{
const int n=7;
const int m=77;
setlocale(LC_CTYPE,"");
struct stud {
char
![Текст программы int _tmain(int argc, _TCHAR* argv[]) { const int n=7; const](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-24.jpg)
fio[30];
int kurs;
char gruppa[10];
int math, prog, fiz;
};
stud mas[n];
Слайд 26Текст программы
cout<<"Введите "< for (int i=0; i {
cout<<"Введите ФИО студента\n";
fflush(stdin);
gets(mas[i].fio);
cout<<"Введите курс\n";
cin>>mas[i].kurs;
cout<<"Введите группу\n";
fflush(stdin);
gets(mas[i].gruppa);
![Текст программы cout for (int i=0; i { cout fflush(stdin); gets(mas[i].fio); cout cin>>mas[i].kurs; cout fflush(stdin); gets(mas[i].gruppa);](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-25.jpg)
Слайд 27Текст программы
cout<<"Введите оценку по математике\n";
cin>>mas[i].math;
cout<<"Введите оценку по программированию\n";
cin>>mas[i].prog;
cout<<"Введите оценку по физике\n";
cin>>mas[i].fiz;
}
![Текст программы cout cin>>mas[i].math; cout cin>>mas[i].prog; cout cin>>mas[i].fiz; }](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-26.jpg)
Слайд 28Текст программы
printf(" Студенты\n");
for (int j=0; j printf("-");
printf("\n");
printf("| ФИО | Курс | Группа
![Текст программы printf(" Студенты\n"); for (int j=0; j printf("-"); printf("\n"); printf("| ФИО](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-27.jpg)
| Матем. | Прог. | Физ. | Ср. балл |\n");
for (int j=0; j printf("-");
printf("\n");
Слайд 29Текст программы
float sr_ball;
for (int i=0; i {
sr_ball=(mas[i].math+mas[i].prog+mas[i].fi z)/3.0;
printf("| %20s | %4d | %8s
![Текст программы float sr_ball; for (int i=0; i { sr_ball=(mas[i].math+mas[i].prog+mas[i].fi z)/3.0; printf("|](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1000904/slide-28.jpg)
| %6d | %5d |
%4d | %8.2f |\n", mas[i].fio, mas[i].kurs, mas[i].gruppa,
mas[i].math, mas[i].prog, mas[i].fiz,
sr_ball);
}