Суммирование всех чисел в пересмотренной матрице - PullRequest
0 голосов
/ 20 июля 2010

Здравствуйте. Недавно я задал вопрос о том, как сделать следующее:

Напишите функцию, которая суммирует все целые числа в матрице целых чисел, используя следующий заголовок:

const int SIZE = 4;
double sumMatrix (const double m [] [SIZE] , int rowSize, int columnSize) ; 

Напишите тестовую программу, которая читает матрицу 4 на 4 и отображает сумму всех ее элементов.Вот примерный прогон:

Введите строку матрицы 4by4 строка за строкой:

1 2 3 4 [Enter]
5 6 7 8 [Enter]
9 10 11 12 [Enter]
13 14 15 16 [Enter]
Sum of the matrix is 136

Я попытался использовать все возможные варианты, но проблема, возможно, в том, что мне просто нужно вернуться косновы и учить некоторые базовые вещи, которые я пропустил, но вот что я имею до сих пор.Исправления и решения, а также помощь в любой форме будет принята с благодарностью.

#include <iostream>
using namespace std;

const int COLUMN_SIZE = 4;

int sum(const int a[] [COLUMN_SIZE], int rowSize)
{
    int total = 0;
    for (int row = 0; row < rowSize; row++)
    {
        for (int column = 0; column < COLUMN_SIZE; column++)
        {
            total += a[row][column];
        }
    }

    return total;
}
int main()
{
    int m[4][4]=
    {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12},
        {13,14,15,16}
    };
    cout<< "Sum of the matrix"<< sum(m,4) << endl;
    return 0;
}

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Функция чтения, которая вам нужна, будет выглядеть почти так же, как ваша функция печати:

void read(const int a[] [COLUMN_SIZE], int rowSize)
{
    for (int row = 0; row < rowSize; row++)
    {
        for (int column = 0; column < COLUMN_SIZE; column++)
        {
            cout << "Enter number for [" << row << "][" << column << "]: ";
            cin >> a[row][column];
        }
    }
}

(В качестве сноски: если вы можете обобщить цикл и иметь одну функцию, которую вы передаете 'read' или«Суммируйте», вы уже на пути к тому, чтобы быть крутым)

edit: думаю, я не прочитал бит «строка за строкой» вопроса.пожимают плечами.

0 голосов
/ 06 апреля 2013

Три года спустя, ха-ха, но вы можете ввести элементы cols, разделяя их пробелами, и использовать Enter, чтобы получить элементы другой строки.

Улучшение вашего кода.Просто посмотрите и поймите.Дидактическая программа лучше, чем тысяча слов: p

#include <iostream>
using namespace std;

const int COLUMN_SIZE = 4;

int sum(const int a[] [COLUMN_SIZE], int rowSize)
{
    int total = 0;
    for (int row = 0; row < rowSize; row++)
    {
        for (int column = 0; column < COLUMN_SIZE; column++)
        {
            total += a[row][column];
        }
    }

    return total;
}

void showmatrix(const int a[] [COLUMN_SIZE], int rowSize, const char *name)
{
    int row_index, col_index;

    cout<< name << " [" << rowSize << "][" << COLUMN_SIZE << "] =" << endl;

    for(row_index = 0; row_index < rowSize; row_index++)
    {
        for(col_index = 0; col_index < COLUMN_SIZE; col_index++)
        {
            if(col_index == 0)
            {
                if(row_index ==0)
                {
                    cout<< "\t /";
                }
                else if(row_index == rowSize - 1)
                {
                    cout<< "\t \\";
                }
                else
                {
                    cout<< "\t|";
                }
            }

            cout<< "\t" << a[row_index][col_index];

            if(col_index == 3)
            {
                if(row_index ==0)
                {
                    cout<< "\t\\";
                }
                else if(row_index == rowSize - 1)
                {
                    cout<< "\t/";
                }
                else
                {
                    cout<< "\t |";
                }
            }
        }
        cout<< endl;
    }

    cout<< endl;
}

int main()
{
    int m[4][4]=
    {
        {1,2,3,4},
        {5,6,7,8},
        {9,10,11,12},
        {13,14,15,16}
    };

    int row_index, col_index;

    cout<< "There is a stored matrix on that program. It is shown below: " << endl << endl;

    showmatrix(m, 4, "Stored_Matrix");

    cout<< "The sum of elements of that stored matrix is: "<< sum(m,4) << endl << endl;

    cout<< "Now, let's enter another 4 x 4 matrix." << endl << endl;
    cout<< "(Note: You can use <space> character to separate column elements or <enter>" << endl;
    cout<< "key to enter a new row.)" << endl;
    cout<< "(Note 2: Really, you can use both to separate each one of the 16 matrix" << endl;
    cout<< "elements, but do not enter more than that or the program will do some error)." << endl << endl;

    for(row_index = 0; row_index < 4; row_index++)
    {
        for(col_index = 0; col_index < 4; col_index++)
        {
            cin>> m[row_index][col_index];
        }
    }

    cout<< endl;

    cout<< "The entered matrix is below:" << endl << endl;

    showmatrix(m, 4, "Entered_Matrix");

    cout<< "The sum of elements of that entered matrix is: "<< sum(m,4) << endl << endl;

    //only to do not close console window on Windows
    cout<< "Program ended." << endl << endl << "Press something to exit.";
    cin.get();
    cin.get();

    return 0;
}

Я надеюсь, что вы можете использовать ее на перерождении или после разработки машины времени, чтобы использовать эту идею на домашней работе 2010 года.Поскольку вы используете тег C ++ Builder для этого вопроса, вы можете создать новое консольное приложение и скопировать и вставить код выше, переписав сгенерированный.Используйте F9 для компиляции и запуска.

...