Назад | Начало урока | Вперед
Содержание

Глава 5

Задача 5.8 "Содержание."

Напишите программу, формирующую страницу с оглавлением для книги с указанием номеров страниц. Данные должны быть считаны из файла, выходные данные программы необходимо направить на принтер. Для примера возьмем следующие входные данные:

(Первые шаги (Компьютер, 5) (Решение проблем (Определение, 10) (Общие черты, 15) (Алгоритмы, 20)) (Программы и процедуры, 25)) (Типы и циклы (Типы (Целые числа, 30) (Символы, 36) (Булевы переменные, 43)) (Циклы (Циклы, управляемые счетчиком, 49) (Циклы, управляемые условием, 52)))

В скобках приведены заголовки глав, разделов и подразделов, а числа, которые за ними следуют, являются номерами страниц. Номер страницы указывается, если структура не имеет подструктур. В результате обработки приведенных выше данных мы получим следующее:

Содержание
1. Первые шаги

1.1. Компьютер 5
1.2 Решение проблем
1.2.1 Определение 10
1.2.2 Общие черты 15
1.2.3 Алгоритмы 20
1.3. Программы и процедуры 25
2. Типы и циклы
2.1. Типы
2.1.1 Целые числа 30
2.1.2. Символы 36
2.1.3. Булевы переменные 43
2.2 Циклы
2.2.1 Циклы, управляемые счетчиком 49
2.2.2 Циклы, управляемые условием 52

Решение

Код программы:



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();
}
}


Результат :

Подсказка


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz