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

Передача массива в функцию (указатели) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как создать диаграмму классов в Visual Studio Express 2012 http://www.cyberforum.ru/cpp-beginners/thread1184821.html
Я так поняла, что страндартно там нет такой возможности. Есть ли какието утилиты чтобы скачать?
C++ Написать кольцевой список с возможностями добавления, удаления и поиска элементов, и сохранения в файл. Нужно написать программу, пожалуйста помогите, сам не напишу Написать программу, которая должна выполнять следующие операции: Создавать двусвязный кольцевой список. Операцию дополнения списка Операцию просмотра списка Операцию удаления элементов списка. Копирование элементов списка в массив. Сортировка методом Пузырька. http://www.cyberforum.ru/cpp-beginners/thread1184811.html
C++ STL stack, не пойму где ошибка
#include <iostream> #include <stack> #include <string> #include <sstream> using namespace std; bool isOperator(const string& input); void performOp(const string& input,stack<double>& calcStack); int main()
C++ Проверить, упорядочены ли элементы, заменить первый нулевой элемент и удалить указанный элемент из массива
Найти произведение отрицательных элементов массива, следующих после первого положительного элемента. Если по какой-либо причине вычислить произведение не удается, выдать об этом сообщение с указанием причины. (ЭТО Я СДЕЛАЛ) Теперь к нему мне надо сделать (это сделать не могу, помогите пожалуйста): 1) Проверить, упорядочены ли элементы по не возрастанию. 2) Заменить первый нулевой элемент в...
C++ Операции с элементами массивов http://www.cyberforum.ru/cpp-beginners/thread1184719.html
4. Определить номера строк матрицы R, хотя бы один элемент которых равен с, и элементы этих строк умножить на d.
C++ Составить программу для вычисления значений функции F(x) на отрезке [а, b] с шагом h F(x)=tgx-помогите решить подробнее

Показать сообщение отдельно
Настя М
0 / 0 / 0
Регистрация: 03.12.2013
Сообщений: 14
22.05.2014, 15:40     Передача массива в функцию (указатели)
Возникла проблема. Написала программу решение систем линейных уравнений методом Гаусса. В студии 12 года работает правильно, а в 13 нет; искажается массив при передаче из функции pr_hod_a(int n, float**a, float*b) в функции obr_hod(int n, float**a, float*b) и prov(int n, float**a). Эту проблему как - нибудь можно решить?
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
136
137
138
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
 
using namespace std;
 
float**vvod_matrisi(int n);
float*vvod_svobodnozo_chlena(int n);
int kol_vo_n();
float**pr_hod_a(int n, float**a, float*b);
float*pr_hod_b(int n, float**a, float*b);
int prov(int n, float**a);
float*obr_hod(int n, float**a, float*b);
void pechat(int n, float*x);
 
void main()
{
    int p = kol_vo_n();
    float**mas1 = vvod_matrisi(p);
    float*mas2 = vvod_svobodnozo_chlena(p);
    float**mas1a = pr_hod_a(p, mas1, mas2);
    float*mas1b = pr_hod_b(p, mas1, mas2);
    int t = prov(p, mas1a);
    if (t == 1)
    {
        float*mas3 = obr_hod(p, mas1a, mas1b);
        pechat(p, mas3);
    }
}
float**vvod_matrisi(int n)
{
    float**Mas;
    Mas = new float*[n];
    for (int i = 0; i < n; i++)
        Mas[i] = new float[n];
    ifstream MyFile("C:\\My_file1.txt");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            MyFile >> Mas[i][j];
    }
    return Mas;
}
 
float*vvod_svobodnozo_chlena(int n)
{
    float* Mas = new float[n];
    int i = 0;
    ifstream MyFile("C:\\My_file2.txt");
    while (!MyFile.eof())
    {
        MyFile >> Mas[i];
        i++;
    }
    return Mas;
}
 
int kol_vo_n()
{
    float mussor[20];
    int i = 0;
    ifstream MyFile("C:\\My_file2.txt");
    while (!MyFile.eof())
    {
        MyFile >> mussor[i];
        i++;
    }
    i--;
    return i;
}
float**pr_hod_a(int n, float**a, float*b)
{
    float*g = new float[n];
    for (int i = 0; i < n; i++)
        g[i] = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            a[j][i] = -a[j][i] * pow(a[i][i], -1);
            for (int k = i + 1; k < n; k++)
                a[j][k] = a[j][k] + a[j][i] * a[i][k];
            b[j] = b[j] + a[j][i] * b[i];
        }
    }
    return a;
}
 
float*pr_hod_b(int n, float**a, float*b)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            a[j][i] = -a[j][i] * pow(a[i][i], -1);
            for (int k = i + 1; k < n; k++)
                a[j][k] = a[j][k] + a[j][i] * a[i][k];
            b[j] = b[j] + a[j][i] * b[i];
        }
    }
    return b;
}
 
int prov(int n, float**a)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        if ((i == j) & (a[i][j] == 0))
        {
            cout << "sistema ne razreshima" << endl;
            return 0;
        }
        else return 1;
    }
}
float*obr_hod(int n, float**a, float*b)
{
    float* x = new float[n];
    float h;
    x[n - 1] = b[n - 1] * pow(a[n - 1][n - 1], -1);
    for (int i = n - 2; i >= 0; i--)
    {
        h = b[i];
        for (int j = i + 1; j < n; j++)
        {
            h = h - x[j] * a[i][j];
            x[i] = h*pow(a[i][i], -1);
        }
    }
    return x;
}
void pechat(int n, float*x)
{
    for (int i = 0; i < n; i++)
        cout << 'X' << i + 1 << " = " << x[i] << endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru