Программирование >>  Программирование на языке c++ 

1 ... 84 85 86 [ 87 ] 88 89 90 ... 159


lineto{p2.x,p2.y); вычерчивание линии

TPoints.Add(p2); сохранение информации о точке

lineto(p3.x,p3.y); вычерчивание линии

TPoints.Add(p3); сохранение информации о точке

getch(); ожидание нажатия любой клавиши

cb.clrscrO; очистка экрана

getch(); ожидание нажатия любой клавиши

TArraylterator<TPoint> next{TPoints);

moveto(0,0); перемещение курсора в левый верхний угол

for (int j=0;next;next++,j++)

lineto(TPoints[j].x,TPoints[j].y); вычерчивание линии getcliO; ожидание нажатия любой клавиши closegraphO; закрытие графической системы

Десятая программа снова показывает использование всех трех параметров в конструкторе TSArrayAsVec-tor<char>.

#include <iostream.h> #include <classlib\arrays.h> void main(void)

{ TSArrayAsVector<char> a(3,0,3); char j=6;

while( (la.lsFullO) && (j>5) ) программа завершит { cin j; работу, если ввести

a.Add(j); символ с ASCII кодом меньше 6 cout << Array size = << a.ArraySize()

endl; } TSArrayAsVectorlterator<char> next(a); cout << Items = << a.GetltemslnContainerO << endl; cout << Has member 7: << a.HasMember(7) << endl; while (next 1= 0)

{ cout << next.CurrentO \t; -H-next; }

cout << endl;



После запуска этой программы на выполнение можно видеть, как изменяется размер массива (Array size) в зависимости от числа его элементов (см. строку cout Array size = a.ArraySizeO endl;). В программе используется несколько новых функций:

IsFuUQ - возвращает значение 1, если массив является заполненным, в противном случае возвращает значение 0;

GetltemsInContainerO - возвращает число объектов в массиве (это число отличается от значения, возвращаемого функцией ArraySizeO, которая возвращает размер массива);

HasMember(m) - возвращает значение 1, если объект m находится в массиве, в противном случае возвращает значение 0.

Одиннадцатая программа демонстрирует работу с очередью. #include <iostream.h> #include <classlib\queues.ii> void main(void)

{ TQueue<ciiar> a; a - очередь объектов типа ciiar for(ciiar c=a; c<a-l-5;c-l-l-) запись в очередь

значений abode

a.Put(c);

TQueueiterator<ciiar> next(a); итератор для очереди

wiiile (next != 0)

{ cout next.CurrentO

-l-+next; }

cout << endl; Результат: e d с b a

Последняя двенадцатая программа демонстрирует работу со словарями и кэщ-таблицами. #include <cstring.h> для класса string

#include <classlib\assoc.h> #include <classlib\dict.h> #include <iostream.h>

static char *my str[] = данные для словаря вида

ключ - значение



{ Aveiro , Portuguese city , ключ значение Minsk , Byelorussian city , ключ - значение Ulianovsk , Russian city , ключ - значение Novosibirsk , Russian city }; ключ - значение

class Hash : public string {

public:

HashO : stringO {}

Hash(const char* s) : string(s) {}

unsigned HashValue() const { return hash{); } компо- нент-функция. Здесь hash() - функция класса string

typedef TDDAssociation<Hash,Hash> Str; typedef TDictionaryAsHashTable<Str> Diet; void main(void)

{ char test[80]; объявление массива, в который

вводится строка cin test; ввод строки-ключа

Diet D1; объявление словаря D1 с размером

по умолчанию for( int i = 0; i < (sizeof{my str)/sizeof(*my str)); i+=2 ) D1.Add(Str(my str[i],my str[i+1])); добавление

элемента

Str *p = D1.Find(Str(test,(char *)0 )); поиск элемента if(p==NULL) cout << not found\n ; если элемент

не найден

иначе вывод ключа (к) и соответствующего ему

значения (v) else cout р->Кеу() - p->ValueO endl;

Здесь класс TDDAssociation<Hash,Hash> позволяет установить взаимосвязь между двумя объектами типа Hash. Конструктор для этого класса задается в следующем виде: TDDAssociation<const К &k,const V &v>

Левый объект (к) далее будет давать ключ для нахождения правого объекта (v). Предполагается, что объект ключ (к)



1 ... 84 85 86 [ 87 ] 88 89 90 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика