Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection5.doc
Скачиваний:
18
Добавлен:
17.12.2018
Размер:
144.9 Кб
Скачать

Упражнения

Если в упражнении сказано «дана строка», то ее можно считать при помощи инструкции вида cin>>S или при помощи функции getline. Если сказано, что дана строка, содержащая пробелы, то ее необходимо считывать при помощи функции getline.

  1. Даны две строки. Определите, совпадают ли они сравнив их посимвольно. Напишите для этого функцию bool Compare(string S1, string S2).

  2. Напишите программу, которая по данному числу k от 1 до 120 печатает фразу «Мне k лет», меняя значение k на введенное число, а вместо слова «лет» печатая при необходимости слово «год» в правильном склонении.

  3. Дана строка, содержащая пробелы. Найдите, сколько в нем слов (слово – это последовательность непробельных символов, слова разделены одним пробелом, первый и последний символ строки – не пробел).

Вход: одна строка. Выход: количество слов в строке.

  1. Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите на экран это слово и его длину.

Вход: одна строка, содержащая пробелы. Слова разделены ровно одним пробелом. Выход: самое длинное слово в строке и его длина.

  1. Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти буквы.

Вход: одна строка. Выход: одна буква, которая встречается в строке дважды.

  1. Даны две строки. Определите, является ли первая строка подстрокой второй строки.

Вход: две строки. Выход: слово yes, если первая строка является подстрокой второй строки, или слово no в противном случае.

6.3 Строки, управление вводом/выводом и операции над строками

Здесь подробнее рассматриваются операции консольного ввода/вывода. C++, как и его предок — язык C — не определяет операции ввода/вывода как часть языка, а выносит операции консольного ввода/вывода в библиотеки ввода/вывода.

Рассмотрим небольшую выборку функций ввода/вывода, объявляемых в заголовочных файлах stdio.h и iostream.h.

6.3.1 Форматированный потоковый вывод

C++ имеет целое семейство гибких библиотек функций ввода/вывода. Разработчикам языка было ясно, что функции ввода/вывода из stdio.h, унаследованные из С, имеют ряд ограничений. В результате в C++ было введено понятие потоков.

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

В этом разделе мы познакомимся с потоковыми функциями width и precision, используемыми при форматировании вывода. Библиотеки потоков C++ содержат большое количество таких функций, позволяющих настроить ваш вывод.

Функция width задает ширину поля вывода. Общая форма использования функции width с потоком cout:

cout.width (widthOf Output);

Функция precision определяет количество значащих цифр после точки для чисел с пла­вающей точкой. Общая форма использования функции precision с потоком cout:

cout.precision(numberOfDigits);

Программа, в которую ничего не вводится, а лишь выводятся форматированные целые числа, числа с плавающей точкой и символы с использованием функций width и precision, приведена в следующем примере:

// Программа иллюстрирует потоковый форматированный вывод в C++

// с использованием функций width и precision

#include <iostream.h>

int main()

{

int anInt = 67;

unsigned char aByte = 128;

char aChar = '@';

float aSingle = 355.1112;

double aDouble = 1.131112e+002;

// Вывод простых выражений

cout.width(3); cout << int(aByte) << " + ";

cout.width(2); cout << anInt << " = ";

cout.width(3); cout << (aByte + anInt) << endl;

cout.precision(3); cout << aSingle << " / ";

cout << aDouble << " =";

cout.width(7); cout.precision(4); cout << (aSingle / aDouble) << endl;

cout << "Символьная переменная aChar: "<< aChar << endl;

return 0;

}

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