Хелпикс

Главная

Контакты

Случайная статья





Пермский национальный исследовательский



 

Министерство образования и науки Российской Федерации

 

Федеральное государственное бюджетное образовательное учреждение

высшего образования

Пермский национальный исследовательский

политехнический университет

Кафедра «Информационные технологии и автоматизированные системы»

Отчет

Лабораторная работа № 6

"Символьная информация и строки"

 

 

Выполнил: студент группы РИС-16-1б

Чирков Михаил Сергеевич

 Проверил: Доцент кафедры ИТАС

Полякова О.А.

 

Содержание отчета

1. Символьная информация

2. Строки

3. Основные библиотечные функции для работы со строками.

4. Примеры

 

 

   

 

   

 

 

 

Символьная информация.

 

Для символьных данных в С++ введен тип char. Для представления символьной информации используются символы, символьные переменные и текстовые константы.

 

Объявление символьных переменных:

       char symbol = 'a';

 

Ввод символа с клавиатуры:

       char symbol;

       cout << "Введите символ";

       cin>> symbol;

       cout << "Введенный символ" << symbol;

 

Если просто присвоить числовое значение без апострофов, то будут выводится символы по таблице ASCII. Например:

 

       char a=3;

       cout << a;

 

На экране будет выведен символ ♥.

 

Присваивание значений символьным переменным:

1. Классы ввода вывода cin и cout.

       char s;

       s='y'

       cout << s;

 

2. Функции (методы) getchar() и putchar().

 

Функция getchar() получает один символ с клавиатуры и передает его выполнению программы.

Функция putchar() получает один символ из программы и выводит его на экран

       char symbol;

       symbol = getchar();

       putchar(symbol);

или

       char symbol;

       putchar (getchar());

 

3) Метод cin.get().

 

Метод cin.get() cчитывает символ с клавиатуры и передает его выполнению программы.

       char a;

       cout << "Введите символ:";

       cin.get(a); //a = cin.get();

       cout << "Введенный символ: " << a;

 

Строки.

 

Строки в С++  - это массив символов (элементов типа char), заканчивающийся НУЛЬ-СИМВОЛОМ - '\0' (нуль терминатором), т.е. количество элементов в этом массиве на один больше чем изображение строки.

 

A \0
A

"A"                                               'A'

Строка (2 байта)                                   Символ (1байт)

 

Резервирование памяти под строки.

 

Статически: char s[10]; // [10] - это размер массива, в строке 9 символов, 10 под нуль-терминатор.

Динамически: char *s= new char [10]

 

Инициализация строк.

 

Присвоить значение строке с помощью обычного оператора присваивания нельзя. Можно присвоить значение строке, помесив её в массив.

       char s1[10] = "Привет";

       char s2[] = "Hello";

       char s3[] = { 'P', 'r', 'i', 'v', 'e', 't' };

       cout <<s1<<" "<< s2<<" "<<s3;

 

Указатели на строки.

 

Оператор char *str = "Vasia"; создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно.

 

Ввод-вывод строк.

 

1.Классы ввода вывода cin и cout.

 

Cin считывает строку введенную с клавиатуры до первого пробела.

       const int n=80;

       char s[n];

       cin>>s;

       cout <<s;

 

2. Метод cin.getline().

 

Если требуется ввести строку из нескольких слов в одну переменную, используется метод getline, объектом которого является cin. После имени объекта ставится точка.

 

       const int n=80;

       char s[n];

       cin.getline (s,n);

       cout << s<< endl;

 

 

3. Функции gets() и puts().

 

       char s[80];

       gets(s); // считывает символ с клавиатуры

       puts(s);// выводит строку на экран.

 

Основные библиотечные функции для работы со строками.

 

Несколько основных библиотечных функций.

Обязательно подключаем библиотеку string.

 

1) Вычисление длины строки: функция strlen();

           

       char str[]="ABCD";

       int i;

       i=strlen(str);

       cout << i;

 

2)Копирование строк из одной в другую: функция strcpy(s1,s2) - копирует символы строки s2 в строку s1. Функция strncpy(s1,s2,n) - копирует первые n символов строки s2 в строку s1.

 

Примеры:

 

       char a[100] = "ABCD";

       char *p=new char [100];

       strcpy (p,a);

       cout << p;

 

       char a[100] = "ABCD";

       char *p=new char [100];

       strncpy (p,a,strlen(a)+1); // копируем всю строку

       cout << p;

Конкатенация (сложение) строк: функция strcat(s1,s2) - складывает строку s2 со строкой s1 в одну.

 

Пример: Строку инициализировать с помощью функции strcpy() и дополнить её используя функцию strcat().

 

       char s[90];

       strcpy(s, "Для продолжения нажмите");

       strcat(s. "любую клавишу");

       cout<<s;

 

ПРИМЕРЫ:

 

1) Определение позиции символа С в строке S используя функцию strchr(s,c), которая возвращает указатель на найденное вхождение символа.

 

       #include<iostream>

       #include<cstring>

       using namespace std;

       int main()

       {

       char s[100]="Privet kak dela";

       char *c;

       c =strchr(s, 'a'); // Присваиваем строку после первого вхождения это будет ak dela

       while(c!=0)

                   {

                   cout << c-s+1; // РАЗНОСТЬ СТРОК, покажет номер местонахождения символа в строке

                   c=strchr(c+1, 'a'); // Присваиваем строку после следующего вхождения это будет a

              }

       return 0;

       }

 

\\ на экране будет 9 и 15.

 

 

2) Поиск подстроки: Написать программу которая определяет, встречается ли в заданном текстовом файле заданная последовательность символов(подстрока).

Алгоритм решения:

1. Построчно считывать текст из файла.

2.Для каждой строки проверять, содержится ли в ней заданная последовательность.

3. Если да, то напечатать сообщение о наличии заданной последовательности и завершить программу.

4. При нормальном выходе из цикла напечатать сообщение об отсутствии заданной последовательности и завершить программу.

 

       #include <fstream>

       #include<iostream>

       #include<cstring>

       using namespace std;

       int main();

       {

                   const int len=91;

                   char word[len], line[len];

                   cout << "Введите слово для поиска";

                   cin >> word;

                   ifstream fin("text.txt");

                   if (!fin)

                   {

                              cout << "Ошибка открытия файла.";

                              return 1;

                   }

                   while (fin.getline(line,len))

                   {

                              if(strstr(line, word))

                              {

                                          cout << "Присутствует!";

                                          return 0;

                              }

                              cout << " Отсутствует!";

       }

 

3) Переворот строки.

           

       #include <stdio.h>

       #include<string.h>

       int main()

       {

                   char c, s[10];

                   int i;

                   cout << "Введите строку:";

                   gets(s);

                   for (i=0; i <= (strlen(s)-1)/2; i++)

                              {

                              c=s[i];

                              s[i]=s[strlen(s)-i-1];

                              s[strlen(s)-i-1]=c;

                              }

                   cout << "Перевернутая строка:<<endl;

                   puts(s);

                   return0;

       }

 

 

Результаты решения задач.

 

1) Определение позиции символа С в строке S

2) Поиск подстроки

3) Переворот строки

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.