Как вызвать функцию из main()?

176
27 января 2020, 23:30

Я только начал изучать указатели (1 день) и не могу понять как передать указатель из функции create_matrix() в main(), а в ней уже вызвать другую функцию (print_matrix) с параметром в качестве указателя (массива) из create_matrix().

Если не трудно, то пожалуйста, сделайте замечания по коду.

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void print_matrix(int** matrix, int size_l, int size_s)
{
    for (int x = 0; x < size_l; x++)
    {
        for (int y = 0; y < size_s; y++)
        {
            cout << matrix[x][y] << setw(3);
        }
        cout << "\n";
    }
}

int create_matrix(int size_m, int size_l, int size_s)
{
    int** matrix = new int* [size_m];
    for (int i = 0; i < size_m; i++)
    {
        matrix[i] = new int[size_m];
    }
    cout << "Enter elements of matrix : " << endl;
    for (int x = 0; x < size_l; x++)
    {
        for (int y = 0; y < size_s; y++)
        {
            cout << "[" 
                 << x 
                 << "," 
                 << y 
                 << "]" 
                 << " << ";
            cin >> matrix[x][y];
        }
    }
    return **matrix;
}

int main()
{
    unsigned int array_size;
    unsigned int number_of_lines;
    unsigned int number_of_strings;
    cout << "Enter number of lines : ";
    cin >> number_of_lines;
    cout << "Enter number of strings : ";
    cin >> number_of_strings;

    array_size = number_of_lines * number_of_strings;
    create_matrix(array_size, number_of_lines, number_of_strings);
    //print_matrix(matrix, number_of_lines, number_of_strings);

    return 0;
}
Answer 1

Спасибо пользователю @Harry за ответ !

Рабочий вариант выглядит вот так

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void print_matrix(int** matrix, int size_l, int size_s)
{
    cout << "Matrix :" << endl;
    for (int x = 0; x < size_l; x++)
    {
        for (int y = 0; y < size_s; y++)
        {
            cout << matrix[x][y] << setw(3);
        }
        cout << "\n";
    }
}
int** create_matrix(int size_m, int size_l, int size_s)
{
    int** matrix = new int* [size_m];
    for (int i = 0; i < size_m; i++)
    {
        matrix[i] = new int[size_m];
    }
    cout << "Enter elements of matrix : " << endl;
    for (int x = 0; x < size_l; x++)
    {
        for (int y = 0; y < size_s; y++)
        {
            cout << "[" 
                 << x 
                 << "," 
                 << y 
                 << "]" 
                 << " << ";
            cin >> matrix[x][y];
        }
    }
    return matrix;
}

int main()
{
    unsigned int array_size;
    unsigned int number_of_lines;
    unsigned int number_of_strings;
    cout << "Enter number of lines : ";
    cin >> number_of_lines;
    cout << "Enter number of strings : ";
    cin >> number_of_strings;

    array_size = number_of_lines * number_of_strings;
    int** matrix = create_matrix(array_size, number_of_lines, number_of_strings);
    print_matrix(matrix, number_of_lines, number_of_strings);

    return 0;
}
READ ALSO
undefined reference to `Magick::Image::Image()&#39;

undefined reference to `Magick::Image::Image()'

Подскажите, чего не хватает?

168
std::thread join - виснет [закрыт]

std::thread join - виснет [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

134