/********************************************************************
* Tehtävä 3.2
* Viime viikon tehtävä 2.1 siten, että ohjelma kysyy ensin, montako
* riviä ja saraketta luetaan ja luo jokaisen taulukkon rivin dynaamisesti
* new-muuttujalla ennen kyseisen rivin lukemista, sekä tulostamisen
* jälkeen vapauttaa varatun muistin.
*
* Tehtävä 2.1
* Tee ohjelma, joka lukee 5x5-taulukkoon kokonaisluvut ja laskee
* niistä summat riveittäin ja sarakkeittain sekä rivisummien summan
* (joka on samalla sarakesummien summa) ja tulostaa lasketut summat
********************************************************************/
#include <iostream>
#include <string>
using namespace std;
int main (int argc, char * const argv[])
{
cout << "Montako riviä ja saraketta luetaan? Anna rivien lukumäärä..." << endl;
int rivit;
int sarakkeet;
cin >> rivit;
rivit++;
cout << "Anna sarakkeiden lukumäärä..." << endl;
cin >> sarakkeet;
sarakkeet++;
cout << "Sarakkeet ja rivit luettu." << endl;
int **taulukko = new int * [rivit];
int rivisumma = 0;
int sarakesumma = 0;
int x = 0; int y = 0;
srand(time(NULL));
cout << "Tästä alkaa taulukon täyttäminen" << endl;
// Täytetään taulukko ja lasketaan samalla rivisummaa
for (y = 0; y < rivit - 1; y++)
{
taulukko[x] = new int[sarakkeet];
for (x = 0; x < sarakkeet - 1; x++)
{
cout << "Sarakkeet ja rivit asetettu" << endl;
int luku = rand() % 100;
taulukko[x][y] = luku;
// Lasketaan rivisummaa samalla kun täytetään
rivisumma = rivisumma + taulukko[x][y];
cout << "Rivisumma " << rivisumma << endl;
cout << "taulu" << x << "" << y << ":" << taulukko[x][y] << endl;
}
// Sijoitetaan rivisumma rivin viimeiseen soluun, kun muut solut ovat täynnä
cout << "rivisummasolu:" << taulukko[sarakkeet -1][y] << endl;
taulukko[sarakkeet -1][y] = rivisumma;
rivisumma = 0;
}
cout << "Taulukko täytetty." << endl;
// Sarakesumma. Tällä kertaa lasketaan rivisummatkin yhteen.
for (x = 0; x < sarakkeet; x++)
{
for (y = 0; y < rivit - 1; y++)
{
sarakesumma = sarakesumma + taulukko[x][y];
}
taulukko[x][rivit - 1] = sarakesumma;
sarakesumma = 0;
}
cout << "Sarakesummat ja rivisummat laskettu." << endl;
// Ja rintataan vielä koko roska
for (y = 0; y < rivit; y++)
{
for (x = 0; x < sarakkeet; x++)
{
cout << taulukko[x][y] << " | ";
}
// delete [] taulukko[y];
cout <<endl;
}
// delete [] taulukko;
// taulukko = NULL;
return 0;
}