All pastes #47885 Raw Edit

Mine

public text v1 · immutable
#47885 ·published 2006-04-02 17:26 UTC
rendered paste body
// Zadanie 18 z rodziału 16 książki
// "Thinking in C++. Edycja polska"
// (c) Bruce Eckel 2000
// Autor: Marcin Gil 26641 4IID

#include "require.h"
#include <iostream>
#include <sstream> // "Strumienie lancuchowe"
#include <cstring>
using namespace std;

template<class T, int sz = 100> 
class IntArray {
  T i[sz];
public:
  IntArray() { memset(i, 0, sz* sizeof(*i)); }
  T& operator[](T x) {
    require(x >= 0 && x < sz,
      "IntArray::operator[] poza zakresem");
    return i[x];
  }
  friend ostream& operator<<(ostream& os, const IntArray<T, sz>& ia);
  friend istream& operator>>(istream& is, IntArray<T, sz>& ia);
};

template<class T, int sz> 
ostream& IntArray<T, sz>::operator<<(ostream& os, const IntArray<T, sz>& ia) {
  for(int j = 0; j < ia.sz; j++) {
    os << ia.i[j];
    if(j != ia.sz -1)
      os << ", ";
  }
  os << endl;
  return os;
}

template<class T, int sz> 
istream& IntArray<T, sz>::operator>>(istream& is, IntArray<T, sz>& ia){
  for(int j = 0; j < ia.sz; j++)
    is >> ia.i[j];
  return is;
}

int main() {
  stringstream input("47 34 56 92 103");
  IntArray<int> I;
  input >> I;
  I[4] = -1; // Wykorzystanie przeciazonego operatora []
  cout << I;
  system("PAUSE");
  return 0;
} ///:~