#include <iostream>

using namespace std;


class Ksiazka {
  private:
    char A[20];
    char T[30];
    unsigned S;
    double C;
  public:
    Ksiazka() {A[0] = T[0] = '\0'; S=0; C=0;}
    Ksiazka(const char autor[], const char tytul[], const unsigned stron=0, const double cena=0) {
      unsigned As=sizeof(A);
      unsigned as=strlen(autor);
      if (As<=as) as = As-1;
      memcpy(A, autor, as);
      A[as] = '\0';
      unsigned Ts=sizeof(T);
      unsigned ts=strlen(tytul);
      if (Ts<=ts) ts = Ts-1;
      memcpy(T, tytul, ts);
      T[ts] = '\0';
      S = stron;
//      S = stron>=0?stron:0;
      C = cena>=0?cena:0;
    };
    void Autor()const;
    void Tytul()const;
    void Cena()const;
    void Stron()const;
    void Info()const;
    void ZmienCene();
};

void Ksiazka::DrukujAutor()const {
  cout << A;
  return;
}
void Ksiazka::DrukujTytul()const {
  cout << T;
  return;
}
void Ksiazka::DrukujCena()const {
  cout << C;
  return;
}
void Ksiazka::DrukujStron()const {
  cout << S;
  return;
}
void Ksiazka::Info()const {
  cout << "Autor: " << A << endl;
  cout << "Tytul: " << T << endl;
  cout << "Stron: " << S << endl;
  cout << "Cena:  " << C << endl;
  return;
}

void Ksiazka::ZmienCene()
{
  double NC;
  cout << "Podaj nowa cene: ";
  cin >> NC;
  if (cin)
  {
    C = NC;
  } else {
    cout << "Podano nieprawidłową cenę!" << endl;
  }
  return;
}

int main()
{
  Ksiazka A;
  Ksiazka B("Adam Mickiewicz", "Pan Tadeusz", 500, 11.20);
  Ksiazka D("012345678901234567890123456789", "Pan Tadeusz", 500, 11.20);
  Ksiazka C("", "DUPA", 500, -11.20);
  cout << " -- Ksiazka A -- " << endl;
  A.Info();
  cout << " -- Ksiazka B -- " << endl;
  B.Info();
  cout << " -- Ksiazka C -- " << endl;
  C.Info();
  cout << " -- Ksiazka D -- " << endl;
  D.Info();
  D.ZmienCene();
  cout << " -- Ksiazka D -- " << endl;
  D.Info();
  return 0;
}
