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

Глава 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 ();
}
}


Результат :

Подсказка


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

Hosted by uCoz