⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dblarr.cpp

📁 BP神经网络C语言程序包
💻 CPP
字号:
//Header:     DblArr.hpp
//Version:    1.0
//Language:   Borland C++ 3.1
//Envion:     Any
//Date:              10/1995
//Purpose:    Provide a class for double array

#include "dblarr.hpp"
extern "C"
  {
  #include <stdio.h>
  }

DblArray::DblArray(int min, int max, double value):
	Array(min, max, sizeof(double))
{
  Work = (double*)Elem;
  for(unsigned int i=0; i<Long; i++)
  {
    *Work = value;
    Work++;
  }
}
//operator methods
void DblArray::operator = (DblArray &ia)
{
  Kill();
  Copy(ia);
}
void DblArray::operator = (double *da)
{
  Work = (double*)Elem;
  for(unsigned int i=0; i<Long; i++)
  {
    *Work = *(da+i);
    Work++;
  }
}
DblArray DblArray::operator + (DblArray &ia)
{
  if(Max!=ia.Max || Min!=ia.Min)
  {
    ErrSet(IIG_METHOD);
    return *this;
  }
  DblArray tmp(*this);
  tmp.Work = (double*)tmp.Elem;
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work += *ia.Work;
    tmp.Work++;
    ia.Work++;
  }
  return tmp;
}
DblArray& DblArray::operator += (DblArray &ia)
{
  *this = *this + ia;  
  return *this;
}
DblArray DblArray::operator - (DblArray &ia)
{
  if(Max!=ia.Max || Min!=ia.Min)
  {
    ErrSet(IIG_METHOD);
    return *this;
  }
  DblArray tmp(*this);
  tmp.Work = (double*)tmp.Elem;
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work -= *ia.Work;
    tmp.Work++;
    ia.Work++;
  }
  return tmp;
}
DblArray& DblArray::operator -= (DblArray &ia)
{
  *this = *this - ia;
  return *this;
}
DblArray DblArray::operator * (DblArray &ia)
{
  if(Max!=ia.Max || Min!=ia.Min)
  {
    ErrSet(IIG_METHOD);
    return *this;
  }
  DblArray tmp(*this);
  tmp.Work = (double*)tmp.Elem;
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work *= *ia.Work;
    tmp.Work++;
    ia.Work++;
  }
  return tmp;
}
DblArray& DblArray::operator *= (DblArray &ia)
{
  *this = *this * ia;
  return *this;
}
DblArray DblArray::operator / (DblArray &ia)
{
  if(Max!=ia.Max || Min!=ia.Min)
  {
    ErrSet(IIG_METHOD);
    return *this;
  }
  DblArray tmp(*this);
  tmp.Work = (double*)tmp.Elem;
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work /= *ia.Work;
    tmp.Work++;
    ia.Work++;
  }
  return tmp;
}
DblArray& DblArray::operator /= (DblArray &ia)
{
  *this = *this / ia;
  return ia;
}
DblArray DblArray::operator + ()
{
  return *this;
}
DblArray DblArray::operator - ()
{
  DblArray tmp(*this);
  tmp.Work = (double*)tmp.Elem;
  for(double i=0; i<tmp.Long; i++)
  {
    *tmp.Work = -*tmp.Work;
    tmp.Work++;
  }
  return tmp;
}
double& DblArray::operator [](int pos)
{
  Work = (double*)Elem;
  if(pos<Min || pos>Max)
  {
    ErrSet(OUT_RANGE);
    return *Work;
  }
  return *(Work+pos-Min);
}
DblArray operator + (DblArray &a, double &d)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work += d;
    tmp.Work++;
  }
  return tmp;
}
DblArray operator + (double &d, DblArray &a)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work += d;
    tmp.Work++;
  }
  return tmp;
}
DblArray operator - (DblArray &a, double &d)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work -= d;
    tmp.Work++;
  }
  return tmp;
}
DblArray operator * (DblArray &a, double &d)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work *= d;
    tmp.Work++;
  }
  return tmp;
}
DblArray operator * (double &d, DblArray &a)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work *= d;
    tmp.Work++;
  }
  return tmp;
}
DblArray operator / (DblArray &a, double &d)
{
  DblArray tmp(a);
  tmp.Work = (double*)tmp.Elem;
  for(unsigned int i=0; i<tmp.Long; i++)
  {
    *tmp.Work /= d;
    tmp.Work++;
  }
  return tmp;
}
DblArray& DblArray::operator += (double &d)
{
  *this = *this + d;
  return *this;
}
DblArray& DblArray::operator -= (double &d)
{
  *this = *this - d;
  return *this;
}
DblArray& DblArray::operator *= (double &d)
{
  *this = *this * d;
  return *this;
}
DblArray& DblArray::operator /= (double &d)
{
  *this = *this / d;
  return *this;
}
ostream& operator << (ostream &os, DblArray &ia)
{
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<ia.Long; i++)
  {
    os<<*ia.Work<<"  ";
    ia.Work++;
  }
  os<<"\n";
  return os;
}
istream& operator >> (istream &is, DblArray &ia)
{
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<ia.Long; i++)
  {
    is>>*ia.Work;
    ia.Work++;
  }
  return is;
}
unsigned int DblArray::operator == (DblArray &ia)
{
  if(Min!=ia.Min || Max!=ia.Max)
    return 0;
  Work = (double*)Elem;
  ia.Work = (double*)ia.Elem;
  for(unsigned int i=0; i<Long; i++)
  {
    if(*Work != *ia.Work) return 0;
    Work++;
    ia.Work++;
  }
  return 1;
}
unsigned int DblArray::operator != (DblArray &ia)
{
  if(*this == ia)
    return 0;
  else
    return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -