Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2015, 18:09   #1
schoolboy99
Пользователь
 
Регистрация: 11.02.2015
Сообщений: 57
По умолчанию Си Шарп-Неявное преобразование

Реализовать класс векторов, переопределив операции сложения, вычитания, умножения векторов и операторы равенства/неравенства. Учесть операции, где один из операндов – вещественное или целое число. Генерировать исключение, в случае не совпадения размерности векторов при выполнении операций...

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace labwork3
{
    class Vector
    {
        int[] vect;

        public Vector() 
        { 
            vect = null; 
        }
        public Vector(int[] v) 
        { 
            vect = v; 
        }

        public Vector(int n)
        { 
            vect = new int[n];
            for (int i = 0; i < n; i++) vect[i] = i;
        }

        public static bool operator ==(Vector op1, Vector op2)
        {
            if (op1.vect == null || op2.vect == null)
            {
                Console.WriteLine("Один или оба вектора не существует.");
                return false;
            }
            if (op1.vect.Length == op2.vect.Length) return true;
            return false;
        }
        public static bool operator !=(Vector op1, Vector op2)
        {
            if (op1.vect == null || op2.vect == null)
            {
                Console.WriteLine("Один или оба вектора не существует.");
                return false;
            }
            if (op1.vect.Length != op2.vect.Length) return true;
            return false;
        }
        public static Vector operator +(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, сложение невозможно.");
            }

            Vector op = new Vector(op1.vect.Length);
            for (int i = 0; i < op1.vect.Length; i++)
                op.vect[i] = op1.vect[i] + op2.vect[i];

                return op;
        }
        public static Vector operator -(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, вычитание невозможно.");
            }

            Vector op = new Vector(op1.vect.Length);
            for (int i = 0; i < op1.vect.Length; i++)
                op.vect[i] = op1.vect[i] - op2.vect[i];

            return op;
        }
        public static int operator *(Vector op1, Vector op2)
        {
            try
            {
                if (op1 != op2) throw new IndexOutOfRangeException();
            }
            catch (IndexOutOfRangeException)
            {
                Console.WriteLine("Длины векторов не равны, умножение невозможно.");
            }

            int op=0;
            for (int i = 0; i < op1.vect.Length; i++)
                op += op1.vect[i] * op2.vect[i];

            return op;
        }
        public void show() 
        {
            for (int i = 0; i < vect.Length; i++) Console.Write(vect[i] + "\t");
            Console.WriteLine();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int k=6;
            Vector ob1 = new Vector(k), ob2 = new Vector(k), ob3;
            ob1.show();
            ob2.show();
            ob3 = ob1 + ob2;
            ob3.show();
            ob3 = ob1 - ob2;
            ob3.show();
            ob3 = ob1 * ob2;--------Ошибка	3	Неявное преобразование типа "int" в "labwork3.Vector" невозможно	C:\Users\User\Desktop\Гетерогенные программные платформы\Лабораторная 3\labwork3\labwork3\Program.cs	117	19	labwork3

            ob3.show();
            Console.ReadLine();
            Console.ReadKey(true);
        }
    }
}
schoolboy99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование часов в числа, а так же преобразование время PeMeHb Microsoft Office Excel 5 19.10.2014 17:04
Си шарп yankel C# (си шарп) 3 11.04.2014 15:09
Пример создания .dll c помощью VC для клиента на qt. неявное связывание mr_virtus Помощь студентам 0 19.03.2014 15:42
Неявное преобразование типа "string" в "int" невозможно artscorp C# (си шарп) 4 10.02.2013 20:59