Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример 8.6. Определение количества слов в файле, состоящих не более чем из четырех букв

Читайте также:
  1. B. Принятия оптимального управленческого решения по наиболее важным вопросам деятельности на рынке.
  2. Figure 6. Ежедневная оценка числа сотрудников в зависимости от времени обработки запросов и количества инцидентов
  3. I. 1.1. Пример разработки модели задачи технического контроля.
  4. I. Определение терминов.
  5. I. Определение экономической эффективности
  6. I.1.1. Определение границ системы.
  7. II. НАИБОЛЕЕ ТИПИЧНЫЕ СЛОВОСОЧЕТАНИЯ ПО ТЕМЕ

 

Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв. UML-диаграмма этого алгоритма приведена на рисунке 8.5.

Рисунок 8.5 - UML-диаграмма деятельности для примера 8.6

Листинг 8.7

// Лабораторная работа №_8

 

#include "stdafx.h"

#include <windows.h>

#include <fstream>

#include <string.h>

#include <ctype.h>

#include <iostream>

#include <conio.h>

 

using namespace std;

 

 

int _tmain(int argc, _TCHAR* argv[])

{

 

setlocale(LC_ALL, "Russian");

 

int n, s, ss, i, ii;

const int len = 100;

char word[len], line[len];

 

cout<<"\t\tЛабораторная работа №_8\n\n";

cout<< " Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв. \n";

cout<<"\nНажмте клавишу для продолжения...\n\n";

getch();

int lword = static_cast<int>(strlen(word));

 

ifstream fin("text.txt");

if (!fin)

{

cout << "Error opening file." <<endl;

return 1;

}

 

s = 0;

ss = 0;

int count = 0;

while (fin.getline(line,len))

{

char *p = line;

ii = strlen(p);

fin.seekg(0,ios::beg);

for (i = 0; i < ii; i++)

{

if (p[i]!='\x20') s++;

if (p[i]=='\x20')

{

if (s < 5)

{

ss++;

}

s = 0;

}

}

}

 

cout << "\nВ файле содержатся слова, содержащие не более 4-х букв в количестве " << ss << " шт.";

 

getch();

return 0;

}

Аппаратура и материалы. Для выполнения лабораторной работы необходим персональный компьютер со следующими характеристиками: процессор Intel Pentium-совместимый с тактовой частотой 800 МГц и выше, оперативная память - не менее 64 Мбайт, свободное дисковое пространство - не менее 500 Мбайт, устройство для чтения компакт-дисков, монитор типа Super VGA (число цветов от 256) с диагональю не менее 15². Программное обеспечение - операционная система Windows2000/XP и выше, среда разработки приложений Microsoft Visual Studio.

Указания по технике безопасности. Техника безопасности при выполнении лабораторной работы совпадает с общепринятой для пользователей персональных компьютеров, самостоятельно не производить ремонт персонального компьютера, установку и удаление программного обеспечения; в случае неисправности персонального компьютера сообщить об этом обслуживающему персоналу лаборатории (оператору, администратору); соблюдать правила техники безопасности при работе с электрооборудованием; не касаться электрических розеток металлическими предметами; рабочее место пользователя персонального компьютера должно содержаться в чистоте; не разрешается возле персонального компьютера принимать пищу, напитки.

Методика и порядок выполнения работы. Перед выполнением лабораторной работы каждый студент получает индивидуальное задание. Защита лабораторной работы происходит только после его выполнения (индивидуального задания). При защите лабораторной работы студент отвечает на контрольные вопросы, приведенные в конце, и поясняет выполненное индивидуальное задание. Ход защиты лабораторной работы контролируется преподавателем.Порядок выполнения работы:

1.Проработать примеры, приведенные в лабораторной работе.

2. Составить программу с использованием двумерных локальных массивов для решения задачи. Размерности локальных массивов задавать именованны­ми константами, значения элементов массива - в списке инициализации. Номер варианта определяется по формуле , где - номер студента по списку преподавателя.

Индивидуальное задание №1. Вариант:

1. Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке.

