Читайте также:
|
|
Написать программу, которая считывает текст из файла и определяет, сколько в нем слов, состоящих из не более чем четырех букв. 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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пример 8.4. Вывод предложений, состоящих из заданного количества слов | | | Пример 9.1. Поиск в массиве структур |