アプリ版:「スタンプのみでお礼する」機能のリリースについて

どうしても エラーが出ます
エラーの表示は 下のようなものなのですが、どういう意味かわかりません。
C:\Documents and Settings\gc60117\デスクトップ\Project3\CodeFile1.cs(20): 引数を '2' 個指定できる、メソッド 'Vector' のオーバーロードはありません。 
自分なりのプログラミングデータを記述します。
間違いを指摘していただけると助かります。
using System;
class Vector
{
private double x;
private double y;
public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public void Write()
{
Console.Write("({0},{1})",x,y);
}
public static Vector I
{
get{return new Vector(1,0);}
}
public static Vector J
{
get{return new Vector(0,1);}
}
public static Vector operator*(double k,Vector a)
{
Vector t= new Vector();
t.x=k*a.x;
t.y=k*a.y;
return t;
}
public static double operator*(Vector a, Vector b)
{
double z= new double();
z=a.x*b.x+a.y+b.y;
return z;
}
public static Vector operator+(Vector a,Vector b)
{
Vector u=new Vector();
u.x=a.x+b.x;
u.y=a.y+b.y;
return u;
}
public static double Angle(Vector A,Vector B)
{
double r=new double();
r=A*B/(A.Length*B.Length);
r=Math.Acos(r);
r=r/6.28*360;
return r;
}
}
class kadai53

{

static void Main()

{

Vector A;

double x, y;



Console.Write("ベクトルAの成分を入力してください\n");

Console.Write("x成分は ? ");

x = double.Parse(Console.ReadLine());

Console.Write("y成分は ? ");

y = double.Parse(Console.ReadLine());



A = x * Vector.I + y * Vector.J; //静的プロパティと,一つ目の*演算子,+演算子の呼び出し

Console.Write("A = "); A.Write();



Vector B = new Vector(0, 1);

Console.Write("\nB = "); B.Write();



Console.WriteLine("\nベクトルAとベクトルBの内積の値は{0}です", A*B);//二つ目の*演算子の呼び出し

Console.Write("ベクトルAとベクトルBがなす角度は{0}度です\n", Vector.Angle(A,B));

}

}

A 回答 (2件)

using System;


class Vector
{
private double x;
private double y;

/* コンストラクタ */
public Vector(){
}

/* 二つのdouble値を引数に持つコンストラクタ */
public Vector(double a,double b){
x = a;
y = b;

}


public double Length
{
get{return Math.Sqrt(x*x+y*y);}
}
public void Write()
{
Console.Write("({0},{1})",x,y);
}
public static Vector I
{
get{return new Vector(1,0);}
}
public static Vector J
{
get{return new Vector(0,1);}
}
public static Vector operator*(double k,Vector a)
{
Vector t= new Vector();
t.x=k*a.x;
t.y=k*a.y;
return t;
}
public static double operator*(Vector a, Vector b)
{
double z= new double();
/* 式が間違っている */
/* z=a.x*b.x+a.y+b.y; */
z=a.x*b.x+a.y*b.y;

return z;
}
public static Vector operator+(Vector a,Vector b)
{
Vector u=new Vector();
u.x=a.x+b.x;
u.y=a.y+b.y;
return u;
}
public static double Angle(Vector A,Vector B)
{
double r=new double();
r=A*B/(A.Length*B.Length);
r=Math.Acos(r);
/*
A = (1,0)の時
90度からずれるため,Math.PIを使うことにした
*/
r=r/(2 * Math.PI) *360;
return r;
}
}
class kadai53

{

static void Main()

{

Vector A;

double x, y;



Console.Write("ベクトルAの成分を入力してください\n");

Console.Write("x成分は ? ");

x = double.Parse(Console.ReadLine());

Console.Write("y成分は ? ");

y = double.Parse(Console.ReadLine());



A = x * Vector.I + y * Vector.J; //静的プロパティと,一つ目の*演算子,+演算子の呼び出し

Console.Write("A = "); A.Write();



Vector B = new Vector(0, 1);

Console.Write("\nB = "); B.Write();



Console.WriteLine("\nベクトルAとベクトルBの内積の値は{0}です", A*B);//二つ目の*演算子の呼び出し

Console.Write("ベクトルAとベクトルBがなす角度は{0}度です\n", Vector.Angle(A,B));

}

}
    • good
    • 1
この回答へのお礼

丁寧に、プログラムまでいただき本当にありがとうございました。
間違い箇所が指摘され とても分かりやすかったです。

お礼日時:2007/10/31 19:16

> 引数を '2' 個指定できる、メソッド 'Vector' のオーバーロードはありません。

 

「(引数を '2' 個指定できる)Vectorクラスのコンストラクタ」が定義されていないのが原因なのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!