2. Написать программу, которая считывает текст из файла и выводит на экран толь­ко предложения, содержащие введенное с клавиатуры слово.

3. Написать программу, которая считывает текст из файла и выводит на экран толь­ко строки, содержащие двузначные числа.

4. Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв.

5. Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова.

6. Написать программу, которая считывает текст из файла и выводит на экран толь­ко предложения, не содержащие запятых.

7. Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не менее чем семи букв.

8. Написать программу, которая считывает текст из файла и выводит на экран толь­ко цитаты, то есть предложения, заключенные в кавычки.

9. Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и оканчивающиеся на гласные буквы.

10. Написать программу, которая считывает текст из файла и выводит на экран толь­ко строки, не содержащие двузначных чисел.

11. Написать программу, которая считывает текст из файла и выводит на экран толь­ко предложения, начинающиеся с тире, перед которым могут находиться только пробельные символы.

12. Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую букву слов, начинающихся с гласной буквы, на прописную.

13. Написать программу, которая считывает текст из файла и выводит его на экран, зааменив цифры от 0 до 9 на слова «ноль», «один»,..., «девять», начиная каждое предложение с новой строки.

14. Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.

15. Написать программу, которая считывает текст из файла и выводит на экран снача­ла вопросительные, а затем восклицательные предложения.

16. Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем введенное с клавиатуры слово.

17. Написать программу, которая считывает текст из файла и выводит на экран все его предложения в обратном порядке.

18. Написать программу, которая считывает текст из файла и выводит на экран снача­ла предложения, начинающиеся с однобуквенных слов, а затем все остальные.

19. Написать программу, которая считывает текст из файла и выводит на экран пред­ложения, содержащие минимальное количество знаков пунктуации.

Содержание отчета и его форма. Отчет по лабораторной работе должен состоять из:

1. Названия лабораторной работы.

2. Цели и содержания лабораторной работы.

3. Ответов на контрольные вопросы лабораторной работы.

4. Формулировки индивидуальных заданий и порядка их выполнения.

Отчет о выполнении лабораторной работы в письменном виде сдается преподавателю.

Вопросы для защиты работы

1. Характеристика видов строк в языке С++.

2. Как описываются строки?

3. Охарактеризуйте способы ввода-вывода строк.

4. Что делают функции gets () и puts ()?

5. Каким образом выполняется операция присваивания при работе со строками?

6. Какие функции предоставляет библиотека <string. h>? Какие действия они выполняют?

7. Охарактеризуйте способы ввода-вывода символов.

8. Какая функция используетя для многократного поиска вхождения подстроки?

9. Для чего нужна функция strtok?

10. Какие значения может принимать параметр org?

11. Какие действия необходимо выполнить, чтобы вывести результаты выполнения программы не на экран, а в файл?

 

Пример выполнения лабораторной работы №8:

1. Индивидуальное задание №1:

1.1. Постановка задачи:

Написать программу, которая считывает текст из файла и выводит на экран толь­ко предложения, содержащие запятые.

1.2. UML-диаграмма:

1.3. Листинг программы:

// Лабораторная работа №8

// Индивидуальное задание №1

 

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "string.h"

 

using namespace std;

 

int _tmain(int argc, _TCHAR* argv[])

{

setlocale(LC_ALL, "Russian");

cout << "Лабораторная работа № 8\n"

<< "\nГорошко А.А., БАС-051\n"

<< "\nВариант № 6\n"

<< "\n\nИндивидуальное задание № 1:\n"

<< "\nНаписать программу, которая считывает текст из файла и\n"

<< "\nвыводит на экран только предложения, содержащие запятые.\n"

<< "\n\nРабота программы:\n";

 

int n, i;

bool flag = false;

char ch;

string str = "";

ifstream input("text.txt");

if (! input)

{

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

return 1;

}

input.seekg(0,ios::end);

long unsigned int len = input.tellg();

input.seekg(0, ios:: beg);

for (i = 0; i < len; i++)

{

ch = input.get();

if (ch==',') flag = true;

if (ch=='.')

{

if (flag) cout << str.c_str();

str = "";

flag = false;

}

else

str+=ch;

};

 

getch();

return 0;

}

