Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_Раб_7С++.doc
Скачиваний:
17
Добавлен:
18.03.2015
Размер:
221.18 Кб
Скачать

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

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

учреждение высшего профессионального образования

Уфимский государственный авиационный технический университет

Кафедра экономической информатики

ИЗУЧЕНИЕ ИНТЕГРИРОВАННОЙ СРЕДЫ BORLAND C++.

Работа со строками методические указания

к лабораторным работам по курсу «Программирование»

Уфа 2012

Составитель: Е.И. Филосова

ББК

УДК 519.682

Методические указания к лабораторным работам по курсу «Программирование» для студентов направления 080500 «БИЗНЕС ИНФОРМАТИКА» / Уфимский государственный авиационный технический университет; Составитель Е.И. Филосова, Уфа, 2012

В методических указаниях представлена лабораторная работа №5 по изучению раздела «Строки» дисциплины «Программирование». Представлены примеры, контрольные вопросы и задания для самостоятельной работы. Методические указания могут быть так же использованы в курсовом и дипломном проектировании.

Ил. 1, табл. 0

Рецензенты: доц.

доц.

© Уфимский государственный авиационный технический университет, 2012

Содержание

Цель работы  5

1. Общие положения 5

1.1 Описание символьных и строковых переменных 5

#include <iostream.h> 6

#include <conio.h> 6

int main(){ 6

char s[20]; 6

int k=0; 6

int i; 6

for(i=1;i<=7;i++){ 6

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

cin>>s; 6

if (s[0]=='D' || s[0]=='d') k=k+1; 6

} 6

cout << k; 6

getch(); 6

} 6

1.2 Стандартные функции работы со строками 6

В библиотеке <stdio.h>также определен целый ряд функций, проверяющих принадлежность символа какому-либо множеству, например множеству букв (isalfa), разделите­лей (isspace), знаков пунктуации (ispunct), цифр (isdigit) и т. д. (см. Приложение Б). 8

1.3 Чтение символьных строк из потока ввода 8

1.3.1 С помощью оператора ">>" 8

1.3.2 С помощью функции getline() 8

2. Содержание работы 9

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

cin>>s; 9

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

cin>>s[i]; 10

3. Требования к отчету 10

4. Контрольные вопросы 10

11

Приложение Б 12

Стандартные функции работы со строками 12

Приложение В Задания для самостоятельного выполнения на строки 13

Приложение Г Задания для самостоятельного выполнения на массивы строк 14

Цель работы

Изучить работу со строками в языке С++:

  • понятие строковых переменных и их формы представления;

  • процедуры и функции обработки строковых переменных;

  • преобразование строковых переменных в цифровую форму и наоборот.

1. Общие положения

1.1 Описание символьных и строковых переменных

Переменные символьного типа имеют тип char. Он обычно используют для хранения символа. Символы в компьютере хранятся в виде целых чисел, которые представляют собой код из таблицы символов ASCII. При выводе на экран символьных переменных и констант компьютер выводит соответствующий коду символ. Присваивать переменной типа char значения можно следующим образом:

char s;

s='a';

s=32;

s='\b'

В первом примере переменной s стала равной коду латинской буквы a. Как видите не обязательно запоминать таблицу кодов символов, а достаточно написать символ в одиночных кавычках.

Во втором примере переменной s присвоили код символа пробел 32.

В третьем примере присвоили переменой s Esc-последовательность представляющей собой пробел.

В диапазон типа char входят числа от -128 до 127, коды русских букв имеют код больше 127 (см. приложение А), для решения этой проблемы используйте тип unsigned char.

В языке С++ нет стандартного типа для работы со строками. для этих целей используется массив символов:

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

Символьные строки описываются как обычные массивы:

char phrase[17];

При использовании массива символов в качестве строки необходимо помнить, что концом строки считается символ '\0' (т.е. 0). Все стандартные функции корректно вставляют 0 в конец строки, но если вы будите, что либо менять, не забывайте ставить "\0" в конце строки.

Массивы можно полностью или частично проинициализировать непосредственно в операторе описания. Список значений элементов массива заключается в фигурные скобки "{}". Например, оператор

char phrase[17] = { 'В','в','е','д','и','т','е',' ','в','о','з','р','а','с','т',':', '\0' };

одновременно и объявляет массив "phrase", и присваивает его элементам значения. То же самое делает оператор:

char phrase[17] = "Введите возраст:";

Если не указывать размер "17", то размер массива будет выбран в соответсвии с количеством инициализирующих значений (с учетом завершающего нуль-символа). Т.е. строку можно описать с помощью любого из двух следующих операторов:

char phrase[] = { 'В','в','е','д','и','т','е',' ','в','о','з','р','а','с','т',':', '\0' };

char phrase[] = "Введите возраст:";

Очень важно запомнить, что символьные строки хранятся в виде массивов. Поэтому их нельзя приравнивать и сравнивать с помощью операций "=" и "==". Например, нельзя записать оператор присваивания:

phrase = "Вы напечатали строку:";

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

Если требуется ввести строку, состоящую из нескольких слов, в одну строковую переменную, используются методы getline или get класса iostream. Синтаксис вызова метода — после имени объекта ставится точка, а затем пишется имя метода:

#include <iostream.h>

#include <conio.h>

int main(){

const int n = 80;

char s[n];

cin.getline(s, n); cout << s << endl;

cin.get(s, n); cout << s << endl;

return 0;

}

Метод getline считывает из входного потока n - 1 символов или менее (если символ перевода строки встретится раньше) и записывает их в строковую переменную s. Символ перевода строки также считывается (удаляется) из входного потока, но не записывается в строковую переменную, вместо него размещается завершающий 0. Если в строке исходных данных более п - 1 символов, следующий ввод будет выполняться из той же строки, начиная с первого несчитанного символа.

Метод get работает аналогично, но оставляет в потоке символ перевода строки. В строковую переменную добавляется завершающий 0.

Пример. Задан список из 7 слов. Определить, сколько слов списка начинаются на букву D.

#include <iostream.h>

#include <conio.h>

int main(){

char s[20];

int k=0;

int i;

for(i=1;i<=7;i++){

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

cin>>s;

if (s[0]=='D' || s[0]=='d') k=k+1;

}

cout << k;

getch();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]