Loading...
Iv_Konov avatar Iv_Konov 383 Точки
Best Answer

Здравей,

 

За съжаление и моята препоръка e да преработиш програмата - според мен, ще бъде в твой интерес...

 

Предлагам ти решение на C# с команди от PB курса:

https://pastebin.com/HzshBFBs

 

Бих ти обърнал внимание за следните "хитрини":

 

==============================================

            int examH = int.Parse(Console.ReadLine());
            int examMin = int.Parse(Console.ReadLine());
            int arrivalH = int.Parse(Console.ReadLine());
            int arrivalMin = int.Parse(Console.ReadLine());

            int examHtransf = examH * 60; // обърни часовете и минутите САМО в минути, спестява труд и код
            int examMinTransf = examHtransf + examMin;

            int arrivalHtransf = arrivalH * 60; // обърни часовете и минутите САМО в минути, спестява труд и код
            int arrivalMinTransf = arrivalHtransf + arrivalMin;

            int difference = Math.Abs(arrivalMinTransf - examMinTransf);
            int diffH = difference / 60;
            int diffMin = difference % 60;

===============================================

 

Този вариант за формат на минутите елиминира допълнително проверки като тези:

===========================

else if (minutesDifference < 10)

                    Console.WriteLine($"{hoursDifference - 1}:0{minutesDifference} hours after the start");

===========================

 

===========================

 else
                {
                    Console.WriteLine("Early");
                    Console.WriteLine($"{diffH}:{diffMin:00} hours before the start");
                }

============================

 

Поздрави,

Иван

0
Tspetrova avatar Tspetrova 125 Точки

Здравей, ще качиш ли и условието на задачата :-)

0
ptanchevaaa98 avatar ptanchevaaa98 2 Точки

Ето го условието :)


Студент трябва да отиде на изпит в определен час (например в 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”.

0
Tspetrova avatar Tspetrova 125 Точки

Според мен, малко си се объркала със сметките на часове -минути, най-добре е да ги изчислиш в началото и да работиш с цялото време, така ще е много по-малко код

Това е решение на Java, но ще успееш да се ориентираш :-)

https://pastebin.com/yWkrwtVF

0
VasilKotsev avatar VasilKotsev 830 Точки

Такива проблеми свързани с време/дати се решават със TimeSpan/DateTime според case-а. И рано или късно ще се сблъскате с тях. Понеже това е задача от бейсик(?) най-вероятно искат да упражните условните конструкции. Преди ги показваха тези типове данни за работа с времена/дати, но не пречи сама да се поразровиш как се ползват, защото никой реално няма да седне и да изпише толкова много проверки за основни операции с време. Другото, което мога да те посъветвам е да се опиташ да намалиш бройката на проверките до колкото е възможно (опитай се дали можеш да премахнеш ненужни такива).

Ето едно примерно решение как би трябвало да се реши задачата:

namespace SandBox
{
    using System;
    using System.Globalization;

    public class StartUp
    {
        public static void Main()
        {

            const string FORMAT = @"h\:mm";

            string examBeginningTimeAsString = $"{Console.ReadLine()}:{Console.ReadLine()}";
            string studentArrivalTimeAsString = $"{Console.ReadLine()}:{Console.ReadLine()}";

            TimeSpan examBeginningTime = TimeSpan.ParseExact(examBeginningTimeAsString, FORMAT, CultureInfo.InvariantCulture);
            TimeSpan studentArrivalTime = TimeSpan.ParseExact(studentArrivalTimeAsString, FORMAT, CultureInfo.InvariantCulture);

            if (studentArrivalTime > examBeginningTime)
            {
                Console.WriteLine("Late");
                var diff = studentArrivalTime - examBeginningTime;

                if (diff < TimeSpan.FromMinutes(60))
                    Console.WriteLine($"{diff.Minutes} minutes after the start");

                else
                    Console.WriteLine($"{diff.ToString(FORMAT)} hours after the start");
            }

            else
            {
                var diff = examBeginningTime - studentArrivalTime;

                string output = diff <= TimeSpan.FromMinutes(30)? "On time" : "Early";

                Console.WriteLine(output);

                if (diff < TimeSpan.FromMinutes(60))
                    Console.WriteLine($"{diff.Minutes} minutes before the start");

                else
                    Console.WriteLine($"{diff.ToString(FORMAT)} hours before the start");
            }
        }
    }
}

 

1
04/04/2019 10:56:04
ptanchevaaa98 avatar ptanchevaaa98 2 Точки

Благодаря на всички за бързите отговори, ще я преработя из основи. smiley

1
DaVinci avatar DaVinci 0 Точки

Погледна ли DETAILS ?

0
radostina_92 avatar radostina_92 0 Точки

Погледнах..на input 10/00/10/00 не ми изкарваше output. Мерси, оправих кода. https://pastebin.com/wcj25KSt

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