Форум программистов, компьютерный форум CyberForum.ru

матрица - C++

Восстановить пароль Регистрация
 
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
22.11.2010, 23:28     матрица #1
как описать динамическую матрицу внутри main() но создавать в функции?
на этот код компилятор ругается

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int razm;
 
void create(int **a)
{   
    //ГЄГ*æäûé ýëåìåГ*ГІ ГЅГІГ® ñòîèìîñòü ГЇГ® êîòîðîé ìîæГ*Г® ïåðåéòè ГЁГ§ îäГ*îé äóãè Гў äðóãóþ
    int **a=new  int *[razm];//Г¬Г*òðèöГ* ГЄГўГ*äðГ*ГІГ*Г*Гї ГЇГ® îïðåäåëåГ*ГЁГѕ.Г¬Г*òðèöГ* âåñîâ
    for(int i=0;i<razm;i++)
      a[i]=new int[razm];//ГЄГ*ГЄ ГЎГ» ГіГЄГ*Г§Г*òåëü Г*Г* Г¬Г*Г±Г±ГЁГў
    
    for(int i=0;i<razm;i++)
     for(int j=0;j<razm;j++)
      cin>>a[i][j];
      
}
 
int main()
{
    cout<<"Size of matrix"<<endl;
    cin>>razm;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2010, 23:28     матрица
Посмотрите здесь:

матрица C++
матрица C++
C++ матрица
C++ Матрица
C++ Матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
22.11.2010, 23:30     матрица #2
C++
1
a=new  int *[razm];//матрица квадратная по определению.матрица весов
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 00:00  [ТС]     матрица #3
а если эту матрицу передать в другую функцию?

C++
1
2
3
4
5
6
7
8
9
10
11
12
void ishod(int **a)
{
    cout<<"Matrix"<<endl;
    for(int i=0;i<razm;i++)
    {
       for(int j=0;j<razm;j++)
       cout<<a[i][j]<<" ";
       
       cout<<endl;
    }
    getchar();
}
вылетает при такой передаче
C++
1
2
3
 
int **matrix;
ishod(matrix);
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.11.2010, 00:16     матрица #4
В качестве параметра надо передавать не только указатель на матрицу, а и количеставо столбцов и сток!!!

C++
1
void ishod(int **a, int razm)
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 01:34  [ТС]     матрица #5
но ведь это глобальная переменная.или это не распространяется на функции?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.11.2010, 01:38     матрица #6
Artishok, НЕ используйте глобальных переменных. Тем более с такими именами.
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 01:49  [ТС]     матрица #7
все равно вылетает
после создания в выводе
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.11.2010, 01:53     матрица #8
Artishok,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
void create(int **a, int n)
{       
        //каждый элемент это стоимость по которой можно перейти из одной дуги в другую
        a=new  int *[n];//матрица квадратная по определению.матрица весов
        for(int i=0;i<n;i++)
          a[i]=new int[n];//как бы указатель на массив
        
        for(int i=0;i<n;i++)
         for(int j=0;j<n;j++)
          cin>>a[i][j];          
}
 
int main()
{
        int** Arr=0;
        int razm;
        cout<<"Size of matrix"<<endl;
        cin>>razm;
        create(Arr, razm);
}
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 01:56  [ТС]     матрица #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Artishok,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
void create(int **a, int n)
{       
        //каждый элемент это стоимость по которой можно перейти из одной дуги в другую
        a=new  int *[n];//матрица квадратная по определению.матрица весов
        for(int i=0;i<n;i++)
          a[i]=new int[n];//как бы указатель на массив
        
        for(int i=0;i<n;i++)
         for(int j=0;j<n;j++)
          cin>>a[i][j];          
}
 
int main()
{
        int** Arr;
        int razm;
        cout<<"Size of matrix"<<endl;
        cin>>razm;
        create(Arr, razm);
}

And I say:"So?"
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.11.2010, 01:58     матрица #10
Вот так будет проще всего.

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
#include <iostream>
 
using namespace std;
 
int** create(int **a, int n)
{       
        //каждый элемент это стоимость по которой можно перейти из одной дуги в другую
        a=new  int *[n];//матрица квадратная по определению.матрица весов
        for(int i=0;i<n;i++)
          a[i]=new int[n];//как бы указатель на массив
        
        for(int i=0;i<n;i++)
         for(int j=0;j<n;j++)
          cin>>a[i][j];
        return a;
}
 
int main()
{
        int** Arr=0;
        int razm;
        cout<<"Size of matrix"<<endl;
        cin>>razm;
        Arr=create(Arr, razm);
        for(int i=0; i<razm; ++i)
        {
            for(int j=0; j<razm; ++j)
            {
                cout<<Arr[i][j]<<' ';
            }
            cout<<'\n';
        }
}
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 02:01  [ТС]     матрица #11
мне надо вывод именно в подпрограмме.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.11.2010, 02:05     матрица #12
Artishok, Что вывод впадлу оформить?!

Добавлено через 1 минуту
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
#include <iostream>
 
using namespace std;
 
int** create(int **a, int n)
{       
        //каждый элемент это стоимость по которой можно перейти из одной дуги в другую
        a=new  int *[n];//матрица квадратная по определению.матрица весов
        for(int i=0;i<n;i++)
          a[i]=new int[n];//как бы указатель на массив
        
        for(int i=0;i<n;i++)
         for(int j=0;j<n;j++)
          cin>>a[i][j];
        return a;
}
 
void print(int** a, int n)
{
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<n; ++j)
        {
            std::cout<<a[i][j]<<' ';
        }
        std::cout<<'\n';
    }
}
 
int main()
{
        int** Arr=0;
        int razm;
        cout<<"Size of matrix"<<endl;
        cin>>razm;
        Arr=create(Arr, razm);
        print(Arr, razm);
}
Добавлено через 2 минуты
Или так.
Но это несколько нехорошо из-за неочевидности происходящего.

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
#include <iostream>
 
using namespace std;
 
void create(int **&a, int n)
{       
        //каждый элемент это стоимость по которой можно перейти из одной дуги в другую
        a=new  int *[n];//матрица квадратная по определению.матрица весов
        for(int i=0;i<n;i++)
          a[i]=new int[n];//как бы указатель на массив
        
        for(int i=0;i<n;i++)
         for(int j=0;j<n;j++)
          cin>>a[i][j];
}
 
void print(int** a, int n)
{
    for(int i=0; i<n; ++i)
    {
        for(int j=0; j<n; ++j)
        {
            std::cout<<a[i][j]<<' ';
        }
        std::cout<<'\n';
    }
}
 
int main()
{
        int** Arr=0;
        int razm;
        cout<<"Size of matrix"<<endl;
        cin>>razm;
        create(Arr, razm);
        print(Arr, razm);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 02:09     матрица
Еще ссылки по теме:

С++ матрица C++
C++ матрица...
C++ матрица

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

Или воспользуйтесь поиском по форуму:
Artishok
ЧакЭ одобряЭ
 Аватар для Artishok
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 02:09  [ТС]     матрица #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Artishok, Что вывод впадлу оформить?!
нет.а теперь посмотрев что вывод ничем не отличается от моего увидел что я значение функции Create не присваивал массиву
Yandex
Объявления
23.11.2010, 02:09     матрица
Ответ Создать тему
Опции темы

Текущее время: 10:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru