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

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

Войти
Регистрация
Восстановить пароль
 
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
#1

Ошибка в коде программы. - C++

15.04.2009, 23:32. Просмотров 727. Ответов 10
Метки нет (Все метки)

Не инциализируется подключенный файл <alloс.h>.Это ведь стандартная библеотека С. Среда Vusial Studio 2008.
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
#include <stdio.h>
#include <alloc.h>
#include <float.h>
#include <math.h>
 
int cholesky_decomp(float *mat_a, float *mat_b, int sz)
{
    double sum;
    int    ii, jj, kk;
 
    for(ii = 0;ii < sz;ii++)
    {
        for(jj = ii;jj < sz;jj++)
        {
            sum = *(mat_a + ii + sz*jj);
 
            for(kk = ii - 1;kk >= 0;kk--)
                sum = sum - (*(mat_a + ii + sz*kk))*(*(mat_a + jj + sz*kk));
 
            if(ii == jj)
            {
                if(sum < 4*FLT_EPSILON)
                {
                    printf("Cholesky method failed!\n");
 
                    return 0;
                }     
 
                *(mat_b + ii + sz*ii) = sqrt(sum);
            }
            else
                *(mat_b + jj + sz*ii) = *(mat_a+ jj + sz*ii) = sum/( *(mat_b + ii + sz*ii));
        }
    }
 
   return 1; 
}
 
void cholesky_solver(float *mat_b, float right[], float xx[], int sz)
{
    double sum;
    float  *p_temp;
    int    ii, jj;
 
    p_temp = (float*)malloc(sz*sizeof(right[0]));
 
    for(ii = 0; ii < sz; ii++)
    {
        sum = 0.0;
 
        for(jj = 0; jj < ii; jj++)
            sum += (*(mat_b + ii + sz*jj))*p_temp[jj];
 
        p_temp[ii] = (right[ii] - sum)/(*(mat_b + ii + sz*ii));
    }
 
    for(ii = sz - 1; ii >= 0; ii--)
    {
        sum = 0.0;
 
        for(jj = sz - 1; jj > ii; jj--)
            sum += (*(mat_b + jj + sz*ii))*xx[jj];
 
        xx[ii] = (p_temp[ii] - sum)/(*(mat_b + ii + sz*ii));
    }
 
     free(p_temp);
}
 
#define EQU_ORDER 5
 
float left[EQU_ORDER][EQU_ORDER] = {
                          {4.0f, 1.0f, 2.0f, 0.5f, 2.0f},
                          {1.0f, 0.5f, 0.0f, 0.0f, 0.0f},
                          {2.0f, 0.0f, 3.0f, 0.0f, 0.0f},
                          {0.5f, 0.0f, 0.0f, 0.625f, 0.0f},
                          {2.0f, 0.0f, 0.0f, 0.0f, 16.0f}};
 
float right[EQU_ORDER] = {7.0f, 3.0f, 7.0f, -4.0f, -4.0f};
 
float bb[EQU_ORDER][EQU_ORDER];
 
float xx[EQU_ORDER];
 
int main()
{
    int ii;
 
    if(!cholesky_decomp((float*)&left[0][0], (float*)&bb[0][0], EQU_ORDER))
        return 0;
 
    cholesky_solver((float*)&bb[0][0], right, xx, EQU_ORDER);
 
    printf("Cholesky's Method\n\n");
     
    for(ii = 0; ii < EQU_ORDER; ii++)
       printf("  X%d = %+f\n", ii, xx[ii]);
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2009, 23:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в коде программы. (C++):

Ошибка в коде программы - C++
Всем привет! Уважаемые, помогите разобраться с проблемой, есть программа, которая должна считать периметр треугольника по его сторонам,...

Ошибка в коде программы - C++
Заданаие такое: Дано натуральное число n (n&lt;9999). Определить, является ли это число палиндромом (перевертышем) с учетом четырех цифр ...

Ошибка в коде программы - C++
Не могу найти ошибку в коде: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { int *pint = 0; ...

Ошибка в коде программы(Классы) - C++
Собственно вод код #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; ...

Ошибка в коде программы новичка - C++
Всем доброй ночи. Помогите найти ошибку в программе. Задали сделать многофайловый проект. Моя первая работа в языке С++, поэтому не...

Ошибка библиотеки в коде программы?:) - C++
Всем привет. Вот этот код компилируется без ошибок и все работает #include &lt;windows.h&gt; #include &lt;gl\GLU.h&gt; #include &lt;gl\GL.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mecid
680 / 229 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
15.04.2009, 23:41 #2
есди хочешь юзать malloc,calloc,free то подключай stdlib.h
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
15.04.2009, 23:47  [ТС] #3
Пробовала,не получается
Mecid
680 / 229 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
15.04.2009, 23:50 #4
как не подучается ошибку дает,что не найден файл?
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
16.04.2009, 00:06  [ТС] #5
Mecid, Нет, ругается на две ошибки
if(!cholesky_decomp((float*)&left[0][0], (float*)&bb[0][0], EQU_ORDER)) первая ошибка
if(!cholesky_decomp((float*)&left[0][0], (float*)&bb[0][0], EQU_ORDER)) вторая ошибка. Компилятору не нравится "right" и left
Mecid
680 / 229 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
16.04.2009, 00:24 #6
у тя не соответствуют параметры функции

Добавлено через 2 минуты 39 секунд
функция должна принимать массив а ты матрицу суешь
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
16.04.2009, 00:32  [ТС] #7
Mecid, Ну и как это сделать по другому?То,что вы пишите мне, большое спасибо.А помочь можете? Как это сделать, у меня все в голове перепуталось.
Mecid
680 / 229 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
16.04.2009, 01:34 #8
переделайте объявление так
C
1
nt cholesky_decomp(float **mat_a, float **mat_b, int sz)
а вызов так
C
1
 if(!cholesky_decomp((float**)&left[0][0], (float**)&bb[0][0], EQU_ORDER))
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
16.04.2009, 02:00  [ТС] #9
Mecid, Спасибо.Но одна ошибка все равно осталась if(!cholesky_decomp((float**)&left[0][0], (float**)&bb[0][0], EQU_ORDER))Опять Left.Т е вызов так и остался...Прога так и не запускается)))Точнее это мой курсовой.
Mecid
680 / 229 / 4
Регистрация: 15.10.2007
Сообщений: 1,247
16.04.2009, 02:06 #10
смотри на строку 32 там ошибка.ты обращаешься к массиву ,а у тя матрица
Анастасия Сонечко
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 39
16.04.2009, 02:14  [ТС] #11
Mecid, Ты сам написал, смотри выше.Что вызов мы так и оставляем??Я знаю, что у меня матрица, а как ошибку исправить???Поможешь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2009, 02:14
Привет! Вот еще темы с ответами:

Ошибка в коде программы для кв. уравнений - C++
вопрос такой почему у меня все время ошибки в этом коде (Квадратное уравнение) Пишу в этот раздел тк я в C++ два дня #include...

Ошибка в коде, при разбивании программы на 3 файла. (<<) - C++
Здравствуйте, вот код программы, после разбивания её на 3 файла перестают работать операторы &lt;&lt; &gt;&gt;. Кто знает, как можно исправить эту...

Ошибка в коде программы. conversion from 'double' to 'int', possible loss of data, error C2018: unknown charact - C++
#include &lt;iostream.h&gt; int add3(int, int, int); double average(int); void main() { int score_l, score_2, score_3, sum; ...

Подскажите. Не компилирует текст программы, запрашивает в коде мол не достающую скобку. Ниже приведен текст программы. - C++
#include &lt;iostream.h&gt; unsigned int perimetr ( int a,int b); int main() { int a,b; cin &gt;&gt; a; cin &gt;&gt; b; cout &lt;&lt; &quot;perimetr=&quot;...


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

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

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