Loading...

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

Maria999 avatar Maria999 1 Точки

Проблем със задача 5 от Lab - while цикъл

Имам затруднение на тази задача. 

Габи иска да започне здравословен начин на живот и си е поставила за цел да върви 10 000 стъпки всеки ден. Някои дни обаче е много уморена от работа и ще иска да се прибере преди да постигне целта си. Напишете програма, която чете от конзолата по колко стъпки изминава тя всеки път като излиза през деня и когато постигне целта си да се изписва "Goal reached! Good job!

Ако иска да се прибере преди това, тя ще въведе командата "Going home" и ще въведе стъпките, които е извървяла докато се прибира. След което, ако не е успяла да постигне целта си, на конзолата трябва да се изпише: "{разликата между стъпките} more steps to reach goal." 

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

namespace Zad5
{
    class Program
    {
        static void Main(string[] args)
        {
            int steps = 10000;
            int sumOfSteps = 0;

            while (true)
            {
                string command = Console.ReadLine();

                if (command == "Going home")
                {
                    int lastSteps = int.Parse(Console.ReadLine());
                    sumOfSteps += lastSteps;
                    if (sumOfSteps < steps)
                    {
                        int diff = steps - sumOfSteps;
                        Console.WriteLine($"{diff} more steps to reach goal.");
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Goal reached! Good job!");
                        break;
                    }
                }
                if (sumOfSteps >= steps)
                {
                    Console.WriteLine("Goal reached! Good job!");
                    break;
                }
            }
        }
    }
}

 

Тагове:
0
Programming Basics with C#
sisis003 avatar sisis003 64 Точки

Здравей, ето така трябва да изглежда твоето решение, за да получиш 100/100:

 

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

namespace Zad5
{
    class Program
    {
        static void Main(string[] args)
        {
            int steps = 10000;
            int sumOfSteps = 0;
            int lastSteps = 0;
            string lastStepsOrGoingHome = Console.ReadLine();

            while (true)
            {               
                if (lastStepsOrGoingHome == "Going home")
                {
                    lastSteps = int.Parse(Console.ReadLine());
                    sumOfSteps += lastSteps;

                    if (sumOfSteps < steps)
                    {
                        int diff = steps - sumOfSteps;
                        Console.WriteLine($"{diff} more steps to reach goal.");
                        break;
                    }

                    else
                    {
                        Console.WriteLine("Goal reached! Good job!");
                        break;
                    }
                }

                lastSteps = int.Parse(lastStepsOrGoingHome);
                sumOfSteps += lastSteps;

                if (sumOfSteps >= steps)
                {
                    Console.WriteLine("Goal reached! Good job!");
                    break;
                }

                lastStepsOrGoingHome = Console.ReadLine();
            }
        }
    }
}

0
sisis003 avatar sisis003 64 Точки

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

След това когато цикълкът се завърти наново, я преобразуваш в число, но след като е направена проверка за това дали входът е "Going home".

Отделно забелязах, че когато програмата чете този ред:
string command = Console.ReadLine();, в случаите, в които не се въведе "Going home", ти се губи един вход за броя на стъпките и от там също идва грешен резултат.

0
06/11/2018 23:53:54
sisis003 avatar sisis003 64 Точки

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

0
Petya_koleva avatar Petya_koleva 104 Точки

Здравей! Може да погледнеш и друг вариант на решението на тази задача, може да ти е от полза.

https://pastebin.com/dHX4GYc1

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