Loading...
+ Нов въпрос
dido1092 avatar dido1092 37 Точки

09. On Time for the Exam Nested Conditional Statements - Exercise

в Judge получавам само 81/100, омотах се от проверки и явно пропускам някои варианти, ще съм благодарен  за помощ, също така и за по-съкратен вариант и лесен за разбиране!

моят код: https://pastebin.com/cauHEXYM

judge: https://judge.softuni.bg/Contests/Compete/Index/1162#8

 

9.Навреме за изпит

Студент трябва да отиде на изпит в определен час (например в 9:30 часа). Той идва в изпитната зала в даден час на пристигане (например 9:40). Счита се, че студентът е дошъл навреме, ако е пристигнал в часа на изпита или до половин час преди това. Ако е пристигнал по-рано повече от 30 минути, той е подранил. Ако е дошъл след часа на изпита, той е закъснял. Напишете програма, която прочита време на изпит и време на пристигане и отпечатва дали студентът е дошъл навреме, дали е подранил или е закъснял и с колко часа или минути е подранил или закъснял.

Вход

От конзолата се четат 4 цели числа (по едно на ред), въведени от потребителя:

  • Първият ред съдържа час на изпита – цяло число от 0 до 23.
  • Вторият ред съдържа минута на изпита – цяло число от 0 до 59.
  • Третият ред съдържа час на пристигане – цяло число от 0 до 23.
  • Четвъртият ред съдържа минута на пристигане – цяло число от 0 до 59.

Изход

На първият ред отпечатайте:

  • Late”, ако студентът пристига по-късно от часа на изпита.
  • On time”, ако студентът пристига точно в часа на изпита или до 30 минути по-рано.
  • Early”, ако студентът пристига повече от 30 минути преди часа на изпита.

Ако студентът пристига с поне минута разлика от часа на изпита, отпечатайте на следващия ред:

  • “mm minutes before the start” за идване по-рано с по-малко от час.
  • “hh:mm hours before the start” за подраняване с 1 час или повече. Минутите винаги печатайте с 2 цифри, например “1:05”.
  •  “mm minutes after the start” за закъснение под час.
  • “hh:mm hours after the start” за закъснение от 1 час или повече. Минутите винаги печатайте с 2 цифри, например “1:03”.

Примерен вход и изход

Вход

Изход

 

Вход

Изход

 

Вход

Изход

9

30

9

50

Late

20 minutes after the start

9

00

10

30

Late

1:30 hours after the start

10

00

10

00

On time

9

00

8

30

On time

30 minutes before the start

 

14

00

13

55

On time

5 minutes before the start

11

30

10

55

Early

35 minutes before the start

16

00

15

00

Early

1:00 hours before the start

 

11

30

8

12

Early

3:18 hours before the start

11

30

12

29

Late

59 minutes after the start

Тагове:
0
Programming Basics
doani avatar doani 21 Точки

Здравей, първо обръщаме всичко в минути  - 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _9.On_Time_For_The_Exam
{
    class Program
    {
        static void Main(string[] args)
        {
            int examHour = int.Parse(Console.ReadLine());
            int examMinutes = int.Parse(Console.ReadLine());
            int examMyHour = int.Parse(Console.ReadLine());
            int examMyMinutes = int.Parse(Console.ReadLine());

            double examTimeAllInMinutes = (examHour * 60.0) + examMinutes;

            double examMyTimeAllInMinutes = (examMyHour * 60.0) + examMyMinutes;

            double timeDifference = 0;
            string time = "";

            if (examTimeAllInMinutes == examMyTimeAllInMinutes)
            {
                time = "On time";
                Console.WriteLine(time);
            }

            else if  (examTimeAllInMinutes > examMyTimeAllInMinutes)
            {
                if ((examTimeAllInMinutes - examMyTimeAllInMinutes) <= 30)
                {
                    time = "On time";
                    timeDifference = examTimeAllInMinutes - examMyTimeAllInMinutes;

                    Console.WriteLine(time);
                    Console.WriteLine($"{timeDifference} minutes before the start");
                }
                else if (((examTimeAllInMinutes - examMyTimeAllInMinutes) > 30) && (examTimeAllInMinutes - examMyTimeAllInMinutes < 60))
                {

                    time = "Early";

                     timeDifference = examTimeAllInMinutes - examMyTimeAllInMinutes;

                        Console.WriteLine(time);
                        Console.WriteLine($"{timeDifference} minutes before the start");
                }

                 else if (examTimeAllInMinutes - examMyTimeAllInMinutes >= 60)
                 {
                    time = "Early";
                    timeDifference = examTimeAllInMinutes - examMyTimeAllInMinutes;
                        double differenceHour = Math.Floor(timeDifference / 60);
                        double differenceMinutes = timeDifference % 60;
                    if (differenceMinutes < 10)
                    {
                        Console.WriteLine(time);
                        Console.WriteLine($"{differenceHour}:0{differenceMinutes} hours before the start");
                    }
                    else
                    {
                        Console.WriteLine(time);
                        Console.WriteLine($"{differenceHour}:{differenceMinutes} hours before the start");
                    }
                 }
                
            }

            else if (examMyTimeAllInMinutes > examTimeAllInMinutes)
            {
                time = "Late";

                if (examMyTimeAllInMinutes - examTimeAllInMinutes < 60)
                {
                    timeDifference = examMyTimeAllInMinutes - examTimeAllInMinutes;

                    Console.WriteLine(time);
                    Console.WriteLine($"{timeDifference} minutes after the start");
                }
                else if (examMyTimeAllInMinutes - examTimeAllInMinutes >= 60)
                {
                    timeDifference = examMyTimeAllInMinutes - examTimeAllInMinutes;
                    double differenceHour = Math.Floor(timeDifference / 60);
                    double differenceMinutes = timeDifference % 60;

                    if(differenceMinutes < 10)
                    {
                        Console.WriteLine(time);
                        Console.WriteLine($"{differenceHour}:0{differenceMinutes} hours after the start");
                    }
                    else
                    {
                        Console.WriteLine(time);
                        Console.WriteLine($"{differenceHour}:{differenceMinutes} hours after the start");
                    }
                    
                }
            }
        }
    }
}
 

1
RuNNeR4142 avatar RuNNeR4142 396 Точки

Лесна за проследяване логика с по-ясни проверки:
 

public class E01OnTimeForTheExam {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int hourExam = Integer.parseInt(scanner.nextLine());
        int minExam = Integer.parseInt(scanner.nextLine());
        int hourArv = Integer.parseInt(scanner.nextLine());
        int minArv = Integer.parseInt(scanner.nextLine());
        String time;
        int minAllExam = (hourExam * 60) + minExam;
        int minAllArv = (hourArv * 60) + minArv;

        if (hourExam < hourArv) {
            time = "Late";
        } else if (hourExam == hourArv && minExam < minArv) {
            time = "Late";
        } else if ((minAllExam - minAllArv) <= 30) {
            time = "On time";
        } else {
            time = "Early";
        }
        System.out.println(time);

        if (minAllArv < minAllExam) {
            int minAllBefore = minAllExam - minAllArv;

            if (minAllBefore < 60) {
                System.out.printf("%d minutes before the start", minAllBefore);
            } else {
                if (minAllBefore % 60 < 10) {
                    System.out.printf("%d:0%d hours before the start", minAllBefore / 60, minAllBefore % 60);
                } else {
                    System.out.printf("%d:%d hours before the start", minAllBefore / 60, minAllBefore % 60);
                }
            }
        }
        if (minAllArv > minAllExam) {
            int minAllAfter = minAllArv - minAllExam;

            if (minAllAfter < 60) {
                System.out.printf("%d minutes after the start", minAllAfter);
            } else {
                if (minAllAfter % 60 < 10) {
                    System.out.printf("%d:0%d hours after the start", minAllAfter / 60, minAllAfter % 60);
                } else {
                    System.out.printf("%d:%d hours after the start", minAllAfter / 60, minAllAfter % 60);
                }
            }
        }
    }
}

 

1
dido1092 avatar dido1092 37 Точки

Нали е на java? Защото ми дава "Compile time error!"

1
dido1092 avatar dido1092 37 Точки

Благодаря за решенията!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.