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

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

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

Для ввода строк (например, с клавиатуры) пригоден оператор ">>", но его применение ограничено, поскольку этот оператор считает пробелы разделителями.

Допустим, в программе содержатся операторы:

cout << "Введите имя: ";

cin >> a_string;

После сеанса работы со следующими экранными сообщениями:

Введите имя: Вася Иванов

Переменной "a_string" будет присвоено значение ""Вася"", т.к. оператор ">>" считает пробел разделителем, который сигнализирует о завершении ввода значения.

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

Для ввода символьных строк часто более удобной оказывается функция getline(), имеющая 2 параметра. Например, оператор:

cin.getline(a_string, 80);

позволяет получить от пользователя строку с пробелами длиной до 79 символов (последний, 80-й символ строки – служебный нуль-символ). В следующей программе демонстрируется действие функций getline(), strcmp(), strcpy() и strcat().

#include <iostream.h>

#include <string.h>

#include <conio.h>

const int MAX_LEN = 80;

int main() {

char first_string[MAX_LEN];

char second_string[MAX_LEN];

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

cin.getline(first_string,MAX_LEN);

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

cin.getline(second_string,MAX_LEN);

cout << "До копирования строки были ";

if ( strcmp(first_string,second_string) )

cout << "не ";

cout << "одинаковыми.\n";

strcpy( first_string, second_string );

cout << "После копирования строки стали ";

if ( strcmp(first_string,second_string) )

cout << "не ";

cout << "одинаковыми.\n";

strcat( first_string, second_string);

cout << "После конкатенации первая строка равна: ";

cout << first_string;

getch();

return 0;

}

Программа в типичном сеансе работы выводит сообщения:

Введите первую строку: Строка 1.

Введите вторую строку: Строка 2.

До копирования строки были не одинаковыми.

После копирования строки стали одинаковыми.

После конкатенации первая строка равна: Строка 2.Строка 2.

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

1. Составьте и отладьте программу решения следующей задачи.

Задана строка произвольной длины. Найдите  количество символов в данной строке.

Указание: Используйте фрагмент программы следующего вида:

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

cin>>s;

n=strlen(s);

cout <<”n=”<<n;

2 Дополните полученную программу. Определите, начинается ли слово со слога «Не».

Указание: Воспользуйтесь условным оператором вида:

if (s[0]=’Н’ && s[1]=’е’)   cout <<”да, начинается”;

else cout <<”нет, не начинается”; 

3 Дополните полученную программу. Определите, сколько раз встречается буква «а» в данном слове.

Пример возможного решения:

k=0;

for (i=0; i<strlen(s); i++)

if (s[i]==’a’) k=k+1;

cout <<”k=”<<k;

...

4 Выполните задание из указанного преподавателем варианта приложения B.

5 Составьте и отладьте программу решения следующей задачи.

Задан список из 7 слов произвольной длины. Найдите все слова списка, заканчивающиеся на букву «и».

Указание: Опишите переменную s как переменную типа array[1..7] of string;

Далее воспользуйтесь следующим программным фрагментом:

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

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

cin>>s[i];

 };

cout << “Заканчиваются на букву и”;

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

    n=strlen(s[i]);

    if (s[i][n]==’и’) cout << s[i];

}

...

4.6 Выполните задание из указанного преподавателем варианта приложения Г.

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