Строки и структуры. Лекция 4

Содержание

Слайд 2

Вопрос 1

Строковые переменные

Вопрос 1 Строковые переменные

Слайд 3

Понятие строки

Строка представляет собой массив символов, заканчивающийся нуль-символом.
Нуль-символ – это символ

Понятие строки Строка представляет собой массив символов, заканчивающийся нуль-символом. Нуль-символ – это
с кодом, равным 0, что записывается в виде управляющей последовательности ‘\0’.
По положению нуль-символа определяется фактическая длина строки.

Слайд 4

Объявление строковой переменной

char str[10] = “My text”;
В этом примере под строку выделяется

Объявление строковой переменной char str[10] = “My text”; В этом примере под
10 байт, 7 из которых занято под символы строки, а восьмой – под нуль-символ.
Если строка при определении инициализируется, ее размерность можно опускать:
char str[] = “Program”; // выделено и заполнено
// 8 байт

Слайд 5

Присваивание строк

Операция присваивания одной строки другой не определена (поскольку строка является массивом)

Присваивание строк Операция присваивания одной строки другой не определена (поскольку строка является
и может выполняться с помощью цикла или функций стандартной библиотеки .

Слайд 6

Функция strcat

strcat(s1, s2) – функция добавляет s2 к s1 и возвращает s1.
Например:
char

Функция strcat strcat(s1, s2) – функция добавляет s2 к s1 и возвращает
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 и возвращает
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. Функция возвращает положительное
s1 больше s2), нулевое (если s1 равно s2) или отрицательное (если s1 меньше s2).
Строки считаются равными когда они полностью совпадают по составу символов.
Строка считается больше другой, если в ней раньше встречается символ с кодом больше.
Если одна строка полностью совпадает с началом другой, то большей считается более длинная строка.

Слайд 9

Функция strlen

strlen(s) – функция возвращает длину строки (при этом символ конца строки

Функция strlen strlen(s) – функция возвращает длину строки (при этом символ конца строки не учитывается).
не учитывается).

Слайд 10

Прочие функции

strncat(s1, s2, n) – функция добавляет не более n символов из

Прочие функции strncat(s1, s2, n) – функция добавляет не более n символов
s2 к s1 и возвращает s1.
strncpy(s1, s2, n) – функция копирует не более n символов из s2 в s1 и возвращает s1.

Слайд 11

Пример

Задание. Пользователь вводит строку размером до 30 символов и еще один отдельный

Пример Задание. Пользователь вводит строку размером до 30 символов и еще один
символ. Подсчитать, сколько раз этот символ встречается в строке, введенной пользователем.
#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

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

Слайд 14

Текст программы


cout<<"Для окончания работы нажмите любую клавишу...";
getch(); 
return 0;
}

Текст программы cout getch(); return 0; }

Слайд 15

Вопрос 2

Структуры

Вопрос 2 Структуры

Слайд 16

Понятие и вид структуры

В отличие от массива, все элементы которого однотипны, структура

Понятие и вид структуры В отличие от массива, все элементы которого однотипны,
может содержать элементы разных типов.
Структура задается следующим образом:
struct [ имя_типа ] {
тип_1 элемент_1;
тип_2 элемент_2;

тип_n элемент_n;
} [ список_переменных ];

Слайд 17

Элементы структуры

Элементы структуры называются полями структуры и могут иметь любой тип, кроме

Элементы структуры Элементы структуры называются полями структуры и могут иметь любой тип,
типа этой же структуры, но могут быть указателями на него.
Описание структуры определяет новый тип, имя которого можно использовать в дальнейшем наряду со стандартными типами.

Слайд 18

Пример задания структуры

struct Worker{ // описание нового типа
// Worker
char fio[30];
int age,

Пример задания структуры struct Worker{ // описание нового типа // Worker char
code;
double zarpl;
}; // описание заканчивается точкой с запятой
// определение массива типа Worker и указателя на тип Worker:
Worker mas_struct[100];

Слайд 19

Пример задания структуры

Можно не определять отдельный тип – тогда после описания структуры

Пример задания структуры Можно не определять отдельный тип – тогда после описания
может идти список переменных, массивов или указателей. Например:
struct { // описание нового типа
char fio[30];
int age, code;
double zarpl;
} mas_struct[100], zap;

Слайд 20

Инициализация структуры

Для инициализации структуры значения ее элементов перечисляют в фигурных скобках в

Инициализация структуры Для инициализации структуры значения ее элементов перечисляют в фигурных скобках
порядке их описания:
struct {
char fio[30];
int age, code;
double zarpl;
} worker = {"Миронов", 31, 215, 18400.50};

Слайд 21

Доступ к полям структуры

Доступ к полям структуры выполняется с помощью операций выбора

Доступ к полям структуры Доступ к полям структуры выполняется с помощью операций
. (точка) при обращении к полю через имя структуры, например:
Worker worker, mas_struct[100];
worker.fio = "Миронов";
mas_struct[8].code = 215;

Слайд 22

Пример

Задание.
Заполнить массив из 7 семи записей следующей структуры:
ФИО студента;
курс;
группа;
оценка по математике;
оценка по

Пример Задание. Заполнить массив из 7 семи записей следующей структуры: ФИО студента;
программированию;
оценка по физике.

Слайд 23

Пример

Вывести на экран массив записей в виде таблицы следующего вида:

Пример Вывести на экран массив записей в виде таблицы следующего вида:

Слайд 24

Текст программы

#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;

Текст программы #include "stdafx.h" #include #include #include #include #include using namespace std;

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

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

Слайд 28

Текст программы

printf(" Студенты\n");
for (int j=0; j printf("-");
printf("\n");
printf("| ФИО | Курс | Группа

Текст программы printf(" Студенты\n"); for (int j=0; j printf("-"); printf("\n"); printf("| ФИО
| Матем. | Прог. | Физ. | Ср. балл |\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("|
| %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);
}
Имя файла: Строки-и-структуры.-Лекция-4.pptx
Количество просмотров: 29
Количество скачиваний: 0