|
Программирование >> Программирование на языке c++
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). Предполагается, что объект ключ (к)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |