Ads by Google

¾åµ­¤Î¹­¹ð¤Ï£±¥ö·î°Ê¾å¹¹¿·¤Î¤Ê¤¤¥Ö¥í¥°¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¿·¤·¤¤µ­»ö¤ò½ñ¤¯»ö¤Ç¹­¹ð¤¬¾Ã¤»¤Þ¤¹¡£
¥¹¥Ý¥ó¥µ¡¼¥É¥ê¥ó¥¯
-- : -- : -- | ¥¹¥Ý¥ó¥µ¡¼¹­¹ð | page top¢¬

±é»»»Ò¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤ò»ÈÍѤ·¤¿Ê£ÁÇ¿ô¥¯¥é¥¹Complex¡ÊC#¤Ë¤è¤ë¼ÂÁõ¡Ë

Java¤Ç½ñ¤¤¤¿Ê£ÁÇ¿ô¥¯¥é¥¹Complex¤Ï»Í§±é»»¤ò¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ¹Ô¤¦¤¿¤á¡¢¤³¤ì¤òÍøÍѤ·¤¿¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¤¬ÆÉ¤ß¤Å¤é¤¯¤Ê¤ëÌäÂ꤬¤¢¤ê¤Þ¤¹¡£

¡ÊÎã¡Ë

Complex c1 = new Complex(1, 2);
Complex c2 = new Complex(3, 4);
Complex c3 = new Complex(5, 6);
Complex c4 = c3.mul(c1.add(c2));

¤³¤ì¤ò¤â¤Ã¤Èľ´¶Åª¤Ë¼¡¤Î¤è¤¦¤Ë½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©

¡Ê¾Êά¡Ë
Complex c4 = (c1+c2)*c3;

»Äǰ¤Ê¤¬¤é¡¢Java¤Ç¤ÏÉÔ²Äǽ¤Ç¤¹¡£¤·¤«¤·¡¢C#¤äC++¤Ç¤Ï±é»»»Ò¤ò¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¤³¤ì¤¬¼Â¸½²Äǽ¤Ç¤¹¡ª¤³¤³¤Ç¤Ï¡¢Java¤Ë¤è¤ê¶á¤¤¸À¸ì»ÅÍͤò»ý¤ÄC#¤Ç¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤¿¡£

¥³¥ó¥¹¥È¥é¥¯¥¿

  • Complex(double re, double im) /* °ú¿ô¤Ë¼ÂÉô(real part)¤ÈµõÉô(imaginary part)¤ÎÃͤò¼è¤ë¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤¹¡£ */

±é»»»Ò¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É

C#¤Ç¤Ï¤¤¤¯¤Ä¤«¤Î±é»»»Ò(operator)¤ò¥ª¡¼¥Ð¡¼¥í¡¼¥É(overload)¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥ÈƱ»Î¤Î±é»»¤ò¥á¥½¥Ã¥É¤òÄ̤¸¤Æ¤Ç¤Ï¤Ê¤¯¡¢Æó¹à±é»»»Ò¤Ç¤â¤Ã¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Complex¥¯¥é¥¹¤òÍøÍѤ¹¤ë¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¤¬ÆÉ¤ß¤ä¤¹¤¯¤Ê¤ëÍøÅÀ¤¬¤¢¤ê¤Þ¤¹¡£

c1.add(c2); /* ¥á¥½¥Ã¥É¤Ë¤è¤ë±é»» */
c1 + c2; /* ¥ª¡¼¥Ð¡¼¥í¡¼¥É¤·¤¿±é»»»Ò¤Ë¤è¤ë±é»» */

¥×¥í¥Ñ¥Æ¥£

C#¤Ç¤Ï¥¢¥¯¥»¥µ(accesor)¤ò¡Ö¥×¥í¥Ñ¥Æ¥£(property)¡×¤È¸Æ¤Ð¤ì¤ëµ¡¹½¤Ë¤è¤Ã¤ÆÀë¸À¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥×¥í¥Ñ¥Æ¥£¤Ï¥¯¥é¥¹¤Î¥á¥ó¥Ð¤Ç¤¹¤¬¡¢¤¢¤¿¤«¤â¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ë¿¶¤ëÉñ¤¤¤Þ¤¹¡£

Complex¥¯¥é¥¹¤ÏÉÔÊÑ¥¯¥é¥¹¤È¤·¤ÆÀ߷פµ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¤¹¤Ù¤Æ¤Î¥×¥í¥Ñ¥Æ¥£¤Ïget¥¢¥¯¥»¥µ¤Î¤ß¤ò»ý¤Á¡¢set¥¢¥¯¥»¥µ¤Ï»ý¤Á¤Þ¤»¤ó¡£

  • Re: double /* ¼ÂÉô¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ */
  • Im: double /* µõÉô¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ */
  • Abs: double /* ÀäÂÐÃÍ(absolute value)¤ò·×»»¤·¤Æ¡¢¤½¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ */
  • Arg: double /* ÊгÑ(argument)¤ò·×»»¤·¤Æ¡¢¤½¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ */
  • Con: Complex /* °ú¿ô¤Ë¼è¤Ã¤¿Ê£ÁÇ¿ô¤ÎÊ£ÁǶ¦Ìò(complex conjugate)¤ò·×»»¤·¤Æ¡¢¤½¤Î·ë²Ì¤òÊÝ»ý¤¹¤ë¥¤¥ó¥¹¥¿¥ó¥¹¤òÊÖ¤·¤Þ¤¹¡£ */

