/*
Podsumowanie wierszy i kolumn
Program prosi użytkownika o wypełnienie tablicy o wymiarach 4x4,
drukuje tą tabele podsumowując wiersze i kolumny.
np
              K1          K2          K3          K4        Suma
  W1        1.00        2.00        3.00        4.00       10.00
  W2        2.00        3.00        4.00        5.00       14.00
  W3        3.00        4.00        5.00        6.00       18.00
  W4        4.00        5.00        6.00        7.00       22.00
Suma       10.00       14.00       18.00       22.00

Zwrócić uwagę na wyrównanie kolumn












*/
#include <iostream>
#include <iomanip>
#include <limits>

using namespace std; // w starszych kompilatorach trzeba zakomentować ten wiersz

void Drukuj(double T[][4]);

int main()
  {
   double T[4][4];
   while(true)
     {
      for(int y=0;y<4;)
        {
         cout<<"Podaj "<<(y+1)<<" wiersz tablicy: ";
         for(int x=0;x<4;++x) cin>>T[y][x];
         if(cin) ++y;
         else
           {
            cin.clear();
            cout<<"Blad wprowadzania"<<endl;
           }
         cin.ignore(INT_MAX,'\n');
        }
      cout<<endl;
      Drukuj(T);
      if(cin.get()=='!') break;
      cout<<endl;
     }
   return 0;
  }

void Drukuj(double T[][4])
  {
   cout.setf(ios::fixed);
   double K[4];
   for(int i=0;i<4;++i) K[i]=0;
   cout<<setw(4)<<' ';
   for(int i=1;i<=4;++i) cout<<setw(11)<<'K'<<i;
   cout<<setw(12)<<"Suma"<<endl;
   for(int y=0;y<4;++y)
     {
      cout<<setw(3)<<'W'<<(y+1);
      double S=0;
      for(int x=0;x<4;++x)
        {
         double V=T[y][x];
         S+=V;
         K[x]+=V;
         cout<<setw(12)<<setprecision(2)<<V;
        }
      cout<<setw(12)<<setprecision(2)<<S;
      cout<<endl;
     }
   cout<<"Suma";
   for(int i=0;i<4;++i) cout<<setw(12)<<K[i];
   cout<<endl;
  }

