Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗадачникПоТПиРнаЭВМ.doc
Скачиваний:
28
Добавлен:
11.03.2016
Размер:
1 Mб
Скачать

Содержимое файла “input.Txt”

Рис. 11.10. Информация, находящаяся в файле «input.txt»

//L11_4.cpp

#include <fstream>

#include <iostream>

using namespace std;

struct ochered

{

char c;

ochered *next; //Указатель на следующий элемент

};

//Прототип функции постановки в очередь:

void add_ochered(ochered **begin, ochered **end, char nc);

//Прототип функции удаления из очереди:

void del_ochered(ochered **begin, ochered **end);

struct stek

{

char c;

stek *next; //Указатель на следующий элемент

};

//Прототип функции постановки в стек:

stek* add_stek(stek *top, char nc);

//Прототип функции удаления из стека:

stek* del_stek(stek*);

//Прототип функции печати содержимого очереди:

void print_och(ochered *begin, char *sn);

//Прототип функции печати содержимого стека:

void print_stek(stek *top, char *sn);

void add_ochered(ochered **begin, ochered **end, char nc)

{

ochered *new_el;

new_el=new ochered; //Создание нового элемента

(*new_el).c=nc;

(*new_el).next=NULL;

if(*begin==NULL) //Очередь пуста.Элемент вносится как единственный

{

(*begin)=(*end)=new_el;

return;

}

//Внесение нового элемента в очередь:

(**end).next=new_el;

(*end)=new_el;

}

void del_ochered(ochered **begin, ochered **end)

{

ochered *ptr;

ptr=*begin;

if(*begin==NULL) //Очередь пуста

{

cout<<"Очередь пуста";

return;

}

//Передвигается начало очереди:

(*begin)=(**begin).next;

//Освобождается память, выделенная для удаляемого элемента:

delete ptr;

}

void print_och(ochered *begin, char *sn)

{

ofstream ff(sn);

ochered *ptr=begin;

while(ptr!=NULL)

{

ff<<(*ptr).c;

ptr=(*ptr).next;

}

}

stek* add_stek(stek *top, char c)

{

stek* new_el;

new_el=new stek; //Создание нового элемента

new_el->c=c;

new_el->next=NULL;

if(top==NULL) //Стек пуст.Элемент вносится как единственный

top=new_el;

else

{

//Внесение нового элемента в стек:

new_el->next=top;

top=new_el;

}

return top;

}

stek*del_stek(stek *top)

{

stek *tmp;

tmp=top;

if(top==NULL) //Стек пуст

{

cout<<"Стек пуст";

return NULL;

}

//Передвигается начало стека:

top=top->next;

//Освобождается память, выделенная для удаляемого элемента:

delete tmp;

return top;

}

void print_stek(stek *top, char *sn)

{

ofstream ff(sn,ios::app);

stek *ptr=top;

while(ptr!=NULL)

{

ff<<(*ptr).c;

ptr=(*ptr).next;

}

}

int main( )

{

ifstream ff("input.txt");

char cc[81];

int i;

ochered *begin,*end;

stek *top;

begin=end=NULL;

top=NULL;

ff.getline(cc, 80);

while(!ff.eof())

{

for(i=0; cc[i]!='\0'; i++)

{

if(cc[i]>='A' && cc[i]<='z')

top=add_stek(top, cc[i]);

else

if(cc[i]>='0'&&cc[i]<='9')

add_ochered(&begin, &end, cc[i]);

}

ff.getline(cc, 80);

}

ff.close();

char so[8]="out.txt";

print_och(begin, so);

print_stek(top, so);

return 0;

}

Результат выполнения программы листинга 11.4 приведен на рис. 11.11.

Рис. 11.11. Результат работы программы листинга 11.4

