Неправильный вывод значений - C#

Узнай цену своей работы

Формулировка задачи:

Не удается сделать правильно вывод , помогите Прога выводит правильно название и крепость алкоголя , а вот остальное для всех 3-ех напитков одинаково выдает (количество , цену , цену за все).
using System;
namespace MyEquations
{
    abstract class Liquid // Основной класс
    {
        public string name; // Название алкоголя 
 
        public void NameShow() // Вывод названия алкоголя
        {
            Console.WriteLine("Alcohol name: " + name);
        }
    }
    class Alcohol : Liquid // Наследуемый класс
    {
        public string vol; // Крепость алкоголя.

        public Alcohol(string vol, string name, double gab)
        {
            this.name = name;
            this.vol = vol;
 
            // Приравнивание
        }
        public void VolShow() // Вывод крепости алкоголя после названия
        {
            Console.WriteLine("Alcohol volume: " + vol);
        }
    }
    public interface iTwoNumbers
    {
        sbyte N1 { get; set; }
        sbyte N2 { get; set; }
        void Solve(); void WriteAnswer(string ToWrite);
 
    }
    public abstract class TTwoNumbers : iTwoNumbers
    {
        sbyte n1; public sbyte N1 { get { return n1; } set { n1 = value; } }
        sbyte n2; public sbyte N2 { get { return n2; } set { n2 = value; } }
        public TTwoNumbers() { N1 = 0; N2 = 0; }
        public TTwoNumbers(sbyte N1, sbyte N2) { this.N1 = N1; this.N2 = N2; }
        public abstract void Solve();
        public void WriteAnswer(string result) { Console.WriteLine(result); }
    }
    class TEquation : TTwoNumbers
    {
        sbyte a { get { return N1; } set { N1 = value; } }
        sbyte b { get { return N2; } set { N2 = value; } }
        public TEquation(sbyte P1, sbyte P2) : base(P1, P2) { }
        public override void Solve()
        {
 
            Console.WriteLine("Bottles count: {0}\nPrice for bottle: {1}", a, b);
 
            double x = a * b;
            Console.WriteLine("Price for all bottles: " + x, "$");
            Console.WriteLine("-------------------");
 
        }
    }
    class TSquareEquation : TEquation
    {
        sbyte a { get; set; }
        sbyte b { get { return N1; } set { N1 = value; } }
        sbyte c { get { return N2; } set { N2 = value; } }
        public TSquareEquation(sbyte P1, sbyte P2, sbyte P3) : base(P2, P3) { a = P1; }
        public override void Solve()
        {
            Console.WriteLine(": Square Equation: ({0}x*x)+({1})x+({2})=0", a, b, c);
            short D = (short)(b * b - 4 * a * c);
            if (D >= 0)
            {
                double x1 = (-b + Math.Sqrt(D)) / (2 * a);
                double x2 = (-b - Math.Sqrt(D)) / (2 * a);
                WriteAnswer("Result: x1=" + x1.ToString("F3") + ", x2=" + x2.ToString("F3"));
            }
            else WriteAnswer("No Answer! D=" + D.ToString());
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            byte CollectionSize = 3; byte i;
            Random random = new Random(); sbyte p1, p2, p3;
            TEquation[] Collection = new TEquation[CollectionSize];
            for (i = 0; i < CollectionSize; i++)
            {
                p1 = (sbyte)random.Next(0, 100);
                p2 = (sbyte)random.Next(0, 50);
                p3 = (sbyte)random.Next(-10, 10);
 
                Collection[i] = (i < CollectionSize / 1
 
                ? new TEquation(p1, p2)
                : new TSquareEquation(p1, p2, p3));
            }
            foreach (TEquation Equation in Collection)
            {
     
                Alcohol drink = new Alcohol("", "", 0);
                drink.name = "Jin";
                drink.vol = "35%";
                drink.NameShow();
                drink.VolShow();
                Equation.Solve();

                Alcohol drink2 = new Alcohol("", "", 0);
                drink.name = "Whiskey";
                drink.vol = "40%";
                drink.NameShow();
                drink.VolShow();
                Equation.Solve();
 
                Alcohol drink3 = new Alcohol("", "", 0);
                drink.name = "Cesu Alus";
                drink.vol = "4.5%";
                drink.NameShow();
                drink.VolShow();
                Equation.Solve();
 
                Console.WriteLine(); i = 0;
                Console.ReadLine();
            }
        }
    }
 
}

Решение задачи: «Неправильный вывод значений»

textual
Листинг программы
 foreach (TEquation Equation in Collection)
            {
 
                Alcohol drink = new Alcohol("", "", 0);
                drink.name = "Jin";
                drink.vol = "35%";
                drink.NameShow();
                drink.VolShow();
                Equation.Solve();
 
 
 
                Console.WriteLine(); i = 0;
             
            }
            Console.ReadLine();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы