/* * rmatrix.cpp - the client code for matrix * (C) Porkolab Zoltan, ELTE, Budapest, Hungary * (C) 2003 */ // pragma .. #include <iostream> #include <string> #include <algorithm> #include "rmatrix.h" int main() { int yourMark(1); //* 2-es rmatrix<int> m1(3,4,5); // creates matrix of 3x4x5 of integers 0 rmatrix<double> m2(2,2,2); // creates matrix of 2x2x2 of doubles 0.0 rmatrix<std::string> m3(5,4,3); // creates matrix of 5x4x3 of strings "" m1.at(2,3,4) = 5; // m1(2,3,4) = 5 m3.at(0,1,2) = "Hello"; // m3(0,1,2) = "Hello" m1.at(0,0,0) = 4; // m1(0,0,0) = 4 if ( sizeof(m3) < 40 && // avoid stupid implementations m2.size() == 2*2*2 && m3.size() == 5*4*3 ) // logical size yourMark += m1.at(2,3,4) - m1.at(0,0,0); //*/ //* 3-as const rmatrix<int> cm = m1; --m1(0,0,0); yourMark += cm(0,0,0) - m1(0,0,0); //*/ //* 4-es if ( 0 == cm(1,2,3) && ! cm.stored(1,2,3) ) ++yourMark; // stores only explicitly assigned elements m1(1,2,3) = 0; // stores 0 at m1(1,2,3) if ( 0 != m1(1,2,3) || ! m1.stored(1,2,3) ) --yourMark; //*/ //* 5-os int elements_in_cm = 0; int elements_in_m1 = 0; for ( rmatrix<int>::const_iterator ci1 = cm.begin(); ci1 != cm.end(); ++ci1) ++elements_in_cm; for ( rmatrix<int>::const_iterator ci2 = m1.begin(); ci2 != m1.end(); ++ci2) ++elements_in_m1; yourMark += (elements_in_cm + 1 == elements_in_m1); //*/ std::cout << "Your mark is " << yourMark << std::endl; return 0; }