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

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

Войти
Регистрация
Восстановить пароль
 
Nadja
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 27
#1

Как передать массив в массив с указателем - C++

15.04.2012, 02:28. Просмотров 372. Ответов 2
Метки нет (Все метки)

Как передать массив в массив с указателем тоесть например массив double c[30][30] в массив **а в этой функции
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <windows.h>//malloc, system("pause")
#include <stdio.h>  //i/o
#include <conio.h>  //getch
#include <math.h>
 
void ShowVector(int n, double * vec);
void PryamoiHod(int n, double **a, double *b);
void ObratniHod(int n, double **a, double *b, double *x);
 
int main()
{
    int i,j,n;
    double **a, *b, *x;
    do
    {
        printf("Enter NUM of equations: ");
        scanf("%d",&n);
        //Выделяем память под матрицу А и векторы В и Х
        a = (double **)malloc(n*sizeof(double));
        b = (double *)malloc(n*sizeof(double));
        x = (double *)malloc(n*sizeof(double));
        for(i = 0; i < n; i++)
        {
            a[i] = (double *)malloc(n*sizeof(double));
            //Ввод a
            for(j = 0; j < n; j++)
            {
                printf("a[%d][%d] = ",i + 1,j + 1);
                scanf("%lf",&a[i][j]);
            }
        }
        //Ввод b
        for(i = 0; i < n; i++)
        {
            printf("b[%d] = ",i + 1);
            scanf("%lf",&b[i]);
        }
        
        printf("\tSee input\r\n");
        printf("Matrix A:\r\n");
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        printf("Vector B:\r\n");
        ShowVector(n, b);
        
        printf("\tSolving on Gauss method\r\n");
        PryamoiHod(n, a, b);
        printf("Forvard Gauss course\r\n");//Прямой ход
        printf("Matrix A:\r\n");
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        printf("Vector B:\r\n");
        ShowVector(n, b);
 
        ObratniHod(n, a, b, x);
        printf("Back Gauss course\r\n");//Обратный ход
        printf("Matrix A:\r\n");
        for(i = 0; i < n; i++)
            ShowVector(n, a[i]);
        printf("Vector B:\r\n");
        ShowVector(n, b);
 
        printf("Results :\r\n");
        ShowVector(n, x);
 
        printf("Press Y for new input\r\n");
        //Чистим память
        free((void *)a);
        free((void *)b);
        free((void *)x);
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
 
void ShowVector(int n, double * vec)
{
    for(int i = 0; i < n; i++)
        printf("%.3f ",vec[i]);
    printf("\r\n");
}
 
void PryamoiHod(int n, double **a, double *b)
{
        double v;
        for(int k = 0,i,j,im; k < n - 1; k++)
        {
                im = k;
                for(i = k + 1; i < n; i++)
                {
                        if(fabs(a[im][k]) < fabs(a[i][k]))
                        {
                                im = i;
                        }
                }
                if(im != k)
                {
                        for(j = 0; j < n; j++)
                        {
                                v                = a[im][j];
                                a[im][j] = a[k][j];
                                a[k][j]  = v;
                        }
                        v     = b[im];
                        b[im] = b[k];
                        b[k]  = v;
                }
                for(i = k + 1; i < n; i++)
                {
                        v               = 1.0*a[i][k]/a[k][k];
                        a[i][k] = 0;
                        b[i]    = b[i] - v*b[k];
                        if(v != 0)
                        for(j = k + 1; j < n; j++)
                        {
                                a[i][j] = a[i][j] - v*a[k][j];
                        }
                }
        }
}
 
void ObratniHod(int n, double **a, double *b, double *x)
{
        double s = 0;
        x[n - 1] = 1.0*b[n - 1]/a[n - 1][n - 1];
        for(int i = n - 2, j; 0 <= i; i--)
        {
                s = 0;
                for(j = i + 1; j < n; j++)
                {
                        s = s+a[i][j]*x[j];
                }
                x[i] = 1.0*(b[i] - s)/a[i][i];
        }
}
. обычное присваивание выдает ошибку о неправильных типах данных, а поэлементное ошибку о перегруженности.Подскажите пожалуйста.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 02:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать массив в массив с указателем (C++):

Матрица как одномерный массив с указателем - C++
Ребят, помогите пожалуйста, нужно создать динамическую матрицу, но без указателя на указатель, можно использовать только просто указатель,...

Как сделать ассоциативный массив с указателем на структуру? - C++
У меня этот код не компилируется #include &lt;map&gt; #include &lt;iostream&gt; struct testStruct { testStruct( int initVal ) { ...

Как передать массив структур в функцию в качестве параметра, чтобы изменения в функции меняли исходный массив? - C++
Допустим есть структура struct Base { int a; int b; int c; }; В основном методе main() объявим массив...

Не могу разобраться как передать корректно передать массив из функции в функцию - C++
//--------------------------------------------------------------------------- #pragma hdrstop ...

Массив с указателем - C++
при формировании выходной строки каждый символ должен дублироваться. Например дана abc, а при выходе aabbcc/ Все это должно быть...

Рекурсия с указателем на массив - C++
с мэйна вызываю функцию в которую передаю ссылку посредством указателя на массив. потом делаю рекурсию в самой вызыванной функции: int...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
15.04.2012, 03:56 #2
Покажите где именно в коде выдает ошибку, весь кода смотреть утомительно, и мало кто захочет. На какие строки указывает ошибка?
0
Nadja
1 / 1 / 0
Регистрация: 20.12.2010
Сообщений: 27
15.04.2012, 22:22  [ТС] #3
Проблема решена надо было выделить память.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 22:22
Привет! Вот еще темы с ответами:

Работа с указателем на массив в функции (!!!) - C++
Я написал программу по сортировке строк из файла, который на жёстком, прога отлично работает, может показаться абсурдом, но я не понял вот...

Работа с указателем на двумерный массив - C++
Добрый день. Изучая тему указатели, столкнулся с проблемой - никак не могу понять как работать с указателем на двумерный массив. Поиск...

Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла - C++
задача: передать динамический массив в функцию, и записать в каждый элемент строку из файла. количество строк известно вот что у меня...

Двумерный массив с ключом и указателем на функцию - C++
Здравствуйте. Подскажите, пожалуйста, как реализовать двумерный массив с ключом и указателем на функцию. Задача: на вход поступает...


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

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

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