1.4. Результаты работы программы:

 

 

 

 

Лабораторная работа №9.
Структуры в языке C++

 

Цель работы и содержание: закрепление знаний о структурах, составление программ со структурами.

 

Ход работы

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

Например, требуется обрабатывать информацию о расписании работы конференц-зала, и для каждого мероприятия надо знать время, тему, фамилию организатора и количество участников. Поскольку вся эта информация относится к одному собы­тию, логично дать ему имя, чтобы впоследствии можно было к нему обращаться. Для этого описывается новый тип данных:

 

struct Event

{

int hour, min;

char theme[100], name[100];

int num;

}

 

Имя этого типа данных - Event. Можно описать переменные этого типа точно так же, как переменные встроенных типов, например:

 

Event el. e2[10]; // структура и массив структур

 

Если структура используется только в одном месте программы, можно совместить описание типа с описанием переменных, при этом имя типа можно не указывать:

 

struct

{

int hour, min;

char theme[100]. name[100];

int num;

}

el, e2[10];

 

Переменные структурного типа можно размещать и в динамической области па­мяти, для этого надо описать указатель на структуру и выделить под нее место:

 

Event *pe = new Event; //структура

Event *pm = new Event[m]; //массив стуктур

 

Элементы структуры называются полями. Поля могут быть любого основного типа, массивом, указателем, объединением или структурой. Для обращения к полю ис­пользуется операция выбора («точка» для переменной и -> для указателя), на­пример:

 

el.hour = 12; el.min = 30;

strncpy(e2[0]).theme. "Выращивание кактусов в условиях Крайнего Севера". 99);

pe->num = 30; // или (*pe).num = 30;

pm[2].hour = 14; // или (*(pm + 2)).hour = 14;

 

Структуры одного типа можно присваивать друг другу:

 

*ре = el: pm[l]» el: pm[4] = e2[0];

 

Но присваивание - это и все, что можно делать со структурами целиком. Другие операции, например сравнение на равенство или вывод, не определены. Впрочем, пользователь может задать их самостоятельно, поскольку структура является ви­дом класса, а в классах можно определять собственные операции.

Ввод/вывод структур, как и массивов, выполняется поэлементно. Вот, например, как выглядит ввод и вывод описанной выше структуры el с использованием клас­сов ввода-вывода (<iostream.h>):

 

cin» el.hour» el.min;

cin.getline(el.theme. 100);

cout «el.hour «' '«el.min «' '«el.theme «endl;

 

Вариант с использованием ввода-вывода в стиле С (подключается заголовоч­ный файл <stdio.h>):

 

scanfC'MM", Sel.hour, Sel.min); gets (el. theme);

printf("&d %d %s". el.hour, el.min. el.theme);

 

Структуры (но, конечно, не динамические) можно инициализировать перечисле­нием значений их элементов:

 

Event еЗ - {12. 30. "Выращивание кактусов в условиях Крайнего Севера", 25};

 


Дата добавления: 2015-10-26; просмотров: 934 | Нарушение авторских прав


Читайте в этой же книге: Операнд_1 ? операнд_2 : операнд_3 5 страница | Операнд_1 ? операнд_2 : операнд_3 6 страница | Операнд_1 ? операнд_2 : операнд_3 7 страница | Операнд_1 ? операнд_2 : операнд_3 8 страница | Пример 6.1. Среднее арифметическое и количество положительных элементов | Пример 6.2. Номер столбца из положительных элементов | Пример 6.4. Сглаживание заданной вещественной матрицы, работа с файлами | Пример 6.5. Определение количества отрицательных элементов в тех строках данной целочисленной прямоугольной матрицы, которые содержат хотя бы один нулевой элемент | Пример 7.1. Передача в функцию параметров стандартных типов | Пример 7.9. Перегрузка функций |
<== предыдущая страница | следующая страница ==>
Пример 8.4. Вывод предложений, состоящих из заданного количества слов| Пример 9.1. Поиск в массиве структур

mybiblioteka.su - 2015-2024 год. (0.023 сек.)