Упражнения

  1. В файле “input.txt” задан текст. Ввести структуру, отражающую уникальное слово и частоту его встречаемости в тексте. Создать очередь, элементы которой тип введенной структуры. Результат записать в файл.

  2. В файле “input.txt” задан текст. Ввести структуру, отражающую уникальное слово и частоту его встречаемости в тексте. Создать односвязный список, содержащий слова в алфавитном порядке, и результаты записать в файл.

  3. В файле “input.txt” задана последовательность чисел и символов арифметических операций (+, -, *, /). Если из файла считывается число, то оно помещается в стек. Если считывается символ, то из стека извлекаются два числа и над ними производится данная арифметическая операция (если она допустима), и результат вновь помещается в стек. Если операцию по каким-либо причинам выполнить невозможно (не хватает чисел в стеке или делитель равен нулю), то на экран выдается сообщение о причине и необходимо прекратить выполнение программы. Если чтение из файла “input.txt” заканчивается успешно, то выдать информацию о количестве проведенных операций.

  4. В файле “input.txt” задан список абитуриентов ННГУ с указанием фамилии, имени и отчества, а также суммы баллов, набранных по профильным предметам. Составить односвязный список абитуриентов по убыванию суммы баллов и результаты записать в файл.

  5. В файле “input.txt” задан список сотрудников фирмы с указанием даты их поступления на работу. Для описания дат создать структуру. Написать функцию сравнения двух дат. Составить односвязный список сотрудников в порядке возрастания даты их поступления на работу.

  6. Для описания дат создать структуру и написать функцию сравнения двух дат. Разработать структуру для описания интервала, состоящего из двух дат. В файле “input.txt” задан список из нескольких пар дат – концов интервала. Составить из них очередь. Определить, существует ли непустое пересечение этих интервалов.

  7. В файле “input.txt” задан список студентов ММФ ННГУ с указанием фамилии, имени и отчества, а также название предмета и экзаменационная оценка. Составить односвязный список студентов в алфавитном порядке с указанием среднего балла.

  8. Создать структуру для описания комплексных чисел. Написать функции действий с комплексными числами (сложение, вычитание, умножение, деление, нахождение модуля). В файле “input.txt” задан список из четного числа комплексных чисел. Для каждой пары комплексных чисел выполнить все четыре арифметических действия и результат записать в файл. Если действия выполнить нельзя, вывести об этом сообщение.

  9. В файле “input.txt” задан список заданий для выполнения на ЭВМ. Задание включает: номер задания, длительность выполнения (в минутах) и фамилию исполнителя. Разработать структуру заданий. Создать из заданного списка очередь на выполнение работ. Определить общее время работы в часах и минутах.

  10. В файле “input.txt” задан список заданий для выполнения на ЭВМ. Задание включает: номер задания, длительность выполнения (в минутах) и фамилию исполнителя. Разработать структуру заданий. Создать односвязный список по убыванию длительности выполнения задания. Полученные данные записать в файл.

  11. Для описания дат создать структуру и написать функцию проверки правильности вводимой даты. В файле “input.txt” задан список дат. При чтении из файла отмечать неправильно записанные даты и заносить их в стек. Определить число неправильно введенных дат и вывести на экран.

  12. Для описания дат создать структуру и написать функцию проверки правильности вводимой даты. В файле “input.txt” задан список дат. При чтении из файла игнорировать неправильно записанные даты. Правильно записанные даты заносить в очередь. Определить число правильно введенных дат и вывести на экран.

  13. Для описания дат создать структуру и написать функции: проверки правильности вводимой даты и сравнения двух дат. В файле “input.txt” задан список дат. При чтении из файла игнорировать неправильно записанные даты, а из правильно записанных дат создать односвязный список по возрастанию дат. Определить число неправильно введенных дат и вывести на экран.

  14. Создать структуру очереди, хранящую символ. В файле «input.txt” задан текст. Преобразовать его следующим образом: сначала должны идти цифры в том порядке, в котором они встречаются в файле ”input.txt”, а затем буквы кириллицы в том же порядке, в котором они встречаются в файле ”input.txt”.

  15. Создать структуры очереди и стека, хранящие символ. В файле ”input.txt” задан текст. Преобразовать его следующим образом: сначала должны идти латинские буквы в том же порядке, в котором они встречаются в файле ”input.txt”, а затем цифры в обратном порядке, чем в файле ”input.txt”.

  16. Создать структуры очереди и стека, хранящие символ. В файле ”input.txt” хранится текст. Преобразовать его следующим образом: сначала должны идти знаки препинания (, . ; : ! -) в том порядке, в котором они встречаются в файле ”input.txt”, а затем буквы кириллицы в обратном порядке, чем в файле ”input.txt”.

  17. Создать структуры очереди и стека, хранящие символ. В файле ”input.txt” задан текст. Преобразовать его следующим образом: сначала должны идти латинские буквы в том порядке, в котором они встречаются в файле ”input.txt”, а затем буквы кириллицы в обратном порядке, чем в файле ”input.txt”.

  18. Создать структуру для описания моментов времени (часы, минуты, секунды). Написать функцию сравнения двух моментов времени. Разработать структуру для описания участников олимпиады. В файле ”input.txt” задан список участников, содержащий фамилию, имя, отчество и показанный результат. Составить односвязный список по возрастанию показанных результатов и распечатать информацию о первых шести участниках.

  19. Создать структуру для описания моментов времени (часы, минуты, секунды). Написать функцию сравнения двух моментов времени. Разработать структуру для описания участников олимпиады. В файле ”input.txt” задан список участников, содержащий фамилию, имя, отчество и показанный результат. Составить односвязный список по убыванию показанных результатов и распечатать информацию о первых шести участниках.

  20. Для описания дат создать структуру и написать функцию, определяющую расстояние в днях между двумя датами. В файле “input.txt” задан список фирм с указанием даты их основания. Составить односвязный список фирм в а порядке возрастания длительности их работы на текущую дату.

  21. Для описания дат создать структуру и написать функцию, определяющую расстояние в днях между двумя датами. В файле “input.txt” задан список сотрудников фирмы с указанием начала их контракта и даты его окончания. Составить односвязный список сотрудников в алфавитном порядке с указанием числа дней работы в данной фирме.

  22. Для описания дат создать структуру и написать функцию сравнения двух дат. Ввести структуру для описания интервала, состоящего из двух дат. В файле “input.txt” задан список сотрудников фирмы с указанием дат начала и конца их командировки, а также города, куда они были направлены. Определить, какие из сотрудников могут встретиться в командировке, и создать очередь из этих сотрудников.

  23. Для описания дат создать структуру и написать функцию сравнения двух дат. В файле “input.txt” задан список продуктов, хранящихся на базе, с указанием срока годности. Создать очередь из продуктов, срок годности которых истек на данную дату. Вывести на экран список продуктов, годных к реализации.

  24. Для описания дат создать структуру и написать функцию сравнения двух дат. В файле “input.txt” задан список продуктов, хранящихся на базе, с указанием срока годности. Создать стек из продуктов, годных к реализации на данную дату. Вывести на экран информацию о продуктах, срок реализации которых истек.

  25. Для описания дат создать структуру и написать функции: сравнения двух дат и определения расстояния в днях между двумя датами. В файле “input.txt” задан список продуктов, хранящихся на базе, с указанием срока годности. Создать очередь из продуктов, срок годности которых истекает не позднее, чем через пять дней до заданной даты. Вывести на экран список продуктов, годных к реализации, но не вошедших в созданную очередь.