Loading...

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

Elena123456 avatar Elena123456 235 Точки

03. Gaming Store: how can I get the currentGamePrice (ObjectAndClass)

Здравейте, опитвам се да реша една задачата от Моre Exercise: Basic Syntax, Conditional Statements and Loops - C# Fundamentals - май 2020  , като използвам обекти. Мисля, че това би трябвало да е най-удачния вариант за решение, защото задачата прилича много на тези, които съм решавала от упражнението за Обекти и класове. Докато решавах се затрудних да взема цената на текущата играта. Може ли да погледнете кода ми, точно където съм написала-"money for game(currentGamePrice)". Точно на това място трябва да се постави цената на текущата игра. Целта ми е след като човек си е купил вече играта да изчисля колко пари са му останали-leftMoney, но за да ги получа трябва да мога да взема цената на текущата игра.

Ще бъда много, много благодарна ако някой ми помогне и вече ще имам истински Gameing Store. :)

 

https://softuni.bg/trainings/resources/officedocument/49564/basic-syntax-conditional-statements-and-loops-more-exercise-csharp-fundamentals-may-2020/2830

https://judge.softuni.bg/Contests/Practice/Index/1453#2

 

using System;

using System.Collections.Generic;
using System.Linq;

namespace GamingStore
{
    class MainClass
    {
        public static void Main(string[] args)
        {

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

            List<Game> ListGames = new List<Game>();

            var firstGame = new Game("OutFall 4", 39.99);
            ListGames.Add(firstGame);

            var secondGame = new Game("CS: OG", 15.99);
            ListGames.Add(secondGame);

            var thirdGame = new Game("Zplinter Zell", 19.99);
            ListGames.Add(thirdGame);

            var fourthGame = new Game("Honored 2", 59.99);
            ListGames.Add(fourthGame);

            var fifthGame = new Game("RoverWatch", 29.99);
            ListGames.Add(fifthGame);

            var sixthGame = new Game("RoverWatch Origins Edition", 39.99);
            ListGames.Add(sixthGame);

            string game = Console.ReadLine();
            int leftBalanceMoney = 0;
            while(game!="Game Time")
            {
                var newGame = ListGames.FirstOrDefault(g => g.Name == game);
                if (newGame == null)
                {
                    Console.WriteLine("Not Found");
                }


                else if (newGame != null)
                {
                    if (ListGames.Any(g => g.Name == game && g.Price <= currentBalanceMoney && leftBalanceMoney == 0))
                    {
                        Console.WriteLine($"Bought {game}");
                        leftBalanceMoney = currentBalanceMoney -//money for game(currentGamePrice)
                     }

                    else if (ListGames.Any(g => g.Name == game && g.Price <= leftBalanceMoney)
                    {
                        Console.WriteLine($"Bought {game}");
                        leftBalanceMoney = leftBalanceMoney - //money for game(currentGamePrice)
                    }

                    else if (ListGames.Any(g => g.Name == game && g.Price > currentBalanceMoney && leftBalanceMoney!= 0)
                        {
                        Console.WriteLine("To Expensive");
                        }


                    else if (ListGames.Any(g => g.Name == game && g.Price > leftBalanceMoney && leftBalanceMoney != 0)
                    {
                        Console.WriteLine("To Expensive");
                    }

                }

                if (leftBalanceMoney == 0)
                {
                    Console.WriteLine("Out of money!");
                    break;
                }

                game = Console.ReadLine();
            }

            Console.WriteLine($"Total spent: ${currentBalanceMoney-leftBalanceMoney:f2}. Remaining: ${leftBalanceMoney:f2}");
        }

        public class Game
        {
            public string Name { get; set; }
            public double Price { get; set; }

            public Game(string name, double price)
            {
                Name = name;
                Price = price;
            }
        }
    }
}
 

0
Fundamentals Module 01/09/2020 01:03:11
Axiomatik avatar Axiomatik 2422 Точки
Best Answer

The main-issue was in your GameTime-loop, where you just needed two if-validations : the game can be bough or it is too expensive. Also, when printing out “Bought : {game}”, you need to use game.Name, to print out the game's title.

Line 14-22 : when you have known objects at the start, you can initialize your collection in a more compact way.

Best,

New code(100%):

using System;
using System.Linq;
using System.Collections.Generic;

namespace GamingStore
{
    class MainClass
    {
        public static void Main(string[] args)
        {

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

            List<Game> ListGames = new List<Game>
            {
                new Game("OutFall 4", 39.99),
                new Game("CS: OG", 15.99),
                new Game("Zplinter Zell", 19.99),
                new Game("Honored 2", 59.99),
                new Game("RoverWatch", 29.99),
                new Game("RoverWatch Origins Edition", 39.99),
            };

            //var firstGame = new Game("OutFall 4", 39.99);
            //ListGames.Add(firstGame);

            //var secondGame = new Game("CS: OG", 15.99);
            //ListGames.Add(secondGame);

            //var thirdGame = new Game("Zplinter Zell", 19.99);
            //ListGames.Add(thirdGame);

            //var fourthGame = new Game("Honored 2", 59.99);
            //ListGames.Add(fourthGame);

            //var fifthGame = new Game("RoverWatch", 29.99);
            //ListGames.Add(fifthGame);

            //var sixthGame = new Game("RoverWatch Origins Edition", 39.99);
            //ListGames.Add(sixthGame);

            string game = Console.ReadLine();
            double moneySpent = 0;
            bool noMoreMoney = false;

            while (game != "Game Time")
            {
                var newGame = ListGames.FirstOrDefault(g => g.Name == game);

                if (newGame == null)
                {
                    Console.WriteLine("Not Found");
                    game = Console.ReadLine();
                    continue;
                }

                if (newGame.Price <= currentBalanceMoney)
                {
                    Console.WriteLine($"Bought {newGame.Name}");
                    moneySpent += newGame.Price;
                    currentBalanceMoney -= newGame.Price;
                }
                else if (newGame.Price > currentBalanceMoney)
                {
                    Console.WriteLine("Too Expensive");
                    game = Console.ReadLine();
                    continue;
                }

                if (currentBalanceMoney == 0)
                {
                    Console.WriteLine("Out of money!");
                    noMoreMoney = true;
                    break;
                }

                game = Console.ReadLine();
            }

            if (!noMoreMoney)
            {
                Console.WriteLine($"Total spent: ${moneySpent:f2}. Remaining: ${currentBalanceMoney:f2}");
            }
        }

        public class Game
        {
            public Game(string name, double price)
            {
                this.Name = name;
                this.Price = price;
            }

            public string Name { get; set; }

            public double Price { get; set; }
        }
    }
}

1
Elena123456 avatar Elena123456 235 Точки

Hi Axiomatik,

I don't have enough words to express my gratitude towards you for helping me out!

Best regards!

Elena

1
Axiomatik avatar Axiomatik 2422 Точки

No problem, glad to be helping out.

Keep practicing and everything will get easier during the next weeks.

Try working with C# Fundamentals exams as soon as you finished the course material.

 

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