Loading...
BogdanGrozdanov avatar BogdanGrozdanov 0 Точки

7. Raw Data/Exercise: Defining Classes

Здравейте,трябва ми малко помощ .Трябва да създам клас Tire масив от 4 tires,как да го направя(и напълня) въпросният масив в класа за да мога да го използвам. 7.RawData/class Tire - Pastebin

1. Raw Data

Write a program that tracks cars and their cargo. Define a class Car that holds an information about model, engine, cargo and a collection of exactly 4 tires. The engine, cargo and tire should be separate classes. Create a constructor that receives all of the information about the Car and creates and initializes its inner components (engine, cargo and tires).

On the first line of input, you will receive a number N - the number of cars you have. On each of the next N lines, you will receive an information about each car in the format:

"{model} {engineSpeed} {enginePower} {cargoWeight} {cargoType} {tire1Pressure} {tire1Age} {tire2Pressure} {tire2Age} {tire3Pressure} {tire3Age} {tire4Pressure} {tire4Age}"

The speed, power, weight and tire age are integers and tire pressure is a double.

After the N lines, you will receive a single line with one of the following commands:

  • "fragile" - print all cars whose cargo is "fragile" with a tire, whose pressure is  < 1
  • "flamable" - print all of the cars, whose cargo is "flamable" and have engine power > 250

The cars should be printed in order of appearing in the input.

Examples

Input

Output

2

ChevroletAstro 200 180 1000 fragile 1.3 1 1.5 2 1.4 2 1.7 4

Citroen2CV 190 165 1200 fragile 0.9 3 0.85 2 0.95 2 1.1 1

fragile

Citroen2CV

4

ChevroletExpress 215 255 1200 flamable 2.5 1 2.4 2 2.7 1 2.8 1

ChevroletAstro 210 230 1000 flamable 2 1 1.9 2 1.7 3 2.1 1

DaciaDokker 230 275 1400 flamable 2.2 1 2.3 1 2.4 1 2 1

Citroen2CV 190 165 1200 fragile 0.8 3 0.85 2 0.7 5 0.95 2

flamable

ChevroletExpress

DaciaDokker

 

Тагове:
0
Module: C# Advanced
kkaraivanov avatar kkaraivanov 486 Точки
Best Answer

Здравей. Подходът ти е грешен и от това може би ти става сложно. Пробвай следния код и извинявай за форматирането, но с VsCode трудно форматирам

public class StartUp
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            var cars = new List<Car>();

            for (int i = 0; i < n; i++)
            {
                var input = Console.ReadLine()
                    .Split(' ', 6)
                    .ToArray();
                var engine = new Engine();
                var cargo = new Cargo();
                var tires = new List<Tire>();
                string model = input[0];
                engine.Speed = int.Parse(input[1]);
                engine.Power = int.Parse(input[2]);
                cargo.Weight = int.Parse(input[3]);
                cargo.Type = input[4];
                var splitTires = input[5].Split(' ').ToArray();
                
                for (int j = 0; j < splitTires.Length; j += 2)
                {
                    var tire = new Tire();
                    tire.Pressure = double.Parse(splitTires[j]);
                    tire.Age = int.Parse(splitTires[j + 1]);
                    tires.Add(tire);
                }
                var car = new Car(model, engine, cargo, tires.ToArray());
                cars.Add(car);
            }

            string command = Console.ReadLine();

            switch (command)
            {
                case "fragile":
                    DisplayFragile(cars);
                    break;
                case "flamable":
                    DisplayFlamable(cars);
                    break;
            }
        }

        static void DisplayFragile(List<Car> cars)
        {
            foreach (var car in cars)
            {
                string model = string.Empty;
                foreach (var tire in car.Tires)
                {

                    if (tire.Pressure < 1 && car.Model != model)
                    {
                        model = car.Model;
                        Console.WriteLine($"{car.Model}");
                    }
                }

            }
        }

        static void DisplayFlamable(List<Car> cars)
        {
            foreach (var car in cars)
            {
                if(car.Engine.Power > 250)
                    Console.WriteLine($"{car.Model}");
            }
        }
    }

public class Car
    {
        private Tire[] tires;
        public string Model { get; set; }

        public Engine Engine { get; set; }

        public Cargo Cargo { get; set; }

        public Tire[] Tires
        {
            get => tires;
            set
            {
                if (value.Length == 4)
                {
                    tires = value;
                }
            }
        }

        public Car(string model, Engine engine, Cargo cargo, Tire[] tires)
        {
            this.Model = model;
            this.Engine = engine;
            this.Cargo = cargo;
            this.Tires = tires;
        }
    }

public class Cargo
    {
        public string  Type { get; set; }

        public int Weight { get; set; }
    }
    
public class Engine
    {
        public int Speed { get; set; }

        public int Power { get; set; }
    }
    
public class Tire
    {
        public double Pressure { get; set; }

        public int Age { get; set; }
    }

 

1
BogdanGrozdanov avatar BogdanGrozdanov 0 Точки

Благодаря ,помогна ми достатъчно твоят код,само не разбрах как раздели входната команда "var input = Console.ReadLine() .Split(' ', 6) .ToArray();" и след това var splitTires = input[5].Split(' ').ToArray();-много е хитро по този начин.

0
kkaraivanov avatar kkaraivanov 486 Точки

Здравей. Сплитвам по чарактер, а цифрата след запетаята е броя масиви които търся. В случая ще се създадат 6 масива при срещнати 6 спейс-а. В 6-тия масив на индекс 5 се вкарват данните за гумите, които сплитвам за да напълня Tire масива. Може би си забелязал че цикъла е j+=2, което ми позволява да взимам през един индекс. Можеше и с матрица да го направя, но така по-мързеливо ми се стори :) Радвам се че помогнах. Успех ти желая

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