Софтуерно Инженерство
Loading...
+ Нов въпрос
V.Ivanova111 avatar V.Ivanova111 1 Точки

07.Choreography - от Условни конструкции -Упражнение - какво не е наред? - защо не излизат вярно процентите?

namespace _07._Choreography
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int brDancers = int.Parse(Console.ReadLine());
            int brDni = int.Parse(Console.ReadLine());
            int brStypkiForOne = n / brDancers;
            double obshtBrStnaDen = n / brDni;
            double obshtProcentStNaDen = (obshtBrStnaDen / n) *100;
            double procentStZaDancer = obshtProcentStNaDen /brDancers;
            if (obshtProcentStNaDen <= 13)
            {
                Console.WriteLine("Yes, they will succeed in that goal! {0:f2}%.", procentStZaDancer);
            }
            else
            {
                Console.WriteLine("Not, they will not succeed in that goal! Required {0:f2}% steps to be learned per day.", procentStZaDancer);
            }
        }
    }
}

Тагове:
chrisi2712 avatar chrisi2712 246 Точки
Best Answer

Здравейте, разгледах вашето решение и го поправих. Сега е 100/100. Когато изчислявате броят стъпки на ден, трябва да умножите стъпките първо по 1.0, за да ги превърнете в десетични и да получите резулатат  double:

   double obshtBrStnaDen = 1.0*n / brDni;
 double obshtProcentStNaDen = Math.Ceiling((obshtBrStnaDen / n) *100);

 

След това когато намирате процента стъпки на ден използвайте Math.Ceiling.

using System;

namespace Choreography
{
    class Program
    {
        static void Main(string[] args)
        {
            
            int n = int.Parse(Console.ReadLine());
            int brDancers = int.Parse(Console.ReadLine());
            int brDni = int.Parse(Console.ReadLine());
            int brStypkiForOne = n / brDancers;
            double obshtBrStnaDen = 1.0*n / brDni;
            double obshtProcentStNaDen = Math.Ceiling((obshtBrStnaDen / n) *100);
            double procentStZaDancer = obshtProcentStNaDen /brDancers;
            if (obshtProcentStNaDen <= 13)
            {
                Console.WriteLine("Yes, they will succeed in that goal! {0:f2}%.", procentStZaDancer);
            }
            else
            {
                Console.WriteLine("No, they will not succeed in that goal! Required {0:f2}% steps to be learned per day.", procentStZaDancer);
            }
        }
    }
}

 

0
Filkolev avatar Filkolev 4504 Точки

Имаш една грешка на изхода - "Not," -> "No,"

Променливата brStypkiForOne не я ползваш никъде.

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

Имената на променливите са доста лоши. Ако английският ти е сериозен проблем по-добре ги пиши на български (т.е. кирилица) или ползвай google translate - може да не е идеален превод, но ще е достатъчно разбираем най-вероятно. И избягвай съкращения, освен ако не са широко приети; такива са примерно index -> idx, minimum -> min и други. Нищо не се печели със съкращаванията.

0
JoroTanch avatar JoroTanch 0 Точки

Имам проблем със закръглянето в тази задача. Като сложа Math.Ceiling за StepsPerDancerInPercent, съответно 0,48% (от изхода) не го закръгля до 0,50%, а до най-голямото цяло число 1,00% и естествено judje не го приема. Това е кодът, може ли някой да ме насочи как да го  закръгля до 0,50%. https://pastebin.com/raw/HPm5jay9

Благодаря!

0
SofiaHara avatar SofiaHara 1 Точки

След доста мъки, аз си оправих кода. Мисля, че ако си оправиш тази част:

double totalStepsPerDay = (numberSteps / daysStudying) / numberSteps;  
double totalStepsPerDayInPercent = totalStepsPerDay * 100;  
double stepsPerDancer = (totalStepsPerDay / numberDancers); 
double stepsPerDancerInPercent = (stepsPerDancer * 100); 

ето така:

double totalStepsPerDay = (numberSteps / daysStudying) / numberSteps;  
double totalStepsPerDayInPercent = Math.Ceiling(totalStepsPerDay * 100);  //закръгляме до най-близкото цяло число нагоре процентът стъпки на ден, а не на човек.

double stepsPerDancerInPercent = (totalStepsPerDayInPercent / numberDancers);

би трябвало да ти се получи.

 

0
18/02/2019 10:36:51
Tspetrova avatar Tspetrova 65 Точки

Здравей, това е решението ми на Java, малко по-кратко е от твоето, дано помогне да се ориентираш :-) Успех

https://pastebin.com/ASc2RE6i

0
Lachezar.Ivanov avatar Lachezar.Ivanov 13 Точки

using System;
  И аз се поизмъчих..... Ето моето решение:

                  
public class Program
{
    public static void Main()
    {
        int steps = int.Parse(Console.ReadLine());
        int dancers = int.Parse(Console.ReadLine());
        int days = int.Parse(Console.ReadLine());        
        double totalPercentStepsDay = Math.Ceiling((double)(steps/days)/steps*100);
        double stepsDancer = totalPercentStepsDay / dancers;        
        if (totalPercentStepsDay < 13)
        {
            Console.WriteLine("Yes, they will succeed in that goal! {0:F2}%.", stepsDancer);
        }    
        else
        {
            Console.WriteLine("No, they will not succeed in that goal! Required {0:F2}% steps to be learned per day.", stepsDancer);
        }            
    }
}

0