Loading...
Karage avatar Karage 7 Точки

Домашно 3 задача 2

Извинявам се предварително за въпросите за всяка задача от домашното във форума, но съм онлайн кандидат и не виждам друг по-подходящ за мен начин да обсъждам кодът, който пиша. А след първата ми публикация за задача 1 от домашно 3 коментарите и критиката плюс примерите ми допадна. Та ако има желаещи да хвърлят едно око и да драснат един два реда за решението ми на задача 2 от домашно 3.

 

Благодаря им предварително ;)

 

using System;

class GravitationMoon
{
       static void Main()
            {
                    Console.WriteLine("Разбери колко е телесното ти тегло на Луната");
                    Console.WriteLine("Въведи Теглото си :");

                    double WorldWeigth;

                    string weight = Console.ReadLine();

                    double.TryParse(weight, out WorldWeigth);

                    WorldWeigth = WorldWeigth*17.0/100;

                    Console.WriteLine("Теглото на луната ви ще е:" + WorldWeigth);

             }
}

Тагове:
1
Programming Basics
RoYaL avatar RoYaL Trainer 6849 Точки

По принцип е супер. :) Ето малко предложения от мен:

 

 

1. Когато имаш подобен статичен множител/делител/константа в случая делтата между гравитацията на земята и на луната, не го ползвай директно като число в сметките си. Представи си, че по-натам имаш да сметнеш още 8 неща по това изменение (17%), и на всякъде ще трябва да пишеш *17.0/100. Пък и може да е нещо, което е според програмата ти - например си декларирал, че всички потребители получават 10% бонус към нещо си. Но след 5 дни решаваш, че ще са 20% - ще трябва да обходиш целия код и да напишеш 20% вместо 10%. В този случай бих ти предложил да изнесеш в класа константа (private static ако е нужно) const double moonGravityDelta = 0.17; Или в мейн метода си double moonGravityDelta = 0.17; Пък мисля и, че 0,17 като множите/делител е по-четимо от *17.0/100.

 

2. Другото, което е, то е по-скоро мое лично мнение, ама смятам, че текстовете за пред юзъра трябва да са на английски. Почти не съм виждал програма в съвремието, която да е таргетирана само към локалната езикова група. Т.е. програма само на български, програма само на румънски и т.н. Напиши текстовете на английски, а пък можеш чисто за интереса, от сега да се разровиш как би могъл рънтайм да преведеш текст според локейла на юзъра или да му изведеш правилния превод според въведеш от него език. Тук може би ще ти излязат варианти с конфизи, бази данни, етс. Честно да си призная не знам в .NET world-a как е най-правилно.

 

3. Ако не ти е нужно някъде другаде теглото на точно този потребител на луната, можеш сметката да я извършиш направо в принта в конзолата: Console.WriteLine("Your weight on the moon will be: " + weight * moonGravityDelta);

2
svetli0o avatar svetli0o 134 Точки

Единствената ми препоръка е да кръщаваш променливите camelCase (да започват с малка буква). Иначе решението можеш да го сбиеш  и в по-малко редове, за да бъде кода по четим, например:

double weight = double.Parse(Console.ReadLine());

double weightOnMoon = weight * 17.0 / 100;

Console.WriteLine("Your weight on moon is: " + weightOnMoon);

Успех :)

0
AdriyanMihaylov avatar AdriyanMihaylov 25 Точки

Можеш да го направиш от един floating point тип след което направо да го уможиш по 0.17f.

Този string на мен ми се струва излишен.

using System;

class GravitationMoon
{
       static void Main()
       {
                Console.WriteLine("Разбери колко е телесното ти тегло на Луната");
                Console.WriteLine("Въведи Теглото си :");

                float weight = float.Parse(Console.ReadLine());
                float moonWeight = weight * 0.17f;
                Console.WriteLine("Теглото на луната ви ще е {0} кг",moonWeight);

       }

}

1
GoShow avatar GoShow 595 Точки

Най - важното, което първо трябва да ти кажа е да не започваш променлива с главна буква. WorldWeight - може да е име на клас, на метод така наречения Pascal Case, ако го пиша правилно - за променлива Camel Case.Разликата е, че първия започва с главна буква и всяка съдържаща се следваща дума е отново с главна - както в твоя случай, втория започва с малка буква и всяка следваща дума е с главна.В случая worldWeight. Другото, което мога да ти препоръчам е да не отделяш (в случая не е нужно) входа.Какво имам предвид string weight и double worldWeight.

double worldWeight = double.Parse(Console.Readline()); ще свърши същата работа, не че не е вярно в твоя случай, но пестиш код и ако сега имаш 1 променлива за вход, какво ще стане ако имаш 100.По - удачно е. Същото е и при последния ред, за да спестиш от писане:

Console.WriteLine("Теглото на луната ви ще бъде:" + worldWeight * 17 / 100); и махаш предния ред.

Не съм убеден, че последното е по-добрата практика, просто ти го давам за пример. И една последна препоръка, разделяй кода и го прави четлив:

WorldWeigth = WorldWeigth*17.0/100;

WorldWeigth = WorldWeigth * 17.0 / 100; - по - добре

WorldWeigth = WorldWeigth * (17.0 / 100); - още по ясно и четливо.

worldWeigth = worldWeigth * (17 / 100); - с правилното изписване ;)

Дано съм бил полезен. Успех!

 

 

0
GoShow avatar GoShow 595 Точки

а сега видях и грешката:

weigth, всъщност weight :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

Пичове, до колкото съм наясно, PascalCase е вариация на CamelCase-а. Т.е. да кажеш кръщавай си променливите CamelCase не винаги означава, че WorldWeigth трябва да е worldWeigth.

 

http://en.wikipedia.org/wiki/CamelCase

 

CamelCase (camel case) or medial capitals is the practice of writing compound words or phrases such that each word or abbreviation begins with a capital letter. Camel case may start with a capital or, especially in programming languages, with a lowercase letter

 

За CamelCase е еднакво валидно да се пише с главна или малка първа буква.

 

P.S.: Странно ми е, че в C# конвенцията за писане на методи е да започват с главна буква. :)

0
aslv1 avatar aslv1 304 Точки

По принцип в програмните среди са camelCase и PascalCase.

А иначе, без значение как се нарича, по конвенция имената на променливите в C# започват с малка буква (и всички начални на останалите съставни думи са главни), а методите и именованите пространства - с главна буква (и всички начални на останалите съставни думи са главни).

0
Karage avatar Karage 7 Точки

Благодаря ви за мненията.

A за четливостта, много вече ми направиха забележка явно ще трябва да се фокусирам върху това .

Ползвам кирилица защото ми изглежда по прилежно някак си на мен знам че не е правилно . 

За напред ще пробвам да не ползвам.

0
JiVeNcE avatar JiVeNcE 21 Точки

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

В условието е дадено също да провериме килограми като " 74.5кг" , "53.7кг", а в случая когато въведа такова число ми излиза грешка. Програма работи само когато въведа цяло число като първото 86кг.  Та какво би трябвало да променя за да може да ми изчислява и другите килограми. Мерси. 

using System;

class GravitationOnTheMoon
{
static void Main()
{
Console.Write("Write the weight of the man here : ");
double weight = double.Parse(Console.ReadLine());

double moonWeight = (weight * 0.17);

Console.WriteLine("The weight on the moon it will be : {0} kg", moonWeight);
}
}

 

0
Plami avatar Plami 373 Точки

Може би въвеждаш килограмите с точка и затова програмата crash-ва. Пробвай да въведеш 74,5 и може да стане :)

3
v1ppers0nn avatar v1ppers0nn 234 Точки

Ето и моето решение :)

 

using System;

class GravitationontheMoon
{
static void Main()

{
Console.Write("Въведете вашето тегло: ");
double weight = double.Parse(Console.ReadLine());
double moonW = weight * 17;
double mw = moonW / 100;
Console.WriteLine("Вашето тегло на луната е: {0}", mw);
}
}

 


 

Елате в групата ни за домашни в FB: "Software University - Homeworks"

 

0
Dekameron avatar Dekameron 481 Точки

Привет колега!

Тъй като един нормален човек не може да тежи повече от 200кг.  да речем, както и след десетичната запетая може да има най-много 3 числа (ако използваме обикновен кантар), можем спокойно да използваме float като тип на променливата ни laughing

Друго, което мисля, че може да се избегне TryParse, тъй като входа по условие винаги ще е верен. А ако тръгнем да правим проверки, можем да изпишем сумати редове код.

Също така както се вижда входа е с десетична точка, а не запетая за това трябва да добавим следния ред.

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

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

 

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

 

float weight = float.Parse(Console.ReadLine());

float moonWeight = weight * 0.17;

Console.WriteLine("Your weight on the Moon will be {0}.", moonWeight);

 

Дано съм помогнал smile

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