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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
#1

матрица - C++

22.11.2010, 23:28. Просмотров 559. Ответов 12
Метки нет (Все метки)

как описать динамическую матрицу внутри 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++):

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include&lt;conio.h&gt; void main() { int mas; int N; int max_element; int...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char* argv) { srand(time(NULL)); int mas; ...

Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E единичная матрица порядка n - C++
Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E-единичная матрица порядка n. Помогите...

Определить базовый класс "Матрица" и класс-потомок "Треугольная матрица" - C++
Нужно определить класс &quot;матрица&quot; с возможностью динамического выделения и освобождения памяти, наполнения матрицы, сохранения и чтения из...

матрица - C++
дан двумерный массив чисел (любой) необходимо распределитьв этой матрице нечётные числа по возрастанию,а чётные по убыванию

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
22.11.2010, 23:30 #2
C++
1
a=new  int *[razm];//матрица квадратная по определению.матрица весов
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
885 / 779 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
23.11.2010, 00:16 #4
В качестве параметра надо передавать не только указатель на матрицу, а и количеставо столбцов и сток!!!

C++
1
void ishod(int **a, int razm)
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 01:34  [ТС] #5
но ведь это глобальная переменная.или это не распространяется на функции?
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.11.2010, 01:38 #6
Artishok, НЕ используйте глобальных переменных. Тем более с такими именами.
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 01:49  [ТС] #7
все равно вылетает
после создания в выводе
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
ЧакЭ одобряЭ
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
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 02:01  [ТС] #11
мне надо вывод именно в подпрограмме.
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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);
}
Artishok
ЧакЭ одобряЭ
277 / 276 / 32
Регистрация: 27.12.2009
Сообщений: 1,767
23.11.2010, 02:09  [ТС] #13
Цитата Сообщение от ForEveR Посмотреть сообщение
Artishok, Что вывод впадлу оформить?!
нет.а теперь посмотрев что вывод ничем не отличается от моего увидел что я значение функции Create не присваивал массиву
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2010, 02:09
Привет! Вот еще темы с ответами:

Матрица - C++
Здравствуйте. Прошу помочь. Дана целочисленная квадратная матрица. Определить: • сумму элементов в тех столбцах, которые не...

матрица - C++
Поиск суммы сумм строк матрицы...

Матрица - C++
Помогите написать программу на С: 1) В произвольной квадратной матрице найти max и min элементы и поменять их местами. 2) Найти среднее...

Матрица - C++
короче вот такая хрень)) Дана целочисленная квадратная матрица. Определить: 1). произведение элементов в тех строках, которые не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.11.2010, 02:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru