Национальный исследовательский
Томский политехнический университет
Факультет АВТ
Кафедра ИПС
Динамические структуры данных
Отчет по лабораторной работе № 15
по дисциплине "Программирование на языке высокого уровня"
вариант № 9
Выполнил:
| студент группы 8В83 Колчанов А.В.
| Проверил:
| преподаватель
Погребная Т.А.
|
Томск 2010 Условие задачи Дан текстовый файл. Получить новый файл, содержащий слова, состоящие из четырех символов в алфавитном порядке. Вывести на экран и в файл. Использовать односвязные списки, классы, конструкторы, входные и выходные файлы. Алгоритм решения Создаем структуру списка, класс и определяем его методы. Считываем из файла слова и загружаем их в список. Выводим список на консоль и в файл, причем выводятся только слова, состоящие из 4-х букв и расположенные в алфавитном порядке. Исходный файл
ABBA CAT PROGRAM BABY TOMSK BEER BEEP VITE DOG AUTO
Листинг
Файл list.h
#include "iostream"
#include "string.h"
using namespace std;
// данные
struct Element
{
string data;
Element *next; // указатель на следующий элемент списка
};
//класс и методы
class List
{
Element *pHead; // указатель на первый элемент списка
Element *pPrev; // указатель на последний элемент списка
int countElem; // количество элементов в списке
public:
List();
~List();
void addToList(string data);
void printList();
void printToFile(string filename);
void delAllList();
};
List::List()
{
pHead = NULL;
countElem = 0;
}
List::~List()
{
delAllList();
}
void List::printToFile(string filename)
{
ofstream file(filename);
Element *pTemp = pHead;
string d = pTemp->data;
while(pTemp != NULL)
{
if (pTemp->data.size()==4)
if (d.compare(pTemp->data)<0)
{
d=pTemp->data;
file<
}
pTemp = pTemp->next;
}
file.close();
}
//
void List::addToList(string data)
{
Element *temp = new Element;
if(pHead == NULL)
pHead = temp;
else
pPrev->next = temp;
temp->data = data;
temp->next = NULL;
pPrev = temp;
countElem++;
}
//
void List::printList()
{
Element *pTemp = pHead;
string d = pTemp->data;
while(pTemp != NULL)
{
if (pTemp->data.size()==4)
if (d.compare(pTemp->data)<0)
{
d=pTemp->data;
cout<
}
pTemp = pTemp->next;
}
}
//
void List::delAllList()
{
while(pHead != NULL)
{
Element *pTemp = pHead;
pHead = pHead->next;
delete pTemp;
}
}
Файл laba5.cpp
#include "stdafx.h"
#include "string"
#include "conio.h"
#include "fstream"
#include "list.h"
int _tmain(int argc, _TCHAR* argv[])
{
List lst;
ifstream data("D:\\data2.txt");//открываем файл
int count=0;//общее кол-во четырехбуквенных слов
string str;
while (!data.eof())
{
data>>str;
if (str.size()==4) count++;
}
data.close();
data.open("D:\\data2.txt");
//заполняем
int i=0;
while (!data.eof())
{
data>>str;
if (str.size()==4)
lst.addToList(str);
}
// Распечатываем содержимое списка
lst.printList();
lst.printToFile("D:\\aaa2.txt");
_getch();
return 0;
}
Результат работы программы BABY BEER VITE Вывод Научились работать со списками и строками, повторили динамическую струтуру данных. |