Creating a grid with totals

Dec 30, 2012 at 12:13am
Hello all!

I need some help with a project:
The user enters 9 integers to fill in a 3 x 3 grid; determine the totals horizontally and vertically. For example:

1 | 2 | 3 = 6
4 | 5 | 6 = 15
7 | 8 | 9 = 24
--|---|--
12 15 18

I'm using Microsoft Visual Studio. So far, this is my code.

#include <iostream>
using namespace std;
int main() {
int rows;
int cols;
int num;
int size = 3;
rows = 0;
while (rows < size) {
cols = 0;
while (cols < size) {
cols = (cols + 1);
cout << cols << " | " << endl;
}
rows = (rows + 1);
cout << endl;
}
system("pause");
return 0;
}

I'm getting confused on how to add the totals and how to fix the numbers so that they show up the correct way. When I added that cout << cols << " | " << endl; line, it made my numbers appear in all one column instead of 3. If anyone can help me fix this up soon, I would really appreciate it. I'm stuck on how to finish it. Thank you!
Dec 30, 2012 at 12:23am
remove the endl.
Dec 30, 2012 at 12:30am
Oh thank you! Now it looks a little better! Thanks for helping me fix that part
Dec 30, 2012 at 12:32am
use cin.get() instead of system("pause")
Dec 30, 2012 at 1:32am
Not sure if the system("pause") is really going to make that much of a difference in the grand scheme of things. Okay so I figured out that I need to add in an array and add more in to try and complete this. I have this so far:

#include <iostream>
using namespace std;
int main() {
int cols;
int num[9];
int number;
int counter = 0;
int rows = 0;
int size = 3;
while (counter < 9) {
cout << "Enter a number between 0 and 100: ";
cin >> number;
while ((number < 0) || (number > 100)) {
cout << "Please enter a number between 0 and 100: ";
cin >> number;
}
num[counter] = number;
counter = (counter + 1);
}
while (rows < size) {
cols = 0;
while (cols < size) {
cols = (cols + 1);
cout << cols << " | ";
}
rows = (rows + 1);
cout << endl;
}
system("pause");
return 0;
}


Obviously it's still not giving me the output I need but I keep getting stuck just when I think I have it figured out. Any suggestions? Thanks!
Last edited on Dec 30, 2012 at 2:20am
Dec 30, 2012 at 3:57am
a program or an application only do stuffs you tell it to do
check your code line by line what do you they will do and you will find out right away

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
int main() {
int cols;
int num[9];
int number;
int counter = 0;
int rows = 0;
int size = 3;
while (counter < 9) {
cout << "Enter a number between 0 and 100: ";
cin >> number;
while ((number < 0) || (number > 100)) {
cout << "Please enter a number between 0 and 100: ";
cin >> number;
}
num[counter] = number;
counter = (counter + 1);
}
counter = 0;
while (rows < size) {
cols = 0;
while (cols < size) {
cout << num[counter] << " | ";
cols = (cols + 1);
counter++;
}
rows = (rows + 1);
cout << endl;
}
system("pause");
return 0;
}


this is not the final program u want, but just corrected the mistake you did
Last edited on Dec 30, 2012 at 3:57am
Dec 30, 2012 at 12:04pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <limits>
#include <iostream>
#include <iomanip>

int getNumber( int min, int max )
{
    int input ;
    do
    {
        if ( !std::cin )
        {
            std::cin.clear() ;  //clear error state and ignore the rest of the line.
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n') ;
        }

        std::cout << "Enter a number [" << min << ", " << max << "]: " ;

    } while ( !(std::cin >> input ) || (input < min || input > max) ) ;

    return input ;
}

int main() {
    int num[9];
 
    for ( unsigned i=0; i<9; ++i )
        num[i] = getNumber(0,100) ;

    for ( unsigned row = 0;  row < 3;  ++row ) 
    {
        int rowSum = 0 ;
        unsigned col ;
        for ( col = 0;  col < 2; ++col )    
        {
            rowSum += num[col+row*3] ;
            std::cout << std::setw(3) << num[col+row*3] << '|' ;
        }
            
        rowSum += num[col+row*3] ;
        std::cout << std::setw(3) << num[col+row*3] << " = " 
                  << std::setw(3) << rowSum << '\n' ;
    }

    std::cout << "---|---|---\n" ;

    for ( unsigned col = 0 ; col < 3; ++col )
        std::cout << std::setw(3) << num[col]+num[col+3]+num[col+6]  << ' ' ; 
    std::cout << '\n' ;
}
Dec 30, 2012 at 8:11pm
Wow thank you! I changed my coding around a little bit. I just need to figure out how to get the totals at the bottom of each column and at the end of each row. I'd like to still keep the same code I have (obviously with some changes to it). The asterisks are where the totals are supposed to be. Thanks

#include <iostream>
using namespace std;
int main() {
int cols = 0;
int num[9];
int number;
int counter = 0;
int rows = 0;
int size = 3;
int rowsum = 0;
while (counter < 9) {
cout << "Enter a number between 0 and 100: ";
cin >> number;
while ((number < 0) || (number > 100)) {
cout << "Please enter a number between 0 and 100: ";
cin >> number;
}
num[counter] = number;
counter = (counter + 1);
}
int counter2 = 0;
while (counter2 < 9) {
cout << num[counter2] << " | ";
if ((counter2 + 1) % 3 == 0) {
cout << " = *" << endl;
}
counter2++;
}
cout << "--|--|--" << endl;
rowsum += num[cols+rows*3];
cin >> rowsum;
cout << rowsum;
cout << "* ";
cout << "* ";
cout << "* " << endl;
system("pause");
return 0;
}
Topic archived. No new replies allowed.