15 / 0 / 0
Регистрация: 23.09.2019
Сообщений: 5
1

Вывод двухмерного массива из функции

21.11.2019, 00:07. Показов 1386. Ответов 1

Author24 — интернет-сервис помощи студентам
Необоходимо данную матрицу ввести в функцию, произвести транспонирование, и вывести транспонованую матрицу.
Создал библиотеку под это дело, но выбивает ошибку при компиляции.
Опишите в чем моя проблема, или дайте пожалуйста простой пример с вводом матрицы->обработкой->выводом из функции.

Моя программа:

Листинг transpos_matrix.h
C++
1
2
3
4
5
6
7
#ifndef TRANSPOS_MATRIX_H_INCLUDED
#define TRANSPOS_MATRIX_H_INCLUDED
 
float* trpos(float (*A)[10][10], int row, int colum);
 
 
#endif // TRANSPOS_MATRIX_H_INCLUDED
Листинг transpos_matrix.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "transpos_matrix.h"
 
float* trpos(float (*A)[10][10], int row, int colum)
{
  float Arr[10][10];
  int i,j;
  for (i=0;i<row;i++)
    for (j=0; j<colum;j++)
  {
      Arr[j][i]=(*A)[i][j];
  }
  float (*pArr)[10][10] = &Arr;
  return pArr[10][10];
}
Листинг main.cpp
C++
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
//#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "transpos_matrix.h"
 
//using namespace std;
 
int main()
{
    int row,colum;
printf("Size of array=\nrow="); scanf("%d",&row);
printf("colum="); scanf("%d",&colum);
float Arr[10][10];
float (*pArr)[10][10]=&Arr;
//Запись масива
for (int i=0;i<row;i++)
    for (int j=0; j<colum;j++)
{
    printf("Arr[%d][%d]=",i+1,j+1);
    scanf("%f",&(*pArr)[i][j]);
}
//Вывод заданого масива
printf("\n\nYours array:\n\n");
for (int i=0;i<row;i++)
    for (int j=0; j<colum;j++)
    {
        printf("%1.3f  ",(*pArr)[i][j]);
        if (j==colum-1) printf("\n\n");
    }
//Транспонирование масива
float(*TArr)[10][10];
(*TArr)[10][10]=trpos(*pArr,row,colum);
 
}
Ошибка: cannot convert 'float (*)[10]' to 'float (*)[10][10]' for argument '1' to 'float* trpos(float (*)[10][10], int, int)'
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2019, 00:07
Ответы с готовыми решениями:

Вывод двухмерного массива на экран
Есть двумерный массив,я провел операции над ним(отсортировал по убыванию и переставил местами...

Функция: вывод двухмерного массива
помогите с функцыей вывода двухмерного массива немогу розобратса с параметрами

Вывод двухмерного массива в файл *.txt.
Как вывести двухмерный массив iMatrice в файл? Вывод будет зациклен по ходу обновления параметров...

организовать ввод-вывод одно- и двухмерного массива
помогите плиз как организовать ввод-вывод одно- и двухмерного массива!!! размер должен задавать...

1
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
21.11.2019, 08:00 2
Лучший ответ Сообщение было отмечено CptnRedBeard как решение

Решение

C
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
50
51
52
53
54
55
56
57
58
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
 
void trpos(double A[10][10], double Arr[10][10], int row, int colum)
{
    int i, j;
    for (i = 0; i<row; i++)
        for (j = 0; j<colum; j++)
        {
            Arr[j][i] = A[i][j];
        }
}
void Print(double A[10][10], int row, int colum)
{
    //Вывод заданого масива
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < colum; j++)
        {
            printf("%7.3lf  ", A[i][j]);
        }
        printf("\n");
    }
}
void Input(double A[10][10], int row, int colum)
{
 
    for (int i = 0; i<row; i++)
        for (int j = 0; j<colum; j++)
        {
            printf("Arr[%d][%d]=", i + 1, j + 1);
            scanf("%lf", &A[i][j]);
        }
    getchar(); // удалить из входного потока оставшийся там \n
}
int main()
{
    double Arr[10][10];
    double Res[10][10];
    int row, colum;
    printf("Size of array=\nrow="); scanf("%d", &row);
    if (row > 10)row = 10;
    printf("colum="); scanf("%d", &colum);
    if (colum > 10)colum = 10;
    //ввод масива
    Input(Arr, row, colum);
    //Вывод заданого масива
    printf("\n\nYours array:\n\n");
    Print(Arr, row, colum);
    //Транспонирование масива
    trpos(Arr,Res, row, colum);
    //Вывод результата масива
    printf("\n\nResult array:\n\n");
    Print(Res, colum,row);
    getchar();
    return 0;
}
1
21.11.2019, 08:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2019, 08:00
Помогаю со студенческими работами здесь

Передача двухмерного массива функции
Подскажите пожалуйста как передать статический массив array в функцию fn(), т.е. #include...

Объявление двухмерного динамического массива в функции
Подскажите, как объявить динамический массив размерности n*n. Допустим есть функция void F1(...,...

Блок-схемы,одномерного массива,двухмерного, и функции.
Всем здрасте, помогите с блок схемами может у кого есть для данных програм.Очень похожие,или у кого...

Выделение памяти для двухмерного массива внутри функции
Здравствуйте. Предположим, есть код: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru