Глава 4
Задача 4.15 "Экзамены. "
Экзаменационный билет содержит 4 вопроса в разделе А и четыре в разделе В. Ответ на кждый вопрос оценивается по 20-балльной шкале. Студенты должны ответить на пять вопросов, причем из них два должны быть из раздела А и два из раздела В. Если даны ответы на большее количество вопросов, первые засчитываются, а последующие отбрасываются. Количество баллов при отсутствии ответа на вопрос равно 0.
Напишите программу, которая для каждого студента считывает из файла восемь полученных отметок и определяет общее количество баллов. Вывод должен быть сделан в файл и соответствовать входным данным, показанным ниже. При нарушении правил должны быть выведены соответствующие сообщения.
Пример исходных данных и результат выглядит так:
Решение
Входной файл будет таким:
Один внешний цикл for и два внутренних цикла for. Затем анализ полученных переменных. Выход из чтения файла (и из внешнего for) при обнаружении конца файла.
Код программы:
import java.io.*;
import javagently.*;
class Examens {
Examens() throws IOException {
Stream in = new Stream(System.in);
// default the file to the keyboard
Stream fin = new Stream(System.in);
Stream fout= new Stream ("data.out",Stream.WRITE);
// try open file
try {
fin = Filer.open("data.txt");
}
catch (FileNotFoundException e) {
System.out.println("Five tries up");
System.out.println("Connecting to keyboard by default");
}
int current = 0;
int sumA = 0;
int sumB = 0;
int numA = 0;
int numB = 0;
int numAA = 0;
int numBB = 0;
int total = 0;
fout.println("Sample Input \t\t\t " + "Sample Output\t ");
fout.println("Section A\t " + "Section B \t " + "Result " + "Comment \t");
// try read file
try {
for(;;){
for (int i=0;i<4;i++) {
current = fin.readInt();
if(current != 0 & numA < 3){
sumA = sumA + current;
numA++;
}
if(current != 0){
numAA++;
}
fout.print(current + " ");
}
fout.print("\t");
for (int i=0;i<4;i++) {
current = fin.readInt();
if(current != 0 & numA < 3 & numB != 3){
sumB = sumB + current;
numB++;
}
if(current != 0 & numA == 3 & numB != 2){
sumB = sumB + current;
numB++;
}
if(current != 0){
numBB++;
}
fout.print(current + " ");
}
fout.print("\t");
total = sumA + sumB;
fout.print(" " + total+ "\t");
if(numAA + numBB > 5)
fout.print(" More than 5. " );
if(numAA > 3)
fout.print(" Too many from A. " );
if(numBB > 3)
fout.print(" Too many from B. " );
fout.print("\n ");
sumA = 0;
numA = 0;
numAA = 0;
sumB = 0;
numB = 0;
numBB = 0;
}//end for1
}
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 Examens ();
}
}
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание