C#简单的向量用法实例教程

本文以实例讲述了C#简单的向量用法,主要包括重载运算符>:以向量长度判断是否为真、重载运算符!=、<、<=等,具体实现代码如下:

using System;
class Vector
{
 private double XVector;
 private double YVector;
 //构造函数
 public Vector(double x, double y )
 {
 XVector = x;
 YVector = y;
 }
 //获取向量的长度
 public double GetLength( )
 {
 double Length = Math.Sqrt( XVector*XVector + YVector*YVector );
 return Length;
 }
 //重载运算符==
 public static bool operator == ( Vector a, Vector b )
 {
 return ( (a.XVector == b.XVector) && (a.YVector == b.YVector) );
 }
 //重载运算符!=
 public static bool operator != ( Vector a, Vector b )
 {
 return !( a == b );
 }
 //重载运算符>:以向量长度判断是否为真
 public static bool operator > ( Vector a, Vector b )
 {
 return a.GetLength( ) > b.GetLength( );
 }
 //重载运算符<
 public static bool operator < ( Vector a, Vector b )
 {
 return a.GetLength( ) < b.GetLength( );
 }
 //重载运算符>=
 public static bool operator >= ( Vector a, Vector b )
 {
 return ( a == b ) || ( a > b );
 }
 //重载运算符<=
 public static bool operator <= ( Vector a, Vector b )
 {
 return ( a == b ) || ( a < b );
 }
}
class Test
{
 static public void Main( )
 {
 Vector vector1 = new Vector( 3, 4 );
 Vector vector2 = new Vector( 0, 5 );
 Vector vector3 = new Vector( 2, 2 );
 Console.WriteLine("向量1为( 3, 4 ) \t 向量2为( 0, 5 ) \t 向量3为( 2, 2 )");
 Console.WriteLine("向量1 == 向量2 为:{0}", vector1 == vector2 );
 Console.WriteLine("向量1 != 向量2 为:{0}", vector1 != vector2 );
 Console.WriteLine("向量1 > 向量3 为:{0}", vector1 > vector3 );
 Console.WriteLine("向量2 < 向量3 为:{0}", vector2 < vector3 );
 Console.WriteLine("向量1 >= 向量2 为:{0}", vector1 != vector2 );
 Console.WriteLine("向量1 <= 向量2 为:{0}", vector1 != vector2 );
 }
}
(0)

相关推荐

  • C# DES加密算法中向量的作用详细解析

    DES一共就有4个参数参与运作:明文.密文.密钥.向量.为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量:明文=密文-密钥-向量.为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复,那么这个词加上密钥形成的密文,仍然会重复,这给破解者有机可乘,破解者可以根据重复的内容,猜出是什么词,然而一旦猜对这个词,那么,他就能算出密钥,整篇文章就被破解了!加上向量这个参数以后,每块文字段都会依次加上一段值,这样,即使相同的文字,加密出来的密文,也是不一样的,算法的安全性大大提高!

  • libsvm支持向量机回归示例

    libsvm支持向量机算法包的基本使用,此处演示的是支持向量回归机 复制代码 代码如下: import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List; import libsvm.svm;import libsvm.svm_model;import libsvm.svm_node;import libsvm.

  • javascript图片相似度算法实现 js实现直方图和向量算法

    复制代码 代码如下: function getHistogram(imageData) {    var arr = [];    for (var i = 0; i < 64; i++) {        arr[i] = 0;    }    var data = imageData.data;    var pow4 = Math.pow(4, 2);    for (var i = 0, len = data.length; i < len; i += 4) {        var

  • c++ vector(向量)使用方法详解(顺序访问vector的多种方式)

    vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器.vector 是C++ STL的一个重要成员,使用它时需要包含头文件: 复制代码 代码如下: #include<vector>; 一.vector 的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的.(2)vector<int> a(10,

  • C语言二叉树的非递归遍历实例分析

    本文以实例形式讲述了C语言实现二叉树的非递归遍历方法.是数据结构与算法设计中常用的技巧.分享给大家供大家参考.具体方法如下: 先序遍历: void preOrder(Node *p) //非递归 { if(!p) return; stack<Node*> s; Node *t; s.push(p); while(!s.empty()) { t=s.top(); printf("%d\n",t->data); s.pop(); if(t->right) s.pus

  • C语言泛型编程实例教程

    本文实例讲述了C语言泛型编程的方法,分享给大家供大家参考之用.具体分析如下: 首先,泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同.在C语言中,可以通过一些手段实现这样的泛型编程.这里介绍一种方法--通过无类型指针void* 看下面的一个实现交换两个元素内容的函数swap,以整型int为例: void swap(int* i1,int* i2){ int temp; temp = *i1; *i1 = *i2; *i2 = temp; } 当你想交换两个

  • C语言连续子向量的最大和及时间度量实例

    本文实例分析了C语言连续子向量的最大和及时间度量,分享给大家供大家参考之用.具体方法如下: #include <stdio.h> #include <time.h> #include <stdlib.h> #define SCALE 3000 int maxnum(int a, int b); int main(int argc, char const *argv[]) { FILE *fp; fp = fopen("maximum.in", &qu

  • C++实现一维向量旋转算法

    在<编程珠玑>一书的第二章提到了n元一维向量旋转算法(又称数组循环移位算法)的五种思路,并且比较了它们在时间和空间性能上的区别和优劣.本文将就这一算法做较为深入的分析.具体如下所示: 一.问题描述 将一个n元一维向量向左旋转i个位置.例如,假设n=8,i=3,向量abcdefgh旋转为向量defghabc.简单的代码使用一个n元的中间向量在n步内可完成该工作.你能否仅使用几十个额外字节的内存空间,在正比于n的时间内完成向量的旋转? 二.解决方案 思路一:将向量x中的前i个元素复制到一个临时数组

  • C语言柔性数组实例详解

    本文实例分析了C语言柔性数组的概念及用法,对于进一步学习C程序设计有一定的借鉴价值.分享给大家供大家参考.具体如下: 一般来说,结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组.但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存.包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小.柔性数组到底如何使用? 不完整类型 C和C++对于不完

  • C语言的递归思想实例分析

    本文实例分析C语言的递归思想,分享给大家供大家参考之用.具体方法如下: 通俗点来说,递归就是自己调用自己. 递归的难点一是理解递归的执行调用过程,二是设置一个合理的递归结束条件. 下面来看一段摘自书中的简单程序: #include <STDIO.H> long fact(int n); long rfact(int n); int main(void) { int num; printf("This program calculates factorials.\n"); p

  • C语言指针的长度和类型深入分析

    指针是C语言的精髓,本文就以实例的形式详细分析了C语言的长度和类型.对于初学者深入理解C语言程序设计有很好的参考价值.具体分析如下: 一般来说,如果考虑应用程序的兼容性和可移植性,指针的长度就是一个问题,在大部分现代平台上,数据指针的长度通常是一样的,与指针类型无关,尽管C标准没有规定所有类型指针的长度相同,但是通常实际情况就是这样.但是函数指针长度可能与数据指针的长度不同. 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长 测试代码如下: #inclu

  • C语言实现带头结点的链表的创建、查找、插入、删除操作

    本文实例讲述了C语言实现带头结点的链表的创建.查找.插入.删除操作.是数据结构中链表部分的基础操作.分享给大家供大家参考.具体方法如下: #include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node* next;// 这个地方注意结构体变量的定义规则 } Node, *PNode; Node* createLinklist(int length) { int i = 0; PNo

随机推荐