русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задание на программирование


Дата добавления: 2014-11-27; просмотров: 1305; Нарушение авторских прав


Задача 1. В файле находится текст, в котором используются скобки трех типов: (), | |. { }. Используя стек, проверить, соблюден ли баланс скобок в тексте.

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

а) закрывающих скобок (например, для текста a+(45-f(x)*(b-c)) надо напечатать 8 10; 12 16; 3 17);

б) открывающих скобок (например, для текста a+(45-f(x)*(b-c)) надо напечатать 3 17; 8 10; 12 16).

Задача 3. Используя стек, проверить, является ли содержимое текстового файла правильной записью формулы следующего вида:

<формула>::=<терм> | <терм>+<формула> | <терм>-<формула>

<тepм>::=<имя> | (<формула>)

<имя>::=x|y|z

Задача 4. В текстовом файле записана без ошибок формула следующего вида:

<формула>::=<цифра> | М(<формула>,<формула>) | m (<формула>, <формула>)

<цифра>::=0|1|2|3|4|5|6|7|8|9

(M обозначает функцию max, а m - функцию min).

Используя стек. вычислить как целое число значение данной формулы. Например, M(5,m(6,8))=6.

Задача 5. В текстовом файле записано без ошибок логическое выражение следующего вида:

<лог.выр.>::=true | false | !<лог.выр> | <лог.выр>.>&&<лог.выр> |<лог.выр.> || <лог.выр.>

Используя стек, вычислить значение этого выражения с учетом общепринятого приоритета операций.

Задача 6. Написать и протестировать функции включения, удаления и чтения очередного элемента стека объемом п элементов. В случае невозможности включения (переполнения стека), удаления из пустого стека выставлять флаг.



Задача 7. Написать и протестировать функции для включения, исключения и поиска элемента кругового списка для:

а) списка без заголовка;

б) списка с заголовком (заголовок может содержать некоторую информацию о списке, например, число элементов всписке).

Задача 8*. Используя двунаправленный список, написать и протестировать функции, реализующие отдельные действия при игре в "новое домино", в котором кроме традиционных правил игрок может на ходу заменить любую кость на свою. Необходимы следующие функции:

1) проверить, можно ли сделать ход;

2) сделать ход;

3) проверить, можно ли сделать замену;

4) заменит кость ;

5) определить закончена ли игра;

Задача 9* Напишите программу сложения двух длинных целых чисел, представленных в виде строк, используя:

1)круговые списки;

2)двунаправленные списки.

Задача 10Для организации вычисления значения выражения на ЭВМ удобнее вместо обычной (инфиксной) записи использовать постфиксную (или польскую инверсную) запись ПОЛИЗ. При вычислении выражения, записанного в ПОЛИЗе, операции выполняются в том порядке, в котором они встречаются при просмотре выражения слева направо; поэтому отпадает необходимость использования скобок и многократного сканирования выражения из-за различного старшинства операций.

Например, выражению 2+3*4 соответствует ПОЛИЗ 234*+, а выражению (а+(b^с)^d)*(e+f/d) – запись abc^d^+efd+*.

Используя стек:

1) вычислить как целое число значение выражения, записанного в ПОЛИЗе;

2) выражение, записанное в ПОЛИЗе, перевести винфексную форму и распечатать.

 

Задача 11 Многочлен от одной переменной Х можно представить как связанный спиок с узлами вида

 

Коэффициент при Х
Степень Х
Ссылка на следующий узел

Например, многочлен –3Х6+4Х3+6Х2+9 будет храниться в виде списка

 
 

 


В котором узлы расположены в порядке убывания степеней Х.

Используя список:

1) по введенной безошибочной записи многочлена построить его представление в виде списка;

2) сложить два многочлена, представленных в виде списка( нулевые слагаемые исключить из результирующего списка);

3) проверить на равенство два многочлена;

4) вычислить значение многочлена s(X), представленного в виде списка, в целочисленной точке Х.

5) По многочлену s(X) построить его производную – многочлен р(Х);

6) Привести подобные члены в многочлене и расположить его по убыванию степеней Х (например из –8х4-74х+8х4+5-х3 получить –х3-74х+5);

7) Перемножить два многочлена, заданных в виде списков;

8) Распечатать многочлен, заданный в виде списков в обычном виде(например, так 52х^3-6x^2+x);

 

Задача 12Состсавить программу, которая читает произвольный СРР-файл и печатает в алфавитном порядке каждую группу имен переменных, совпадающую в первых N символах, но различающихся где-либо дальше. Параметр N задается из командной строки. При решении задачи использовать дерево с узлами вида

Struct NODE

{{;

char *word;

int k;

NODE *left;

NODE *right;

};

(He рассматривать слова внутри символьных строк и комментариев !)

Задача 13*. Формулу вида

<формула>::=<цифра>| <формула><знак><формула>)

<знак>::=+|-|*

<цифра>::=0|1|2|3|4|5|6|7|8|9

можно представить в виде бинарного дерева по следующим правилам:

формула из одной цифры представляется деревом из одной вершины с этой цифрой;

формула вида fl # f2 представляется деревом, в котором корень - это знак # соответствующей операции, а левое и правое поддеревья - это представления формул fl, f2 в виде бинарных деревьев.

Например, формуле 5*(3+8) соответствует дерево

Требуется:

а) построить дерево по формуле указанного выше вида;

б) вычислить как целое число значение дерева-формулы;

в) по заданному дереву распечатать соответствующую формулу. ;

Задача 14. С использованием структуры "стек" переписать содержимое текстового файла, разделенного на строки, в другой файл. Причем, необходимо переносить в конец каждой строки все входящие в нее цифры в обратном порядке.

Задача 15. С использованием структуры "очередь" за один просмотр файла, содержащего целые числа, распечатать файл в следующем виде: сначала - все числа, меньшие А; затем - все числа из [A, B]; потом - все остальные числа.

Задача 16. Пусть имеется ЭВМ, у которой один регистр и шесть команд:

LD А загрузить А в регистр;

ST А запомнить содержимое регистра в А;

AD А сложить содержимое регистра с А;

SB А вычесть А из содержимого регистра;

ML А умножить содержимое регистра на А;

DV А разделить содержимое регистра на А

Напечатать последовательность машинных команд, необходимых для вычисления выражения, задаваемого в постфиксной форме. Выражение может состоять из однобуквенных операндов и знаков операций сложения, вычитания, умножения и деления. В качестве рабочих использовать переменные вида Tn.

Например, выражению ABC*+DE--/ будет соответствовать следующая последовательность команд:

LD В

ML C

AD А

ST T1

LD D

SB E

ST T2

LD T1

DV T2

ST T1

Задача 17*. Составить программу, формирующую "перекрестные ссылки", т.е. печатающую список слов, которые встречаются в анализируемом файле, а для каждого слова - список номеров строк, в которых это слово встречается. При решении задачи рекомендуется использовать следующие структуры данных:

struct LIST // списокномеров строк для данного слова

{

int num;

struct LISТ *p;

}

struct NODE // узел дерева с информацией об очередном слове

{

char * word;

struct LIST *lines;

struct NODE *left;

struct NODE *right;};

 

 



<== предыдущая лекция | следующая лекция ==>
Лабораторная работа № 20 | Апериодического звена первого порядка


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.