Глава 4
Задача 4.17 " Счет партий в гольф."
Площадка для гольфа города Саванна имеет девять лунок. Предположим, чтобы загнать мяч в лунку, игроку требуется от одного до пяти ударов. Количество очков, набранных игроком в гольф, равно количеству ударов, выполненных им у каждой лунки. В зависимости от результата предыдущей партии для получения фактического результата у игроков из счета вычитается определенное количество очков. Игрокам тоже интересно знать, кто из них набрал необходимую сумму очков. Победителем считается тот, кто набрал наименьшее количество очков.
Если бы подсчет очков при игре в гольф был компьютеризирован, то пример входных и выходных данных имел бы следующий вид:
Напишите программу, которая :
- Считывает из файла инф о количестве ударов, выполненных у каждой лунки для нескольких игроков, учитывая исключительную ситуацию, когда данные заканчиваются.
- Вычисляет общий счет каждого, а так же счет после вычитания очков и сравнивает полученное количество очков с номинальным.
- Определяет победителя и его счет.
- Выводит результаты вместе с входными данными.
Решение
Исходящий файл имеет следующий вид:
Далее двойной вложенный цикл для считывания данных из файла. Присваивание переменным значений, необходимые подсчеты и вывод в файл.
Код программы:
import java.io.*;
import javagently.*;
class GolfPlayer {
GolfPlayer() 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 num = 0;
int handicap = 0;
int shots = 0;
int total = 0;
int result = 0;
int maxResult = 0;
int temp = 0;
int current = 0;
int vol = 0;
fout.println("Player\t " + "Handicap\t " + "Shots per hole \t" + "Total\t" + "Result\t" + "Under par\t");
// try read file
try {
for(int j=1;j<4;j++){
num = fin.readInt();
handicap = fin.readInt();
fout.print(" " + num + "\t" + " " + handicap + "\t\t");
for (int i=0;i<9;i++) {
current = fin.readInt();
fout.print(current + " ");
total = total+current;
}
current = 0;
result = total - handicap;
fout.print("\t " + total + "\t" + " " + result + "\t");
fout.println(" ");
if(j==1){
maxResult = result;
vol = (j+1);
}
if(maxResult > result){
maxResult = result;
vol = (j+1);
}
total = 0;
result = 0;
}//end for1
fout.println(" The winner is player " + vol + " with a handicapped result of : " + maxResult );
}
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 GolfPlayer ();
}
}
Результат :
Назад |
Начало урока |
Вверх |
Вперед
Содержание