Опубликован: 02.02.2011 | Уровень: для всех | Доступ: платный
Лекция 8:

Символьные данные и строки

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Лабораторная работа 7. Символьные данные и строки

Цель работы: изучить особенности внутреннего представления символьных данных и строк, научиться выполнять ввод/вывод, просмотр и замену в строках при решении задач на языке C++.

При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, которая получает на входе одну или несколько строк символов (в зависимости от постановки задачи), выполняет обработку строк в соответствии с требованиями задания и выводит результат на экран. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные является максимальный размер строковых данных в языке С++.

Теоретические сведения.

Ознакомьтесь с материалом лекции 7.

Задания к лабораторной работе.

Выполните приведенные ниже задания.

  1. Введите предложение, слова в котором разделены пробелами и в конце которого стоит точка. Удалите повторяющиеся пробелы между отдельными словами (оставляя по одному пробелу), выведите отредактированное предложение на экран.
  2. Дана строка. Выполните символьный анализ текста. Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.
    Введите строку 
    Город Тула основан в 1946 г. I was burn in Tula in 1991.
    Во введенной строке:
       малых русских букв – 16
       заглавных русских букв – 2
       малых латинских букв – 14
       заглавных латинских букв – 2
       цифровых символов –8
       остальных символов – 14
  3. Напишите программу, которая проверяет, является ли введенная с клавиатуры строка целым числом (знак числа не учитывать). Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.
    Введите число: 24.5
    Введенная строка не является целым числом.
  4. Введите строку и символ. Определите частоту появления данного символа в строке. Частота вычисляется как отношение количества данных символов в строке к длине всей строки (пробелы учитываются, а символ конца строки не учитывается). Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.
    Введите строку  >  Мама мыла раму.
    Введите символ  >  а
    Частота появления символа 'а' в строке "Мама мыла раму." равна 0,27

Указания к выполнению работы.

Каждое задание необходимо решить в соответствии с изученными методами обработки строковых и символьных данных в языке С++.

Следует реализовать каждое задание в соответствии с приведенными этапами:

  • изучить словесную постановку задачи, выделив при этом все виды данных;
  • сформулировать математическую постановку задачи;
  • выбрать метод решения задачи, если это необходимо;
  • разработать графическую схему алгоритма;
  • записать разработанный алгоритм на языке С++;
  • разработать контрольный тест к программе;
  • отладить программу;
  • представить отчет по работе.

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

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

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

  1. Почему в С++ не выполняется операция прямого присваивания значения строке?
  2. Почему символ и строка, состоящая из одного символа, занимают разный объем памяти?
  3. Почему в функции scanf("%s",string); не указывается обращение к переменной по адресу?
  4. Допустима ли операция сравнения над символами? Если да, то каким образом определены отношения "больше" и "меньше"?
  5. Какая из функций, gets или puts, заносит в поток управляющий символ '\n' и с какой целью?
  6. Можно ли выполнить присваивание символьной переменной числового значения? Почему?
  7. В чем различия результатов вывода символьной переменной со спецификаторами %d и %c?
< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Ольга Замятина
Ольга Замятина
Россия, Калиниград, РГУ им. И. Канта, 2009
Эдуард Санин
Эдуард Санин
Украина, Харьков, ХАИ