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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2011, 03:10   #1
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию C#

Здраствуйте! Помогите организовать класс вектор на c#, в котором есть методы позволяющие инициализировать вектор, находить минимум и максимум, складывать, остальные операции я организую сама, дописав в этом классе методы, просто чтоб я могла ориентироваться как правильно писать и получать доступ ... Спасибо
Lucky777 вне форума Ответить с цитированием
Старый 08.06.2011, 07:03   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

В основу положь одномерный массив (хотя лучше список), а дальше уже проще.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.06.2011, 07:14   #3
Timophey
 
Регистрация: 05.06.2011
Сообщений: 7
Радость

Держи))

Код:
using System;


namespace vector
{
    class Vector
    {
        public decimal[] vector;//поле

        public Vector(int n)//конструктор
        {
            vector=new decimal[n];
        }

        public void SetElement(int n,decimal val)//метод
        {
            vector[n]=val;
        }
        public int Size()
        {
            return (this.vector.Length);
        }

        public void Print()
        {
            for (int i = 0; i < this.Size(); ++i)
            {
                Console.Write(this.vector[i] + " ");
            }
            Console.WriteLine();
        }

        

        public static Vector operator +(Vector v1, Vector v2) //перегруженный оператор
        {
            
                Vector v3 = new Vector(v1.Size());
                 for (int i = 0; i < v1.Size(); ++i)
                 {
                        v3.vector[i] = v1.vector[i] +v2.vector[i];
                 }
                return v3;
            
        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            Vector vector1 = new Vector(3);

            vector1.SetElement(0, 3);
            vector1.SetElement(1, 3);
            vector1.SetElement(2, 3);
            vector1.Print();

            Vector vector2 = new Vector(3);

            vector2.SetElement(0, 1);
            vector2.SetElement(1, 2);
            vector2.SetElement(2, 3);
            vector2.Print();

            (vector1 + vector2).Print();

            Console.ReadLine();
        }
    }
}
Timophey вне форума Ответить с цитированием
Старый 08.06.2011, 14:23   #4
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию

А как мне инициализировать матрицу, если например создавать класс для матрицы?
Lucky777 вне форума Ответить с цитированием
Старый 08.06.2011, 14:28   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

В цикле для каждого элемента матрицы.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.06.2011, 15:43   #6
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию

А как мне инициализировать матрицу:
Цитата:
class Matrica
{
public Vector[] matrica;
public int m;
public int n;

public Matrica(int col, int num)
{
matrica = new Vector[num];
}

public void SetElement(int n, Vector v)
{
// for (int i = 0; i < n; i++ )
this.matrica[n] = v;
}
Чтобы использовать вектора, инициализированные в классе Vector, для метода класса матрица, тоесть вызов происходит так: matrica.SetElements(int n, Vector v1, Vector2,...)
... у меня выходит бред, подскажите пожалуйста как это сделать
Lucky777 вне форума Ответить с цитированием
Старый 08.06.2011, 16:12   #7
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию

Подскажите кто-нибудь!!!
Lucky777 вне форума Ответить с цитированием
Старый 08.06.2011, 18:02   #8
Timophey
 
Регистрация: 05.06.2011
Сообщений: 7
Радость

Вот посмотри..

Код:

using System;


namespace vector
{
    class Matrix
    {
        
        public decimal [,] matr;
        public int m,n;
        public Matrix(int m, int n)
        {
            this.m = m;
            this.n = n;

            matr = new decimal[m, n];

            for (int i = 0; i < this.m; ++i)
            {
                for (int j = 0; j < this.n; ++j)
                {
                    this.matr[i, j] = 0;
                }
            }
        }

        public void SetElement(int row, Vector vec)
        {
            int r = row;
            for (int i = 0; i < vec.Size(); ++i )
            {
                this.matr[r,i] = vec.GetElement(i); 
            }
 
        }

        public void Print()
        {
            for (int i = 0; i < this.m; ++i)
            {
                for (int j = 0; j < this.n; ++j)
                {
                    Console.Write(this.matr[i,j]);
                    
                }
                Console.WriteLine();
            }
        }
    }
    class Vector
    {
        public decimal[] vector;//поле
        public Vector(int n)//конструктор
        {
            vector=new decimal[n];
        }
        public decimal GetElement(int n)//метод
        {
            return this.vector[n]; 
        }

        public void SetElement(int n, decimal val)//метод
        {
            vector[n] = val;
        }

        public int Size()
        {
            return (this.vector.Length);
        }

        public void Print()
        {
            for (int i = 0; i < this.Size(); ++i)
            {
                Console.Write(this.vector[i] + " ");
            }
            Console.WriteLine();
        }

        

        public static Vector operator +(Vector v1, Vector v2)
        {
            
                Vector v3 = new Vector(v1.Size());
                 for (int i = 0; i < v1.Size(); ++i)
                 {
                        v3.vector[i] = v1.vector[i] +v2.vector[i];
                 }
                return v3;
            
        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            Vector vector1 = new Vector(3);

            vector1.SetElement(0, 3);
            vector1.SetElement(1, 3);
            vector1.SetElement(2, 3);
            vector1.Print();

            Vector vector2 = new Vector(3);

            vector2.SetElement(0, 1);
            vector2.SetElement(1, 2);
            vector2.SetElement(2, 3);
            vector2.Print();


            Vector vector3 = new Vector(3);



            vector3 = vector1 + vector2;
            vector3.Print();

            
            Matrix m = new Matrix(3,3);

            m.SetElement(0,vector1);
            m.SetElement(1, vector2);
            m.SetElement(2, vector3);
            m.Print();

            Console.ReadLine();
        }
    }
}

Последний раз редактировалось Timophey; 08.06.2011 в 19:29.
Timophey вне форума Ответить с цитированием
Старый 08.06.2011, 19:25   #9
Lucky777
Пользователь
 
Регистрация: 30.11.2010
Сообщений: 48
По умолчанию

Почему то в этой строчке ошибка:this.matr[r,i] = vec.GetElement(i);
Не видит метода GetElement(i)
Lucky777 вне форума Ответить с цитированием
Старый 08.06.2011, 19:31   #10
Timophey
 
Регистрация: 05.06.2011
Сообщений: 7
Радость

Попробуй ещё раз, я перезалил код выше, у меня все работает..
Timophey вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск