BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> как да изчислим време въведено от потребителя?
jordanElj
Публикувано на: 25-09-2022, 11:47
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Някой да знае как може да се изчисли времето въведено от конзолата?!



Задача: Трябва да създадете програма, която изчислява колко пари генерират вашите слънчеви клетки на ден въз основа на броя часове слънчева светлина.

Започнете задачата, като изградите блок-схема и програмна логика на хартия. След това опишете вашата структура в текстова форма (псевдокод) в заглавката на коментара на програмата, така че външен човек да може да разбере какво прави програмата и как работи вашата логика/алгоритъм.

Инсталирали сте слънчеви клетки на покрива си и искате да изчислите колко печелите в слънчев летен ден.
Закупили сте 26 слънчеви панела, всеки с размери 1,7x1 m и може да произведе максимум 290 W.

Предположения:
Вие сте монтирали слънчевите си панели, обърнати директно на юг и имате идеален ъгъл на покрива (35-45 градуса).
Слънчевата радиация в Sofia в слънчев летен ден (юни/юли) е средно 166 Wh/m2/час.
Ефективността на слънчевата клетка (Връзки към външен сайт.) се приема за 20% (от слънчевата радиация).
Приема се, че цената на електроенергията е 0,9 LV/kWh (включително данъчна отстъпка от 60 st).

Производство (Wh) = Слънчева радиация (Wh/m2/час) x ефективност x повърхност (m2) x слънчеви часове

Потребителят въвежда кога слънцето изгрява и колко залязва. Използвайте скенер за въвеждане (не диалогови прозорци). Часът се въвежда във формат чч:мм.

Програмата трябва първо да изчисли броя на слънчевите часове, след това какво производство се извършва и накрая каква печалба дава продажбата на цялата продукция.

Представете резултатите до два знака след десетичната запетая, използвайте printf за форматиране на изхода.

В програмата приемаме, че всички въведени часове се отнасят за един и същи ден. Трябва да проверите въведените стойности, така че "датата" да е през юни/юли (месец 6 или 7) и че времето на залез е по-късно от изгрева. За всички други стойности програмата трябва да върне едно



Разделител
Трябва да използвате useDelimiter, за да посочите разделителя при зареждане съгл. изпълнението на програмата по-горе
PMEmail Poster
Top
jordanElj
Публикувано на: 25-09-2022, 11:52
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Става въпрос за JAVA!
PMEmail Poster
Top
thrawn
Публикувано на: 25-09-2022, 11:53
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Какво питаш в действителност?
Въвеждаш в колко изгрява слънцето и в колко залязва. Разликата между дветв стойности е врвмето което ти трябва.

В условието дори ти е дадено да ползвал скенер за прихващане на потребителския вход.

Това мнение е било редактирано от thrawn на 25-09-2022, 11:58
PMEmail Poster
Top
jordanElj
Публикувано на: 25-09-2022, 13:05
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Проблема е, че не знам как да преобразувам данните въведени от конзолата, и в същото време да използвам ---> useDelimiter(":|\\s+"); при вход от потребител



Scanner input = new Scanner(System.in);

System.out.println("Enter sunrise in format hh:mm ---> ");



input.useDelimiter(":|\\s+");

int hoursM = input.nextInt();
int minutesM = input.nextInt();
input.nextLine();


int timeM = hoursM + minutesM;


System.out.println("Enter sunset in format hh:mm ---> ");
int hoursE = input.nextInt();
int minutesE = input.nextInt();
input.nextLine();


int timeE = hoursM + minutesM;
PMEmail Poster
Top
thrawn
Публикувано на: 25-09-2022, 13:22
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Какво смяташ, че ще получиш като събереш часове с минути?

Умножи часовете по 60 и тогава добави минутите. След като намериш разликата в минути, я делиш на 60 за да получиш времето в часове (формулите ти го налагат). Задачата обаче изисква проверки за валиден час и минути и за това дали залезът е след изгрева.
Също така се споменава и за дата, та най-вероятно се иска да въведеш пълни дата и час.

Като цяло, задачата има по-лесна имплементация използваща java.time но в края на краищата това е задача с ясно посочени изисквания към решението.
PMEmail Poster
Top
jordanElj
Публикувано на: 25-09-2022, 13:26
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Имам на предвид как часът въведен от конзолата например --> 12:05...ще стане на 12.05...така, че да бъде във формат в които става за изчеление
PMEmail Poster
Top
thrawn
Публикувано на: 25-09-2022, 13:30
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Още в началните класове се учи за мерни еденици. 12:05 няма нищо общо с 12.05 (десерична дроб). Пробвай да осмислиш какво съм ти написал по-горе.
PMEmail Poster
Top
jordanElj
Публикувано на: 25-09-2022, 14:08
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22




получи се нещо...tanks


double timeE = hoursE - hoursM + (( minutesE /60.0) - (minutesM / 60.0))


Enter sunrise in format hh:mm --->
01:46
Enter sunset in format hh:mm --->
23:28
21.7
PMEmail Poster
Top
jordanElj
  Публикувано на: 26-09-2022, 12:27
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 25.09.22



Това беше първата ми програма javascript:emoticon(':shock:')

Scanner input = new Scanner(System.in);



System.out.println("Input Month and Date in format [MM-DD] and then press Enter ---> ");

input.useDelimiter("-|\\s+");

double month = input.nextInt();
double date = input.nextInt();
input.nextLine();

if (month == 06 || month == 07)
{

System.out.println("The Month is OK!\nInput sunrise time in format [HH:MM] and then press Enter ---> ");


}
else
{
System.out.println("Invalid Month!You are supposed to enter June(06) or July(07), try again. ");

}


input.useDelimiter(":|\\s+");


int hoursM = input.nextInt();
int minutesM = input.nextInt();
input.nextLine();

System.out.println("Input sunset time in format [HH:MM] and then press Enter ---> ");
int hoursE = input.nextInt();
int minutesE = input.nextInt();
input.nextLine();



double solPanDepth = 1.7f;
double solPanQuantity = 26;

double solPanArea = solPanDepth * solPanQuantity;
double solarRadKW = 166;


double electrPrice = 0.9;

double timeE = hoursE - hoursM + (( minutesE /60.0) - (minutesM / 60.0));

double ProductionWh = solPanArea * solarRadKW * 0.20 * electrPrice * timeE / 1000;

System.out.print( "The average number of hours in the day is: " + String.format("%.2f" , timeE)
+ " hours.\n" + "The value is: " + String.format("%.2f" , ProductionWh) + " lv.");

input.close();



Input Month and Date in format [MM-DD] and then press Enter --->
07-04
The Month is OK!
Input sunrise time in format [HH:MM] and then press Enter --->
03:45
Input sunset time in format [HH:MM] and then press Enter --->
21:49
The average number of hours in the day is: 18,07 hours.
The value is: 23,86 lv.
PMEmail Poster
Top
thrawn
Публикувано на: 26-09-2022, 12:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3388
Регистриран на: 17.01.17



Използвай code тагът когато постваш код. Така е нечетим и практически никой няма да го погледне.

Иначе, какво ще стане ако приложението влезе в else блока за проверка на месец? Освен това ти липсва проверка за часовете (залез след изгеев и валиден диапазон за час и за минути).
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0