Загрузка...

Кто может помочь исправить ошибки, пожалуйста

Тема в разделе C# создана пользователем Додик 29 май 2023. 146 просмотров

Загрузка...
  1. Додик
    Додик Автор темы 29 май 2023 Заблокирован(а) 3 16 окт 2019
    CSHARP
    using System;

    class OctalNumber {
    private
    string value;

    public
    OctalNumber()
    {
    value = "0";
    }

    public
    OctalNumber(string value)
    {
    SetValue(value);
    }

    public
    OctalNumber(OctalNumber other)
    {
    SetValue(other.value);
    }

    public
    string Value
    {
    get { return value; }
    set { SetValue(value); }
    }

    public
    int Length
    {
    get { return value.Length; }
    }

    public
    int this[int index]
    {
    get
    {
    if (index < 0 || index >= value.Length) {
    throw new IndexOutOfRangeException();
    }
    return value[index] - '0';
    }
    }

    public
    static OctalNumber operator+(OctalNumber a, OctalNumber b)
    {
    string result = "";
    int carry = 0;
    for (int i = a.value.Length - 1, j = b.value.Length - 1; i >= 0 || j >= 0 || carry > 0; i--, j--) {
    int sum = (i >= 0 ? a.value[i] - '0' : 0) + (j >= 0 ? b.value[j] - '0' : 0) + carry;
    result = (sum % 8).ToString() + result;
    carry = sum / 8;
    }
    return new OctalNumber(result);
    }

    public
    static OctalNumber operator-(OctalNumber a, OctalNumber b)
    {
    if (a < b) {
    throw new ArgumentException("Cannot subtract a larger number from a smaller one.");
    }
    string result = "";
    int borrow = 0;
    for (int i = a.value.Length - 1, j = b.value.Length - 1; i >= 0; i--, j--) {
    int diff = (i >= 0 ? a.value[i] - '0' : 0) - (j >= 0 ? b.value[j] - '0' : 0) - borrow;
    if (diff < 0) {
    diff += 8;
    borrow = 1;
    }
    else {
    borrow = 0;
    }
    result = diff.ToString() + result;
    }
    return new OctalNumber(result.TrimStart('0'));
    }

    public
    static OctalNumber operator*(OctalNumber a, OctalNumber b)
    {
    string result = "0";
    for (int i = b.value.Length - 1; i >= 0; i--) {
    string lineResult = "";
    int carry = 0;
    for (int j = a.value.Length - 1; j >= 0 || carry > 0; j--) {
    int product = (j >= 0 ? a.value[j] - '0' : 0) * (b.value[i] - '0') + carry;
    lineResult = (product % 8).ToString() + lineResult;
    carry = product / 8;
    }
    lineResult += new string('0', b.value.Length - i - 1);
    result = (new OctalNumber(lineResult) + new OctalNumber(result)).Value;
    }
    return new OctalNumber(result);
    }

    public
    static OctalNumber operator/(OctalNumber a, OctalNumber b)
    {
    if (b == new OctalNumber("0")) {
    throw new DivideByZeroException;
    }

    string result = "";
    OctalNumber remainder = new OctalNumber(a);
    while (remainder >= b) {
    int quotientDigit = 0;
    OctalNumber quotientLine = new OctalNumber();
    for (int i = remainder.Length - 1; i >= 0; i--) {
    quotientLine = new OctalNumber((quotientDigit * 10).ToString()) + new OctalNumber(remainder[i].ToString()) / b;
    if (quotientLine != new OctalNumber("0") || result != "") {
    result += quotientLine[0].ToString();
    }
    quotientDigit = quotientLine[0];
    }
    remainder = remainder - quotientLine * b;
    }
    if (result == "") {
    result = "0";
    }
    return new OctalNumber(result);
    }

    public
    static bool operator==(OctalNumber a, OctalNumber b)
    {
    return a.value == b.value;
    }

    public
    static bool operator!=(OctalNumber a, OctalNumber b)
    {
    return a.value != b.value;
    }

    public
    static bool operator<(OctalNumber a, OctalNumber b)
    {
    if (a.Length < b.Length) {
    return true;
    }
    else if (a.Length > b.Length) {
    return false;
    }
    else {
    for (int i = 0; i < a.Length; i++) {
    if (a[i] < b[i]) {
    return true;
    }
    else if (a[i] > b[i]) {
    return false;
    }
    }
    return false;
    }
    }

    public
    static bool operator>(OctalNumber a, OctalNumber b)
    {
    if (a.Length > b.Length) {
    return true;
    }
    else if (a.Length < b.Length) {
    return false;
    }
    else {
    for (int i = 0; i < a.Length; i++) {
    if (a[i] > b[i]) {
    return true;
    }
    else if (a[i] < b[i]) {
    return false;
    }
    }
    return false;
    }
    }

    public
    static bool operator<=(OctalNumber a, OctalNumber b)
    {
    return a == b || a < b;
    }

    public
    static bool operator>=(OctalNumber a, OctalNumber b)
    {
    return a == b || a > b;
    }

    public
    static explicit operator int(OctalNumber a)
    {
    int result = 0;
    for (int i = 0; i < a.Length; i++) {
    result = result * 8 + a[i];
    }
    return result;
    }

    public
    override string ToString()
    {
    return value;
    }

    private
    void SetValue(string value)
    {
    if (value == null) {
    throw new ArgumentNullException();
    }
    foreach (char c in value) {
    if (c < '0' || c > '7') {
    throw new ArgumentException("Value must consist only of octal digits.");
    }
    }
    this.value = value.TrimStart('0');
    if (this.value == "") {
    this.value = "0";
    }
    }
    }

    class Program {
    static void Main(string[] args)
    {
    OctalNumber a = new OctalNumber("1234");
    OctalNumber b = new OctalNumber c = new OctalNumber("765");

    Console.WriteLine("a = {0}", a);
    Console.WriteLine("b = {0}", b);
    Console.WriteLine("c = {0}", c);

    Console.WriteLine();

    Console.WriteLine("a + b = {0}", a + b);
    Console.WriteLine("a - b = {0}", a - b);
    Console.WriteLine("a * b = {0}", a * b);
    Console.WriteLine("a / c = {0}", a / c);

    Console.WriteLine();

    Console.WriteLine("a == b: {0}", a == b);
    Console.WriteLine("a != b: {0}", a != b);
    Console.WriteLine("a < b: {0}", a < b);
    Console.WriteLine("a > b: {0}", a > b);
    Console.WriteLine("a <= b: {0}", a <= b);
    Console.WriteLine("a >= b: {0}", a >= b);

    Console.WriteLine();

    Console.WriteLine("(int)a = {0}", (int)a);

    Console.WriteLine();

    Console.WriteLine("a[0] = {0}", a[0]);
    Console.WriteLine("a[1] = {0}", a[1]);
    Console.WriteLine("a[2] = {0}", a[2]);
    Console.WriteLine("a[3] = {0}", a[3]);

    Console.ReadKey();
    }
    }
     
  2. ЛолиХентай
    ЛолиХентай 29 май 2023 SWAG :esketit: 1779 27 апр 2022
     
  3. superoip
    superoip 29 май 2023 64 16 апр 2019
    а ошибки где
     
  4. vtlstolyarov
    vtlstolyarov 29 май 2023 474 8 янв 2022
    Тебя кто научил так public/private писать? я с перепугу подумал что это плюсы а не C#
     
Top