
- •Алгоритмитизация и программирование Лекция 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;
}