1

I am new to C++ (and coding in general) and am learning about arrays. The purpose of the assignment was to have a user input square parameters and numbers to fill each row. My program's job was to take user input numbers and validate sums against rows, columns, and diagonals.

Well, originally when I wrote the program in main, it worked. However, I have to get the program to run in a bool function and return a false if it fails. For the life of me I cannot figure out a way to make it work. I keep getting fatal errors for 1 unresolved externals. Can someone please help me? I've exhausted all resources.

Thank you.

    #include <iostream>
   #include <iomanip>
   #include <fstream>

   using namespace std;

   bool validateSums(int, int);

   int main()
   {
    int row,
        square[10][10];
    bool match;

    cout << "Enter the size of your square by the # of rows (e.g. 3 would yield a 3x3 square).\n"
        << "Please keep the # to 10 or below." << endl;
    cin >> row;

    if (row >= 1 && row <= 10)
    {
        cout << "Your square will be " << row << "  x " << row << " big." << endl;

        for (int index = 0; index < row; index++)
        {
            cout << "List " << row << " numbers for row " << (index + 1)
                << " separated by a space." << endl;
            for (int colindex = 0; colindex < row; colindex++)
            {
                cin >> square[index][colindex];
            }
        }
        cout << "You listed \n";
        for (int index = 0; index < row; index++)
        {
            for (int colindex = 0; colindex < row; colindex++)
            {
                cout << setw(2) << square[index][colindex] << " ";
            }
            cout << endl;
        }

        match = validateSums(row, square);
        cout << match << endl;
    }
    else
    {
        cout << "You must enter a # between 1-10." << endl;
    }

    return 0;
   }

   bool validateSums(int row, int square[][10])
   {
    //summation of 1st row
    int total = 0,
        compareTotal = 0;

    for (int colindex = 0; colindex < row; colindex++)
    {
        total += square[0][colindex];
    }

    //calculation of sum for rest of rows while comparing to total
    for (int index = 1; index < row; index++)
    {
        for (int colindex = 0; colindex < row; colindex++)
        {
            compareTotal += square[index][colindex];
        }

        if (compareTotal != total)
        {
            cout << "The rows entered do not match." << endl;
            break;
            return false;
        }
        else
        {
            compareTotal = 0;
        }
    }

    //summation of 1st column
    total = 0;
    for (int index = 0; index < row; index++)
    {
        total += square[index][0];
    }
    cout << "Sum of column 1 is " << total << endl;

    //calculation of sum for rest of columns while comparing to total
    compareTotal = 0;
    for (int colindex = 1; colindex < row; colindex++)
    {
        for (int index = 0; index < row; index++)
        {
            compareTotal += square[index][colindex];
        }

        if (compareTotal != total)
        {
            cout << "The columns entered do not match." << endl;
            break;
            return false;
        }
        else
        {
            compareTotal = 0;
        }
    }

    //summation of 1st diagonal
    total = 0;
    for (int index = 0; index < row; index++)
    {
        total += square[index][index];
    }
    cout << "Sum of diagonal 1 is " << total << endl;

    //calculation of sum of the other diagonal
    compareTotal = 0;
    for (int index = 0; index < row; index++)
    {
        compareTotal += square[index][row - 1 - index];
    }
    if (compareTotal != total)
    {
        cout << "The diagonals entered do not match." << endl;
        return false;
    }
}

Error message (pasted from comment):

1>------ Build started: Project: ConsoleApplication18, Configuration: Debug Win32 ------
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Users\Sasha\Documents\CS 161\Assignment 4\ConsoleApplication18\Debug\ConsoleApplication18.exe : fatal error LNK1120: 1 unresolved externals
==========  Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
3
  • 1
    please post the error message. You also have if a break before return in if (compareTotal != total){...} in validateSums, so the return won't reached. Commented Nov 18, 2014 at 0:21
  • 1>------ Build started: Project: ConsoleApplication18, Configuration: Debug Win32 ------ 1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 1>C:\Users\Sasha\Documents\CS 161\Assignment 4\ConsoleApplication18\Debug\ConsoleApplication18.exe : fatal error LNK1120: 1 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== Commented Nov 18, 2014 at 0:23
  • Next time, please edit you question and paste the error message in your question. Commented Nov 18, 2014 at 0:34

2 Answers 2

2

you say

 bool validateSums(int, int);

then

bool validateSums(int row, int square[][10])

These are not the same. The compiler and linker is trying to find the validateSums function that takes 2 ints. You didn't supply one - hence the error message

Not wanting to read all your code I don't know which one you actually need: int,int or int,[][10].

Sign up to request clarification or add additional context in comments.

Comments

1

Your problem seems to be that the declaration of the function validateSums on the top doesn't correspond with the way you call it and the actual definition.

Compare your declaration at the top:

bool validateSums(int, int);

and the definition after main:

bool validateSums(int row, int square[][10])
{
    // ...
}

1 Comment

YES! That did the trick! Thanks! :) I used [][10] in my prototype. I can't believe that's ALL it took. -_-

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.