- •Алгоритмитизация и программирование Лекция 1
 - •Общие сведения
 - •Модель osi. Понятие об интерфейсах и протоколах. Рекомендация itu-t X.200
 - •1.3. Системы счисления
 - •Лекция 2
 - •2.1. Способы описания алгоритмов функционирования узла коммутации
 - •2.2. Описание алгоритмов с помощью диаграммы состояний
 - •Variable
 - •Input port
 - •Input signal
 - •2.3. Описание алгоритмов с помощью временной диаграммы
 - •Описание алгоритмов с помощью текстового описания
 - •Лекция 3
 - •3.2. Типы данных
 - •3.3. Арифметические операторы
 - •3.4. Операторы сравнения
 - •3.5. Побитовые операторы
 - •3.6. Кодовые таблицы
 - •Int main()
 - •Лекция 4
 - •4.2. Переменные
 - •4.3. Ввод/вывод
 - •4.4. Арифметические операции
 - •4.5. Взаимосвязь чисел и литер
 - •Лекция 5
 - •5.1. Базовые конструкции
 - •5.2. Операторы базовых конструкций
 - •If (условие) {операторы 1}
 - •Лекция 6
 - •6.1. Указатели
 - •6.2. Функции
 - •6.3. Массивы
 - •Лекция 7
 - •7.1. Создание и инициализация строк
 - •7.2. Функции для работы со строками
 - •Лекция 8
 - •8.1. Структуры
 - •8.2. Формирование контрольной суммы
 - •Лекция 9
 - •9.1. Операции с файлами
 - •9.2. Открытие текстового файла для записи
 - •9.3. Открытие текстового файла для чтения
 
Лекция 7
7.1. Создание и инициализация строк
Текстовые строки реализуются в виде символьных массивов в виде char str[x].
Инициализировать массив можно посимвольно с явным указанием на нуль-символ: char str1[20]={’1’, ’2’, ’3’, ’4, ’0’, ’q’, ’w’, ’e’, ’r’, ’t’, ’\0’, }. Число 0 и символ ‘\0’ не одно и то же. Незаполненные элементы массива обнуляются.
Пример: инициализация массива.
#include <iostream>
#include <windows.h> //установка команд операционной системы
using namespace std;
string Rus(string text) //установка вывода русского языка в строке
{
CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());
return text;
}
int main()
{
char str1[20]={'1','2','3','4','0','q','w','e','r','t','\0'};
int i;
cout <<str1<<endl;
for (i=0; i<20; i++)
{
cout <<str1[i];
}
cout<<endl;
cout<<endl;
system("pause"); //приостанавливает компилятор
return 0;
}
Строка – это непрерывная последовательность неслужебных символов, поэтому при занесении строки в массив командой cin>>12340 qwert будет выводиться только 12340, т.к. символы перехода на новую строку, табуляции, пробел интерпретируются компилятором как конец строки. В этом случае выводится строка только до нуль-символа. а в остальных ячейках содержится “мусор”.
Пример: посимвольное заполнение массива оператором cin.
#include <iostream>
#include <windows.h> //установка команд операционной системы
using namespace std;
string Rus(string text) //установка вывода русского языка в строке
{
CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());
return text;
}
int main()
{
char str1[20]; int i;
cout <<Rus("Введите строку: "); cin>>str1;
cout <<str1<<endl;
for (i=0; i<20; i++)
{
cout <<str1[i];
}
cout<<endl;
cout<<endl;
system("pause"); //приостанавливает компилятор
return 0;
}
Поэтому для занесения строки в массив служебных символов (пробела) следует использовать функцию gets(), которая подключается в заголовочном файле <cstdio>. Например, командой char str[20]=”12340 qwert” создается символьный массив из 20 элементов. В первые 11 ячеек с номерами 0-10 заносится текстовая строка, в 12 ячейку автоматически заносится нуль-символ ’/0’, а в остальных ячейках содержится “мусор”.
Пример: посимвольное заполнение массива оператором gets.
#include <iostream>
#include <cstdio> //для функции gets()
#include <windows.h> //установка команд операционной системы
using namespace std;
string Rus(string text) //установка вывода русского языка в строке
{
CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str());
return text;
}
int main(){
char str1[20]; int i;
cout <<Rus("Введите строку: "); gets(str1);
char *b; //объявляем указатель на символ
b = &str1[0]; //b указывает на 0-ой символ
cout<<b<<endl; //выводим строку
system("pause"); //приостанавливает компилятор
return 0;
}
