Строки и текстовые файлы
Изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов. Стандартные средства языка C/C++ для работы со строками и текстовыми файлами. Принципы и основные этапы процедурного программирования на данном языке.
| Рубрика | Программирование, компьютеры и кибернетика |
| Вид | лабораторная работа |
| Язык | русский |
| Дата добавления | 30.05.2016 |
| Размер файла | 18,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Отчет о лабораторной работе
Строки и текстовые файлы
Цель лабораторной работы: изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов; изучение стандартных средств языка C/C++ для работы со строками и текстовыми файлами; совершенствование навыков процедурного программирования на языке C/С++ при решении задач редактирования текстовых файлов.
Задание на программирование: используя технологию процедурного программирования разработать программу обработки текстовых файлов с числом строк не менее пяти, каждая из которых содержит не более 80 символов, в соответствии с индивидуальным заданием.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание на обработку строк текстового файла.
2) Построить схему алгоритма решения задачи с использованием функций обработки строки, функции создания, просмотра и редактирования текстового файла.
3) Составить спецификации функций.
4) Составить программу на языке C/С++.
5) Проверить и продемонстрировать преподавателю работу программы на полном наборе тестов. Обеспечить одновременный показ на экране исходного и отредактированного файлов.
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, спецификации функций, текст программы, контрольные примеры.
1) Задание #12:
Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые начинаются с прописной буквы.
2) Построим схему алгоритма решения задачи с использованием функций обработки строки, функции создания, просмотра и редактирования текстового файла:
1) Создадим поток записи в файл ofstream из библиотеки <fstream>
2) Откроем файл для записи с помощью метода.open () потока ofstream из стандартной библиотеки <fstream> (Данный метод также создаст пустой файл, если его там нет или затрёт всё его содержимое)
3) Используем объект класса <string> как переменную для хранения вводимых данных
4) Используем метод std:getline() для инициализации экземпляра string
5) Закроем файл методом.close() класса fstream
6) Создадим экземпляр класса ifstream библиотеки <fstream> для изъятия информации из файла
7) Откроем файл для чтения знакомым методом.open()
8) Используем возвращаемое значение метода.eof() чтобы определить конец файла при считывании информации как из потока данных методом std:getline()
9) Результат считывания занесём в экземпляр класса string библиотеки <string.h>
10) Обработаем строку созданной нами функцией findWords()
11) Выведем обработанную строку на экран
3) Спецификации функций
int make_file (char *fname);
// создание файла
void pro_verka (char *fname, int strCount);
// чтение и обработка строк файла
bool WhileSK (string s, int k);
// Условие цикла пересчёта букв в слове
string scanWord (int i, string s);
// Сканируем слово
string findWords (string s);
// Ищем в строке нужные словА
Текст программы
#include <stdio.h>
#include <conio.h>
#include <string>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <locale>
#define _ULONGLONG unsigned __int64
программирование текстовый процедурный
// Этот дефайн нужен для корректной работы метода std:to_string()
using namespace std;
#define FNAME «C:\\stroka.txt» // имя файла объявлено константой
int make_file (char *fname); // создание файла
void pro_verka (char *fname, int strCount); // чтение и обработка строк файла
bool WhileSK (string s, int k); // Условие цикла пересчёта букв в слове
string scanWord (int i, string s); // Сканируем слово
string findWords (string s); // Ищем в строке нужные словА
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system («cls»); // Очищаем экран консоли
char fname[20] = FNAME;
int strCount = make_file(fname); // запуск создания файла
pro_verka (fname, strCount); // запуск обработки файла
system («pause»);
return 0;
}
// Функция создания текстового файла
int make_file (char *fname)
{
ofstream outS; // Создаём поток
outS.open (FNAME, ios:trunc); // Открываем файл и затираем всё что там есть
int strCount=0; // Опциональное значение количества строк
string st = «»; // исходная строка
printf («\nCreating the file…\n»); // Создаём файл
printf («Press <Enter> after every string.\n»); // нажмите ввод полсе каждой строки
printf («Enter empty string to stop\n»); // Пустая строка для остановки
printf («Enter a string and press <Enter>\n»);
printf(«->»);
getline (cin, st, '\n'); // Ожидаем ввода первой строки
while (st!= «»)
{
cin.sync(); // Очищаем входной поток
outS << st << endl; // Отправляем поток данных в файл
printf («\nEnter a string and press <Enter>\n»);
printf(«->»);
getline (cin, st, '\n'); // Ожидаем ввода других строк
//cout << st; // Выводим строку, чтобы убедиться
// Что наш компилятор не преобразовал
// Её в каракули))
strCount++; // Считаем строчки (Опционально)
}
outS.close(); // закрываем файл
return strCount;
}
// читаем и обрабатываем строки файла
void pro_verka (char *fname, int strCount)
{
_ULONGLONG counter = 0; // Этот тип вместо int
// нужен для метода
//std:to_string() - мы
// преобразуем int в string,
// чтобы прибавить номер строки (int)
// К самой строке с помощью «+»
string inpStr = «»; // » сумма» входных строк
string inp = «»; // Входная строка
string result = «»; // Выходная строка
ifstream input; // Входной поток
input.open(FNAME) ; // Открываем файл
//Check for error
if (input.fail()) // Проверка на валидность
{
cerr << «Error Opening File»;
exit(1);
}
while (! input.eof()) // До тех пор пока не конец файла
{
getline (input, inp); // Берём строку гетлайном
counter++; // Номер нашей строки, мы его выведем.
if (inp!= «») // Помещаем введённую строку в переменную
inpStr += std:to_string(counter) +») «+ inp + «\n»;
if (inp!= «») // Обрабатываем строку нашей f(x)
result += std:to_string(counter) +») «+ findWords(inp);
}
cout << «Исходные строки: \n_________________\n» << inpStr << «\n_________________» << endl;
cout << «\nСлова из Ваших строк, начинающиеся со строчной буквы: \n_________________\n»
<< result << «\n_________________» << endl;
input.close();
}
// Ищем в строке словА
// со строчной буквы
string findWords (string s)
{
string newString = «»; // Результирующая строка.
bool begin = true; // Начало текста или нет.
for (int i = 0; i < s.length(); i++) // Пока символы в строке не кончатся.
{
if (begin? (s[i]!=' '): ((s[i]!=' ')&&(s [i-1]==' ')))
{
begin = false;
newString += scanWord (i, s) + «»;
}
}
return newString + «\n»;
}
// Сканируем слОво на предмет
// Начала со строчной буквы
string scanWord (int i, string s)
{
string theWord = «»; // Результирующее слово
string pr = «АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ»;
for (int l = 0; l < pr.length(); l++)
{
if (s[i]==pr[l])
{
for (unsigned int k = i; WhileSK (s, k); k++)
{
theWord += s[k]; // заносим посимвольно в
// нужное нам слово буквы
}
}
}
return theWord;
}
// Условие цикла пересчёта букв в слове
bool WhileSK (string s, int k)
{
if (k < s.length())
return s[k]!= ' ';
else
return false;
}
Размещено на Allbest.ru
Подобные документы
Средства языка программирования Delphi. Структурные типы данных. Строковые переменные, массивы, множества, файлы. Механизм классов в C++. Интерфейсный и описательный обзоры классов в Delphi. Работа с текстовыми и бинарными файлами прямого доступа.
курсовая работа [990,4 K], добавлен 07.08.2012Принципы и порядок работы с файлами на языке Delphi, получение навыков программирования с использованием файлов. Создание каталога продуктов. Страница палитры компонентов, настраиваемые компоненты и их значения. Текст программы и ее тестирование.
лабораторная работа [243,9 K], добавлен 09.01.2009Теоретическое изучение и практическое применение приёмов работы с файлами в операционной системе Windows 95. Файлы и папки: основные понятия и правила формирования имен файлов в Windows. Характеристика и анализ особенностей операций с файлами и папками.
контрольная работа [139,9 K], добавлен 09.03.2011Файл - именованная область внешней памяти ПК. Процедуры и функции языка Pascal для работы с файлами прямого и последовательного доступа. Классификация файлов по типу доступа к элементам. Обоснование выбора средств программной реализации блоков.
лабораторная работа [10,4 K], добавлен 13.02.2009Создание приложения Windows, позволяющего автоматизировать процесс обработки информации студентов университета. Организация работы с физическими файлами в языках программирования. Изучение средств IDE Delphi для организации работы с текстовыми файлами.
курсовая работа [1,5 M], добавлен 08.11.2011Файл - именованная область памяти на магнитном носителе. Программирование доступа к файлу в языке Turbo Pascal. Описание файловой переменной. Виды файлов в зависимости от способа описания: текстовые, двоичные или типизированные и нетипизированные.
реферат [14,8 K], добавлен 19.01.2009Аналоги текстовых редакторов с русскоязычным интерфейсом. Разработка и тестирование программного продукта, позволяющего работать с текстом и файлами в редакторе на языке программирования, основанным на русском языке. Алгоритм функционала программы.
дипломная работа [2,8 M], добавлен 21.07.2013Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.
курсовая работа [761,7 K], добавлен 11.03.2015Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.
методичка [126,3 K], добавлен 07.12.2011Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016
