- •Этапы создания исполняемой программы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Структура программы
- •Вывод данных
- •Ввод данных
- •Вопросы для самоконтроля
- •Тема 1.1(2). Типы данных. Константы и переменные
- •Основные (стандартные) типы данных
- •Область действия переменных
- •1.3.1. Математические операции
- •1.3.2. Простое присваивание
- •1.3.3. Составное (сложное) присваивание
- •1.3.4. Операция приведения (преобразования) типов
- •1.3.5. Операции отношения
- •1.3.7. Операция sizeof
- •1.3.8. Операция "запятая" (,)
- •1.3.9. Условная операция (?:)
- •1.3.10. Указатель. Определение адреса переменной
- •1.3.11. Директива define
- •1.3.12. Директива include
- •1.3.13. Примеры программ
- •1.3.14. Вопросы для самоконтроля
- •Тема 1.3. Программирование алгоритмов различной структуры
- •Базовые конструкции структурного программирования
- •Операторы ветвления
- •1.4.1. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) оператор_1;
- •1.4.2. Оператор выбора switch
- •Операторы цикла
- •1.4.3. Оператор while
- •1.4.4. Оператор do...While
- •1.4.5. Оператор for
- •1.4.6. Функция exit(), операторы break, continue, return
- •Стандартные математические функции
- •Тема 1.4. Ввод-вывод данных
- •Функции get() и put()
- •Функция getch()
- •Функция printf
- •Функция sprintf()
- •Тема 1.5. Функции. Локальные и глобальные переменные. Способы передачи данных.
- •1.5.1. Видимость переменных
- •1.5.2. Определение функции
- •1.5.3. Функция main
- •1.5.4. Вызов функции
- •1.5.5. Способы передачи данных
- •1.5.6. Возвращаемые значения функции
- •1.5.7. Использование прототипов функций
- •Тема 1.6(1). Массивы и указатели
- •Объявление массива
- •Доступ к элементам массива
- •Многомерные массивы
- •Указатели
- •Тема 1.6(2). Структуры и строки
- •1.6.1. Структуры
- •1 Способ – по шаблону.
- •2 Способ – при объявлении (описании) шаблона.
- •1.6.2. Способы реализации строк
- •1.6.3. Строковые константы
- •1.6.4. Указатель на символьную строку
- •1.6.5. Массив символов
- •1.6.6. Некоторые функции для работы со строками
- •1.6.7. Некоторые функции проверки и преобразования символов
- •Тема 1.7. Работа с памятью
- •Функция malloc
- •Функция free
- •Операция new
- •Операция delete
- •Тема 1.10. Динамические структуры
- •Разновидности динамических структур
- •Примеры программ (фрагментов программ) для работы с динамическими структурами
1.6.2. Способы реализации строк
В классическом С++ нет специального строкового типа.
Возможны три варианта реализации строк:
-
строковые константы;
-
указатель на символьную строку;
-
массив символов.
Рассмотрим каждый из этих вариантов.
1.6.3. Строковые константы
Строковые константы заключаются в двойные кавычки. Строковые константы используются в операторах вывода, могут включать управляющие последовательности.
Пример
cout<<"Введите х"; // "Введите х" – строковая константа
В конце строки всегда присутствует нуль - символ (\0), который служит признаком конца строки.
cout <<"Введите х\0";
Нуль-символ можно не указывать, в этом случае он будет добавлен автоматически.
1.6.4. Указатель на символьную строку
Можно описать указатель на строку символов.
char *s="Фамилия";
cout << s;
Указателю s можно присвоить адрес другой символьной строки
s="Отчество";
cout << s;
1.6.5. Массив символов
Строку можно описать как строку символов.
Пример:
char s[20]="Фамилия";
Количество элементов массива должно быть на 1 больше, чем символов в строке. "Лишний" символ нужен для хранения нуль-символа.
Размер массива (длину строки) можно не указывать. В этом случае он (размер) будет определен автоматически.
Пример:
char s[]="Фамилия";
Размер массива s будет равен 8.
Имя массива символов (s) является как именем массива, так и адресом его нулевого элемента (как для любого массива в С++).
1.6.6. Некоторые функции для работы со строками
Функции библиотеки string.h (обработка строк)
strcpy (s1, s2) – копирует строку s2 в массив символов s1
strcat (s1,s2) – добавляет строку s2 в массив символов s1 (дописывает строку s2 в конец строки s1)
strcmp(s1,s2) – сравнивает строки s1 и s2. Если s1<s2, то будет возвращено отрицательное значение, если s1=s2, будет возвращен 0, если s1>s2, будет возвращено положительное значение (сравнение происходит по ASCII-кодам символов)
strlen(s1) – возвращает длину строки без учета нуль-символа
strtok(s1,s2) – выделяет слово из строки s1, в качестве разделителей используются символы из строки s2. При повторных вызовах функции вместо s1 указывается NULL.
Пример
Пусть массив символов fam содержит фамилию, ima - имя, otsh - отчество, сформируем из них новый массив fio, который будет содержать фамилию, имя и отчество
#include<iostream.h>
#include<string.h>
void main()
{
char fio[45],fam[15], ima[15], otsh[15];
cout << "\nВведите данные: \n Фамилия ";
cin >> fam;
cout << "\nИмя ";
cin >> ima;
cout << "\nОтчество ";
cin >> otsh;
strcpy(fio,fam);
strcat(fio," ");
strcat(fio,ima);
strcat(fio," ");
strcat(fio,otsh);
cout << fio;
}
Замечание
Для ввода строки, которая не содержит пробелов можно пользоваться оператором cin. Пробел воспринимается как разделитель между значениями различных переменных, поэтому все символы после пробела будут потеряны. Если строка содержит пробелы, необходимо пользоваться другими операторами для ввода, например функцией gets.
Пример
Ввести текст, поделить его на слова, определить количество букв в каждом слове.
Text - вводимый текст,
р -указатель на слово из текста,
razd - строка из разделителей,
dlina - длина слова
#include<iostream.h>
#include<string.h>
#include<stdio.h>
void main()
{
char text[80],*p, *razd=" .,";
cout << "\nvvedi text ";
gets(text);
cout << "\n text "<< text;
p=strtok(text,razd); // Выделение первого слова текста
while (p) // Пока можно выделить слово, т.е. пока слово P – не пустое
{
cout << "\n" << p;
int dlina, i;
dlina=strlen(p); // Определение длины слова
cout << "\n слово "<< p << " Длина " << dlina;
p=strtok(NULL,razd); // Выделение второго, третьего, и т.д. слов
}
Функции библиотеки stdlib.h (преобразование строки в число)
atoi(s) – преобразует строку s в целое число
atoll(s) – преобразует строку в s длинное целое число
atof(s) – преобразует строку s в вещественное число