Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
печатай!!11!1.doc
Скачиваний:
6
Добавлен:
23.11.2019
Размер:
97.79 Кб
Скачать

Int main()

{tQueue <int> t;

inti;

ifstreamin("data1.txt"); //описываем входной поток и связываем его с data1.txt

while (in.peek()!=EOF) //пока не конец файла

{

in>>i; //считываем из него числа

t.put(i); //кладем их в очередь

}

in.close(); //закрываем файл

ifstreamin1("data2.txt");//описываем входной поток и связываем его с data2.txt

ofstreamout("data1.txt");//описываем выходной поток и связываем его с data1.txt

while (in1.peek()!=EOF) // пока не конец файла data2.txt

{

in1>>i; //считываем из него числа

out<<i<<" "; //записываем в файл data1.txt

}

in1.close();//закрываем файл

out.close();//закрываем файл

ofstreamout1("data2.txt");//описываем выходной поток и связываем его с //data2.txt

while (!t.empty()) //пока очередь не пуста

out1<<t.get()<<" "; //выбираем из нее элементы и записываем в data2.txt

out1.close();();//закрываемфайл

return 0;

}

______data1.txt_________________ ______ data2.txt____________________

7 515 46 46 2 5 8 12 45 6 6

______data1.txt_________________ _______ data2.txt___________________

2 5 8 12 45 6 6 7 515 46 46

2. Дана последовательность натуральных чисел. Создать из них очередь и каждый ее элемент, равный х заменить на элемент равный у. Входная последовательность целых чисел и заданные числа x и y хранятся в файле input.txt, выходная последовательность целых чисел записывается в файл output.txt.

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

#include "exception"

#include "iostream"

#include "fstream"

#include "string"

using namespace std;

class queueException: public exception

{

public:

queueException(const string & message="")

: exception(message.c_str())

{}

};

template <class Item>

class tQueue

{

struct elem

{Item inf; // информационное поле целого типа

elem *next;

elem (Item x):inf(x),next(0)

{}

};

public:

elem *head,*tail;

tQueue():head(0),tail(0){}

bool empty()

{return head==0;}

Item get()

{

if (empty())

throw queueException("StackException: get — queue empty");

else

{

elem *r=head;

Item i=r->inf;

head=r->next;

delete r;

return i;

}

}

void put(Item data)

{elem *t=tail;

tail=new elem(data);

if (!head) head=tail;

else t->next=tail;

}

};

intmain()

{tQueue <int> t,t1; //описываем две очереди целых чисел

int i,x,y;