<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FStructure%2Fvalue_struct</id>
		<title>Visual C++ .NET/Structure/value struct - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Visual_C%2B%2B_.NET%2FStructure%2Fvalue_struct"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Structure/value_struct&amp;action=history"/>
		<updated>2026-04-29T20:15:48Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Structure/value_struct&amp;diff=3574&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Structure/value_struct&amp;diff=3574&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Structure/value_struct&amp;diff=3575&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Visual_C%2B%2B_.NET/Structure/value_struct&amp;diff=3575&amp;oldid=prev"/>
				<updated>2010-05-26T12:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==value struct demo==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;quot;stdafx.h&amp;quot;&lt;br /&gt;
using namespace System;&lt;br /&gt;
using namespace System::Globalization;&lt;br /&gt;
&lt;br /&gt;
public value struct Complex&lt;br /&gt;
{&lt;br /&gt;
    Complex(double real, double imaginary)&lt;br /&gt;
    {&lt;br /&gt;
        Real = real;&lt;br /&gt;
        Imaginary = imaginary;&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Polar(double polarRadius, double polarPhase)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(polarRadius*Math::Cos(polarPhase), polarRadius*Math::Sin(polarPhase));&lt;br /&gt;
    }&lt;br /&gt;
    property double Real;&lt;br /&gt;
    property double Imaginary;&lt;br /&gt;
    property Complex Conjugate&lt;br /&gt;
    {&lt;br /&gt;
        Complex get()&lt;br /&gt;
        {&lt;br /&gt;
            return Complex(Real, -Imaginary);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Absolute value&lt;br /&gt;
    property double Absolute&lt;br /&gt;
    {&lt;br /&gt;
        double get()&lt;br /&gt;
        {&lt;br /&gt;
            return Math::Sqrt(Square);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Absolute value squared&lt;br /&gt;
    property double Square&lt;br /&gt;
    {&lt;br /&gt;
        double get()&lt;br /&gt;
        {&lt;br /&gt;
            return Real*Real + Imaginary*Imaginary;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Poloar Radius&lt;br /&gt;
    property double PolarRadius&lt;br /&gt;
    {&lt;br /&gt;
        double get()&lt;br /&gt;
        {&lt;br /&gt;
            return Absolute;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Polar Angle&lt;br /&gt;
    property double PolarAngle&lt;br /&gt;
    {&lt;br /&gt;
        double get()&lt;br /&gt;
        {&lt;br /&gt;
            return Math::Atan2(Imaginary, Real);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Convert-from operator&lt;br /&gt;
    static operator Complex(double a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a, 0.0);&lt;br /&gt;
    }&lt;br /&gt;
    // Unary +/- operators&lt;br /&gt;
    static Complex operator +(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return a;&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator -(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(-a.Real, -a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    // Unary increment/decrement operators&lt;br /&gt;
    static Complex operator --(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - 1, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator ++(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + 1, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    // Comparison operators&lt;br /&gt;
    static bool operator ==(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return a.Real == b.Real &amp;amp;&amp;amp; a.Imaginary == b.Imaginary;&lt;br /&gt;
    }&lt;br /&gt;
    static bool operator !=(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return a.Real != b.Real || a.Imaginary == b.Imaginary;&lt;br /&gt;
    }&lt;br /&gt;
    // Plus operators&lt;br /&gt;
    static Complex operator +(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + b.Real, a.Imaginary + b.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator +(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + b, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    // Minus operators&lt;br /&gt;
    static Complex operator -(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - b.Real, a.Imaginary - b.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator -(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - b, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    // Multiplication operators&lt;br /&gt;
    static Complex operator *(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real*b.Real - a.Imaginary*b.Imaginary, a.Real*b.Imaginary + a.Imaginary*b.Real);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator *(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real*b, a.Imaginary*b);&lt;br /&gt;
    }&lt;br /&gt;
    // Division operators&lt;br /&gt;
    static Complex operator /(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        double d = b.Square;&lt;br /&gt;
        return Complex((a.Real*b.Real + a.Imaginary*b.Imaginary)/d, (b.Real*a.Imaginary - a.Real*b.Imaginary)/d);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator /(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real/b, a.Imaginary/b);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex operator /(double a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a, 0)/b;&lt;br /&gt;
    }&lt;br /&gt;
    // Friendly alrernate operator methods&lt;br /&gt;
    static Complex Plus(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return a;&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Negate(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(-a.Real, -a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Decrement(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - 1, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Increment(Complex a)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + 1, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Add(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + b.Real, a.Imaginary + b.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Add(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real + b, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Subtract(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - b.Real, a.Imaginary - b.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Subtract(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real - b, a.Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Multiply(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real*b.Real - a.Imaginary*b.Imaginary, a.Real*b.Imaginary + a.Imaginary*b.Real);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Multiply(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real*b, a.Imaginary*b);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Divide(Complex a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        double d = b.Square;&lt;br /&gt;
        return Complex((a.Real*b.Real + a.Imaginary*b.Imaginary)/d, (b.Real*a.Imaginary - a.Real*b.Imaginary)/d);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Divide(Complex a, double b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a.Real/b, a.Imaginary/b);&lt;br /&gt;
    }&lt;br /&gt;
    static Complex Divide(double a, Complex b)&lt;br /&gt;
    {&lt;br /&gt;
        return Complex(a, 0)/b;&lt;br /&gt;
    }&lt;br /&gt;
    virtual bool Equals(Object^ obj) override&lt;br /&gt;
    {&lt;br /&gt;
        Complex^ compareTo = dynamic_cast&amp;lt;Complex^&amp;gt;(obj);&lt;br /&gt;
        if ( compareTo )&lt;br /&gt;
        {&lt;br /&gt;
            return *this == *compareTo;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    virtual int GetHashCode() override&lt;br /&gt;
    {&lt;br /&gt;
        return Real.GetHashCode() ^ Imaginary.GetHashCode();&lt;br /&gt;
    }&lt;br /&gt;
    virtual String^ ToString() override&lt;br /&gt;
    {&lt;br /&gt;
        return String::Format(CultureInfo::CurrentCulture-&amp;gt;NumberFormat,&lt;br /&gt;
            &amp;quot;({0}, {1})&amp;quot;, Real, Imaginary);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
using namespace System;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    array&amp;lt;Complex&amp;gt;^ data = gcnew array&amp;lt;Complex&amp;gt;(1024);&lt;br /&gt;
    array&amp;lt;Complex&amp;gt;^ backup = gcnew array&amp;lt;Complex&amp;gt;(1024);&lt;br /&gt;
    // 1st test&lt;br /&gt;
    Random^ random = gcnew Random();&lt;br /&gt;
    for ( int i = 0; i &amp;lt; data-&amp;gt;Length; i++ )&lt;br /&gt;
    {&lt;br /&gt;
        data[i].Real = random-&amp;gt;NextDouble();&lt;br /&gt;
        data[i].Imaginary = random-&amp;gt;NextDouble();&lt;br /&gt;
        backup[i] = data[i];&lt;br /&gt;
    }&lt;br /&gt;
    FourierTransform^ fft = gcnew FourierTransform(data-&amp;gt;Length, true);&lt;br /&gt;
    fft-&amp;gt;Forward(data);&lt;br /&gt;
    fft-&amp;gt;Inverse(data);&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>