Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 244

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 238 239 240 241 242 243 < 244 > 245 246 247 248 249 250 .. 259 >> Следующая

562
4
Глава 15, Структуры данных и алгоритмы
import j ava * util.* і
Import java.io,*;
import javagently.*;
public class Training {
/* Программа
* "Курсы повышения квалификации" Автор Дж.М. Бишоп, январь 1997 г,
* ==========~^—--======¦====== Java 1,1
* обновлена, август 2000 г.
* Создает спискя раб от ников, записавшихся на курсы,
* а также перечни посещаемых курсов для каждого работника,
* включая список сотрудников, посещающих специальные курсы.

* Использует битовые множества и свой собственный класс
* StringTokenizers, а не определенный в javagently класс Text.
*/
BitSet courses [];
BitSet schedules [];
int employeeMax, courseMax;
Stream in - new Stream (System.in);
public static void main (String arg []) throws lOException ( new Training ();
)
Training () throws lOException {
// Главная программа объявляет два массива множеств, а затем // вызывает три статических метода для считывания данных и // вывода их на печать.
System, out .println ("*** Курсы повышения квалификации ****»¦),-System.out.print("Какой наибольший номер курса?"); courseMax = in.readlnt[};
System*out.print("Какой наибольший номер работника?"); employeeMax = in-readlnt{};
// Создаем массив битовых множеств, по одному для каждого курса,
// Размер каждого множества должен равняться числу єшрІоуееМах.
// Сами множества создаются позже, когда Будут вводиться данные, courses = new BitSet [courseMax];
// Создаем массив битовых множеств, по одному для каждого работника, // Размер каждого множества должен равняться числу courseMax,
// Сами множества создаются позже, когда будут вводиться данные, schedules = new BitSet [employeeMax];
System, out. println {’’Введите перечень курсов, посещаемых работником; '*) System.out.println("Шаблон ввода: номер работника номера курсов"); System.out,println("Пример: 100 12 7 4 15");
System,out.println("После перечня курсов введите пустую строку"); readln{);
frispiay O ;
userCodes();
Битовые множество
563
void readln 0 throws IOException (
// Использует свой собственный класс StringTokenizer,
// поскольку данные вводятся по одной строке за один проход.
// 0 пустой строке нет лексем, и это является признаком завершения П процесса считывания данных.
String s;
StringTokenizer Т; int n, cf ntokens;
while(true) {
s = in.readLine();
T = new StringTokenizer (s) ntokens = T.countTokens ();
if (ntokens == 0) break; // больше нет работников n - getlnt fT);
// Создаем перечень для работника "п.” schedules [п] = new BitSet (courseMax); for ? int 1=0 і i<ntokens-1; i+-«-) {
с — getlnt(T);
/ / Создаем курс " си г если он еще fie был создан. if (courses[с] null)
courses[с] = new BitSet (employeeMax)
// Помещаем работника "п,т и курс ”с”. courses[cj. set(n);
// Помещаем курс ”см в перечень курсов,
// посещаемых работником "n". schedules [n].set(c);
}
}
System„out.println("Данные введены успешно»4);
J
void display () {
// Выводы на печать каждого из массивов множеств // немного отличаются
// друг от друга. Для вывода на печать одного множества вызывается // метод printSet.
System.out .println ("Курсы и записавшиеся на них'1};
System»out .println (||== =====--*¦);
for (int с =0; c<courseMax; C++) {
System, out .print (c + " : 11) ;
if (courses[cj-=null) System, out. println (т|Нет желающих"); else
printSet(courses[cj);
\
¦ Й
System.out¦println("Курсы, посещаемые работником");
System. out. println (,T-^^=^-^—j ¦ for (int n = Of n < employeeMax; n++) {
il~ tscrieauxes inf := null) {
System.out-print(п*“: printSet(schedules[n]);
564
Главо 15. Структуры донных и алгоритмы
}
}
}
void userCodes () throws IOException {
// Метод, деьюнстриружзщий операцию объединения множеств.
І І Получив подмножество номеров курсов,
// создаем объединение (метод or) всех работников, записавшихся на // них, и выводим на печать это множество.
Text-prompt (*'На каких курсах буде'Г нужен компьютер?м) ;
BitSet codesMeeded - new BitSet(employeeMax);
String s;
StringTokenizer T; int c, ntokens;
s - in.readLine0 ;
T = new StringTokenizer (s); ntokens = T.countTokens (); for (int i=0; i<ntokens; i+-) {
с = getlnt(T); codesNeeded.or(courses[c] ) ;
>
System.out,printlnt"Работники, которым будут нужны компьютеры"); System.ou!:.println ("====—) ; printSet(codesNeeded);
}
void printSet (BitSet b) і
// Распечатывает элементы единственного битового множества.
fs24 for (int І = 0; І < b.sizef); і++)
if (b,geL(і}) System,out.print[i+" ");
System.out,println(} ;
}
int getlnt (StringTokenizer T) {
Предыдущая << 1 .. 238 239 240 241 242 243 < 244 > 245 246 247 248 249 250 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.