Witam mam do wykonania taki oto program jak w załączniku, udało mi się go zrobić ale mam problemy z punktem B i C. Konkretnie nie wiem jak zrobić sprawdzanie oraz nie działa odczytywanie danych wejściowych jak również zapis do pliku. Dałbyś radę ktoś pomóc?

IMG_20201124_100102.jpg

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;

int main()
  {
      cout<<"Podaj Y X: ";
      int Y,X;
      cin>>Y>>X;
      if((X<=0)||(Y<=0));
      int size=Y*X,n=0,y=0,x=0,col=X,width=(int)log10(size)+1,*tb=new int[size];
      --X;
      --Y;
      while((y<=Y)&&(x<=X))
        {
         for(int i=x;(y<=Y)&&(i<=X);++i) tb[y*col+i]=++n;
         ++y;
         for(int i=y;(x<=X)&&(i<=Y);++i) tb[i*col+X]=++n;
         --X;
         for(int i=X;(y<=Y)&&(i>=x);--i) tb[Y*col+i]=++n;
         --Y;
         for(int i=Y;(x<=X)&&(i>=y);--i) tb[i*col+x]=++n;
         ++x;
        }
      for(int i=0;i<size;++i)
        {
         bool f=(i%col);
         if((!f)&&(i)) cout<<endl;
         cout<<setw(width+f)<<tb[i];
        }
   return 0;
  }