Привет,
Моля, изпратете си кода, за да го разгледам и видя къде е възможно да има пропуск!
Ще споделя решение, след като е достъпен бутон Practice.
Иначе задачата я решавам с вложени цикли :
1. създаваш 3 промнливи: брояч на спечелени дни; брояч загубени дни; тотална печалба;
2. въртиш for цикъл за дните на състезанието;
2.1. създаваш в цикъла, 3 променливи: за дневните спечелени игри; за дневните загубени игри и дневна печалба /за да се зануляват всеки ден/;
2.2. въртиш вътрешен while цикъл до входен string "Finish"
- при "win / lose" увеличаваш спечелените игри и добавяш в дневната печалба 20лв./ при загуба само увеличаваш загубените игри.
- при команда Finish, излизаш от второстепения цикъл /while/ т.е. приключва текущия ден;
2.3 след него правиш равносметка за деня,
- ако е с повече победи, увеличаваш дневната печалба с 10% и увеличваш броя на спечелените дни;
- ако не е, увелеичваш броя на загубените дни;
2.4. след това добавяш дневната печалба към тоталната печалба.... и въртиш за следващия ден;
3. След всички дни /като прикючи for цикъла/ сравнваш броя на спечелените и броя на загубените дни... на там мисля е ясно, че стана малко дълго :).
Успех!
----
Заповядай кода, който стъпва на обясненията по-горе и дава 100/100:
Успех!
Заповядай: https://pastebin.com/pkd3YQJ9
Предполагам, че е ок - нулевите минават
заповядай и от мен:)
import java.util.Scanner;
public class TournamentofChristmas {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int daysOfTournament = Integer.parseInt(scanner.nextLine());
double charity = 0;
double dayCharity=0;
int win = 0;
int loose = 0;
int dayWin = 0;
int dayLoose = 0;
for (int i = 1; i <= daysOfTournament; i++) {
String sport = scanner.nextLine();
while (!sport.equals("Finish")) {
String result = scanner.nextLine();
switch (result) {
case "win":
win++;
dayCharity += 20;
break;
case "lose":
loose++;
break;
}
sport = scanner.nextLine();
}
if (win > loose) {
dayCharity *= 1.10;
dayWin++;
} else {
dayLoose++;
}
win = 0;
loose = 0;
charity+=dayCharity;
dayCharity=0;
}
if (dayWin > dayLoose) {
charity *= 1.20;
}
if (dayWin > dayLoose) {
System.out.printf("You won the tournament! Total raised money: %.2f", charity);
} else {
System.out.printf("You lost the tournament! Total raised money: %.2f", charity);
}
}
}
Едно решение и от мен, без for цикъл:
https://pastebin.com/g3isFp5e
C#
https://pastebin.com/SfVarPVn
Здравейте, Ще се радвам ако някой провери защо този код на Java ми дава 90/100 на задачата в джъдж. Не мога да видя при кой вход ми гърми - дава ми само нулевите. Благодаря предварително. package Exam; import java.util.Scanner; public class TournamentOfChristmas { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int days = Integer.parseInt(scanner.nextLine()); int totalWins = 0; int totalLost = 0; double totalSum = 0; for (int i = 0; i < days; i++) { String typeOfSport = scanner.nextLine(); int winCount = 0; int loseCount = 0; double daylySum = 0; double plus = 0; while (!typeOfSport.equals("Finish")) { String winOrLost = scanner.nextLine(); switch (winOrLost) { case "win": daylySum += 20; winCount++; totalWins++; break; case "lose": loseCount++; totalLost++; break; } if (winCount > loseCount) { plus = (daylySum * 0.1); } typeOfSport = scanner.nextLine(); } totalSum += (daylySum + plus); } if (totalWins > totalLost) { totalSum = totalSum + (totalSum * 0.20); System.out.printf("You won the tournament! Total raised money: %.2f", totalSum); } else { System.out.printf("You lost the tournament! Total raised money: %.2f", totalSum); } } }