¥á¥½¥Ã¥É

  • ToString(): String /* Ê£ÁÇ¿ô¤òɽ¤¹Ê¸»úÎó¤ò(a+bi)¤Î·Á¼°¤ÇÊÖ¤·¤Þ¤¹¡£ */
using System;

public struct Complex
{
    private readonly double re;
    private readonly double im;

    public Complex(double re, double im)
    {
        this.re = re;
        this.im = im;
    }

    public double Re
    {
        get { return re; }
    }

    public double Im
    {
        get { return im; }
    }
    
    public static Complex operator
        +(Complex c1, Complex c2)
    {
        return
            new Complex(c1.re + c2.re, c1.im + c2.im);
    }

    public static Complex operator
        -(Complex c1, Complex c2)
    {
        return
            new Complex(c1.re - c2.re, c1.im - c2.im);
    }

    public static Complex operator
        *(Complex c1, Complex c2)
    {
        return new Complex(
            c1.re * c2.re - c1.im * c2.im,
            c1.re * c2.im + c1.im * c2.re);
    }

    public static Complex operator
        /(Complex c1, Complex c2)
    {
        var denominator = c2.re * c2.re + c2.im * c2.im;
        return new Complex(
            (c1.re * c2.re + c1.im * c2.im) / denominator,
            (c1.im * c2.re - c1.re * c2.im) / denominator);
    }

    public double Abs
    {
        get { return Math.Sqrt(re * re + im * im); }
    }

    public double Arg
    {
        get { return Math.Atan(im / re); }
    }

    public Complex Con
    {
        get { return new Complex(re, -im); }
    }

    public override string ToString()
    {
        if (im >= 0)
            return String.Format("({0} + {1}i)", re, im);
        else
            return String.Format("({0} - {1}i)", re, -im);
    }
}

class TestComplex
{
    static void Main()
    {
        var c1 = new Complex(1, 2);
        var c2 = new Complex(3, 4);

        Console.WriteLine("{0} + {1} = {2}",
            c1, c2, (c1 + c2));
        Console.WriteLine("{0} - {1} = {2}",
            c1, c2, (c1 - c2));
        Console.WriteLine("{0} * {1} = {2}",
            c1, c2, (c1 * c2));
        Console.WriteLine("{0} / {1} = {2}",
            c1, c2, (c1 / c2));

        Console.WriteLine("|{0}| = {1}", c1, c1.Abs);
        Console.WriteLine("arg{0} = {1}", c1, c1.Arg);
        Console.WriteLine("con{0} = {1}", c1, c1.Con);
    }
}
(1 + 2i) + (3 + 4i) = (4 + 6i)
(1 + 2i) - (3 + 4i) = (-2 - 2i)
(1 + 2i) * (3 + 4i) = (-5 + 10i)
(1 + 2i) / (3 + 4i) = (0.44 + 0.08i)
|(1 + 2i)| = 2.23606797749979
arg(1 + 2i) = 1.10714871779409
con(1 + 2i) = (1 - 2i)

´ØÏ¢µ­»ö

¥¹¥Ý¥ó¥µ¡¼¥É¥ê¥ó¥¯

¥Æ¡¼¥Þ:¥×¥í¥°¥é¥ß¥ó¥° - ¥¸¥ã¥ó¥ë:¥³¥ó¥Ô¥å¡¼¥¿ - ¥½¡¼¥·¥ã¥ë¥Ö¥Ã¥¯¥Þ¡¼¥¯: ¤³¤Îµ­»ö¤ò¥¯¥ê¥Ã¥×¡ª Yahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

00 : 00 : 00 | ¥×¥í¥°¥é¥ß¥ó¥°¡ÝC# | ¥È¥é¥Ã¥¯¥Ð¥Ã¥¯(0) | ¥³¥á¥ó¥È(0) | page top¢¬
<<Java¤Ë¤ª¤±¤ëequals()¥á¥½¥Ã¥É¤Î¼ÂÁõ | ¥Û¡¼¥à | ÉÔÊÑ¥¯¥é¥¹¤È¤·¤ÆÀ߷פ·¤¿Ê£ÁÇ¿ô¥¯¥é¥¹Complex¡ÊJava¤Ë¤è¤ë¼ÂÁõ¡Ë>>
¥³¥á¥ó¥È

¥³¥á¥ó¥È¤ÎÅê¹Æ














´ÉÍý¼Ô¤Ë¤À¤±É½¼¨¤òµö²Ä¤¹¤ë

¥È¥é¥Ã¥¯¥Ð¥Ã¥¯
¥È¥é¥Ã¥¯¥Ð¥Ã¥¯URL
¢ªhttp://networkprogramming.blog18.fc2.com/tb.php/79-5eed2e56
¤³¤Îµ­»ö¤Ë¥È¥é¥Ã¥¯¥Ð¥Ã¥¯¤¹¤ë(FC2¥Ö¥í¥°¥æ¡¼¥¶¡¼)
| ¥Û¡¼¥à |

¥×¥í¥Õ¥£¡¼¥ë

Author:TBVector

¥×¥í¥Õ¥£¡¼¥ë

¥á¡¼¥ë¥Õ¥©¡¼¥à

µ­»ö¸¡º÷

Google

ºÇ¶á¤Îµ­»ö

¿Íµ¤¤Îµ­»ö

²áµî¤Îµ­»ö

¥«¥Æ¥´¥ê¡¼

¥¿¥°¥é¥ó¥­¥ó¥°

¥ê¥ó¥¯

ºÇ¶á¤Î¥³¥á¥ó¥È

ºÇ¶á¤Î¥È¥é¥Ã¥¯¥Ð¥Ã¥¯

¥¢¥¯¥»¥¹¥«¥¦¥ó¥¿