W
W
whatislov2021-06-10 10:31:25
C++ / C#
whatislov, 2021-06-10 10:31:25

How to pass a one-dimensional array from the function of its formation to the function of its output?

How to pass a one-dimensional array from the function of its formation to the function of its output? There is a function to form array B according to certain rules:

int func (int **mas, int n)
{
    int i, j;
    int *masb;

    masb = new int [n];
    for (i =0 ; i < n; i++) {// формирование массива b по условию
            int sum=0;
            if (mas[i][j]<0){
        for (j = i-1; j < n; j++) {
                sum+=mas[i][j];
                masb[i]=sum;
            }
            }
            else{
               for (j = i+1; j < n; j++){
                 sum+=mas[i][j];
                 masb[i]=sum;
               }
            }

        }
        return masb[i];
}

The two-dimensional array mas, in turn, is taken from the main program (where it is read from a file):
int main()
{
setlocale (0,"RUS");
// создание потоков для чтения и записи
ifstream fin;
ofstream fout;
int n, i, j, **mas,*masb;
// если не прописан путь к файлу infile.txt, то он должен находится в папке с программой
// файл outfile.txt можно не создавать, он будет создан в папке с программой
// связь потоков с файлами для чтения и записи соответственно
fin.open ("infile.txt");
fout.open("outfile.txt");
// проверка - открылся ли файл
if (!fin.is_open()) {
    cout<<"Не найден файл";
}
else { // если файл открылся
    fin>>n; // чтение n
    // создание динамического массива mas
    mas = new int *[n];
    for (i = 0; i < n; i++) {
        mas [i] = new int [n];
    }
    // чтение массива из файла
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
                fin >> mas [i][j];
        }
    }
    // действия с массивом по заданию
    ShowArray(mas,n,masb);//вывод массива
    func(mas,n);
}
fin.close();
fout.close();
return 0;
}

How do I pass an array masb (one-dimensional, which is formed by a condition in the func function) to the ShowArray function in order to display it?
ShowArray looks like this:
int ShowArray(int **mas,int n,int *masb){
    ifstream fin;
    ofstream fout;
    fin.open ("infile.txt");
    fout.open("outfile.txt");
    cout << "Размерность массива а: " << endl;
    fout << setw (5) << n << setw (5) << n << endl;
    cout << setw (5) << n << setw (5) << n << endl;
    cout << "Массив а:" << endl;
for (int i = 0; i < n; i++) {//вывод двумерного массива
        for (int  j = 0; j < n; j++) {
            fout << setw(8) << mas [i][j];
            cout << setw(8) << mas [i][j];
        }
    cout << endl;
    }
    cout << endl << endl;
    fout << setw(8) << "массив b: " << endl;// вывод одномерного массива
    cout << setw(8) << "массив b: " << endl;
    for (int i = 0; i < n; i++){
        fout << setw(8) << masb [i];
        cout << setw(8) << masb [i];
    }
    cout << endl << endl;
    fin.close();
    fout.close();
}

A two-dimensional array is displayed normally, a one-dimensional array is not.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
DjTolib, 2021-06-10
@DjTolib

func you call after ShowArray. And of course he can't print anything.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question