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

📄 dim.cpp

📁 由一个古老的BASIC解释器改进而成, 保留了ANSI C固有的艺术美感.
💻 CPP
字号:
// dim.cpp

#include "dim.h"
#include "error.h"

#include <algorithm>

class dim_calc {
public:
	dim_calc () : r (1) { }
	void operator () (const size_t n)
	{ r*= n + 1; }
	size_t value () { return r; }
private:
	size_t r;
};

size_t Dimension::elements () const
{
	dim_calc r= std::for_each (dim.begin (), dim.end (), dim_calc () );
	return r.value ();
}

size_t Dimension::evalpos (const Dimension & d) const
{
	size_t n= size ();
	if (d.size () != n)
		throw ErrBadSubscript;
	size_t pos= d [0];
	if (pos > dim [0])
		throw ErrBadSubscript;
	for (size_t i= 1; i < n; ++i)
	{
		if (d [i] > dim [i] )
			throw ErrBadSubscript;
		pos*= dim [i] + 1;
		pos+= d [i];
	}
	return pos;
}

// Only for debug.

std::ostream & operator << (std::ostream & os, const Dimension & d)
{
	size_t s= d.size ();
	if (s == 0)
		os << "(vacia)";
	else
	{
		os << '(';
		for (size_t i= 0; i < s; ++i)
		{
			os << d [i];
			if (i < s -1)
				os << ", ";
		}
		os << ')';
	}
	return os;
}

// Fin de dim.cpp

⌨️ 快捷键说明

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