Глава 5
Задача 5.8 "Содержание."
Напишите программу, формирующую страницу с оглавлением для книги с указанием номеров страниц. Данные должны быть считаны из файла, выходные данные программы необходимо направить на принтер. Для примера возьмем следующие входные данные:
(Первые шаги (Компьютер, 5) (Решение проблем (Определение, 10) (Общие черты, 15) (Алгоритмы, 20)) (Программы и процедуры, 25)) (Типы и циклы (Типы (Целые числа, 30) (Символы, 36) (Булевы переменные, 43)) (Циклы (Циклы, управляемые счетчиком, 49) (Циклы, управляемые условием, 52)))
В скобках приведены заголовки глав, разделов и подразделов, а числа, которые за ними следуют, являются номерами страниц. Номер страницы указывается, если структура не имеет подструктур. В результате обработки приведенных выше данных мы получим следующее:
Содержание
1. Первые шаги
Решение
Код программы:
import java.io.*;
import javagently.*;
class Contents {
Contents() throws IOException {
Stream fin = new Stream(System.in);
Stream fout= new Stream ("data.out",Stream.WRITE);
try {
fin = Filer.open("data.txt");
}
catch (FileNotFoundException e) {
System.out.println("Five tries up");
System.out.println("Connecting to keyboard by default");
}
String s;
char ch;
int n = 0;
int m = 0;
int j = 0;
int mas[] = new int[4];
mas[j] = 0;
// try read file
try {
for(;;){
s = fin.readLine();
for(int i=0;i < s.length();i++)
{
ch = s.charAt(i);
if(ch == '('){
n++;
j = (n-m);
mas[j]++;
if(j==1){
mas[2] = 0;
mas[3] = 0;
}
if(j==2){
mas[3] = 0;
}
fout.print("\n");
for(int w=0;w < j;w++){
fout.print("\t");
}
if(mas[2]==0)
fout.print(mas[1] + ".");
if(mas[2]!=0 & mas[3]==0)
fout.print(mas[1] + "."+ mas[2] + ".");
if(mas[2]!=0 & mas[3]!=0)
fout.print(mas[1] + "."+ mas[2] + "."+ mas[3] + ".");
continue;
}
if(ch == ')')
{
m++;
continue;
}
else{
fout.print(ch);
}
}
}//end for
}
catch (EOFException e) {
System.out.println(" All data is reading ");
}
fin.close();
fout.close();
}//end constructor
public static void main (String[] args) throws IOException {
new Contents();
}
}
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание