русс | укр

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

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

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

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


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

Упражнения


Дата добавления: 2015-06-12; просмотров: 590; Нарушение авторских прав


1. (*1) Измените программу калькулятора из главы 3 так, чтобы можно было воспользоваться классом table.

2. (*1) Определите tnode ($$R.9) как класс с конструкторами и деструкторами и т.п., определите дерево из объектов типа tnode как класс с конструкторами и деструкторами и т.п.

3. (*1) Определите класс intset ($$5.3.2) как множество строк.

4. (*1) Определите класс intset как множество узлов типа tnode. Структуру tnode придумайте сами.

5. (*3) Определите класс для разбора, хранения, вычисления и печати простых арифметических выражений, состоящих из целых констант и операций +, -, * и /. Общий интерфейс класса должен выглядеть примерно так:

class expr {

// ...

public:

expr(char*);

int eval();

void print();

};

Конструктор expr::expr() имеет параметр-строку, задающую выражение.

Функция expr::eval() возвращает значение выражения, а expr::print() выдает представление выражения в cout. Использовать эти функции можно так:

expr("123/4+123*4-3");

cout << "x = " << x.eval() << "\n";

x.print();

Дайте два определения класса expr: пусть в первом для представления используется связанный список узлов, а во втором – строка символов. Поэкспериментируйте с разными форматами печати выражения, а именно: с полностью расставленными скобками, в постфиксной записи, в ассемблерном коде и т.д.

6. (*1) Определите класс char_queue (очередь символов) так, чтобы его общий интерфейс не зависел от представления. Реализуйте класс как: (1) связанный список и (2) вектор. О параллельности не думайте.

7. (*2) Определите класс histogram (гистограмма), в котором ведется подсчет чисел в определенных интервалах, задаваемых в виде параметров конструктору этого класса. Определите функцию выдачи гистограммы. Сделайте обработку значений, выходящих за интервал. Подсказка: обратитесь к <task.h>.



8. (*2) Определите несколько классов, порождающих случайные числа с определенными распределениями. Каждый класс должен иметь конструктор, задающий параметры распределения и функцию draw, возвращающую "следующее" значение. Подсказка: обратитесь к <task.h> и классу intset.

9. (*2) Перепишите примеры date ($$5.2.2 и $$5.2.4), char_stack ($$5.2.5) и intset ($$5.3.2), не используя никаких функций-членов (даже конструкторов и деструкторов). Используйте только class и friend. Проверьте каждую из новых версий и сравните их с версиями, в которых используются функции-члены.

10. 10.(*3) Для некоторого языка составьте определения класса для таблицы имен и класса, представляющего запись в этой таблице. Исследуйте транслятор для этого языка, чтобы узнать, какой должна быть настоящая таблица имен.

11. 11.(*2) Измените класс expr из упражнения 5 так, чтобы в выражении можно было использовать переменные и операцию присваивания =. Используйте класс для таблицы имен из упражнения 10.

12. 12.(*1) Пусть есть программа:

#include <iostream.h>

main()

{

cout << "Всем привет\n";

}

Измените ее так, чтобы она выдавала:

Инициализация

Всем привет

Удаление

Саму функцию main() менять нельзя.



<== предыдущая лекция | следующая лекция ==>
Небольшие объекты | Введение и краткий обзор


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


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

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

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


 


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

 
 

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

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