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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.82
daimos
1 / 1 / 0
Регистрация: 25.03.2009
Сообщений: 5
#1

Решение линейных уравнений методом Гаусса (error C2664) - C++

25.03.2009, 00:14. Просмотров 8020. Ответов 3
Метки нет (Все метки)

Ошибка как я понял заключается в переводе данных с масивов,но немогу исправить.
Данная программа решает линейные уравнения методом Гауса.Помогите пожалуйста.
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
#include "stdafx.h"
float systgaus(float,float,float);
 
int _tmain(int argc, _TCHAR* argv[])
{
    float A[]={5,0.1,0.2,0.1,4,-0.1,0.1,-0.2,3};
    float B[]={10,20,-4.5},X[3];
    systgaus(A,B,X);
    printf("\n x1=%f,x2=%f,x3=%f", X[0],X[1],X[2]);
    return 0;
}
 
float systgaus (float A0[],float B0[],float X[])
{
int i,j,k;
float A[3][3],B[3],S,D,C;
for(i=0;i<3;i++)
{
    B[i]=B0[i]; A[0][i]=A0[i]; A[1][i]=A0[i+3]; A[2][i]=A0[i+6];
}
for(i=0;i<3;i++)
{
    D=A[i][i];B[i]=B[i]/D;
    for(j=i;j<3;j++) A[i][j]=A[i][j]/D;
    for(k=(i+1);k<3;k++)
    {
        C=A[k][i]; B[k]=B[k]-B[i]*C;
        for(j=i;j<3;j++) A[k][j]=A[k][j]-A[i][j]*C;
    }
}
    X[2]=B[2];
    for(k=1;k>0;k--)
    {
        S=0; for(j=2;j>k;j--) S=S+X[j]*A[k][j]; X[k]=B[k]-S;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2009, 00:14     Решение линейных уравнений методом Гаусса (error C2664)
Посмотрите здесь:
Решение линейных уравнений методом Гаусса C++
Решение систем линейных уравнений методом Гаусса C++
C++ Решение системы линейных уравнений методом Гаусса
C++ Решение системы линейных алгебраических уравнений методом Гаусса
C++ Решение систем линейных алгебраических уравнений методом Гаусса с выбором главного элемента
Найти решение системы линейных уравнений методом Гаусса с выбором главного элемента в столбце C++
Системы линейных уравнений методом Гаусса C++
C++ Системы линейных уравнений методом Гаусса
C++ Методом Гаусса решить систему n линейных алгебраических уравнений
C++ Решение уравнений методом Гаусса
C++ Решение системы линейных уравнений матричным методом

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.03.2009, 01:24     Решение линейных уравнений методом Гаусса (error C2664) #2
C++
1
float systgaus(float, float, float);
C++
1
float systgaus(float [], float [], float []);
ещё функция должна возвращать значение типа float, если не надо возвращать
C++
1
void systgaus(float [], float [], float []);
и
C++
1
void systgaus(float A0[], float B0[], float X[])
daimos
1 / 1 / 0
Регистрация: 25.03.2009
Сообщений: 5
25.03.2009, 01:34  [ТС]     Решение линейных уравнений методом Гаусса (error C2664) #3
тоесть вместо
C++
1
float systgaus(float,float,float);
я пишу
C++
1
void systgaus(float [], float [], float []);
и вместо
C++
1
float systgaus (float A0[],float B0[],float X[])
это
C++
1
void systgaus(float A0[], float B0[], float X[])
и все програма полностью работает? просто значение х1 странное. Всеравно огромное вам спасибо. =)
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.03.2009, 04:34     Решение линейных уравнений методом Гаусса (error C2664) #4
C++
1
S=0; for(j=2;j>k;j--) S=S+X[j]*A[k][j]; X[k]=B[k]-S;
в этой строке цикл будет выполнять только S=S+X[j]*A[k][j]; так как фигурных скобок для S=S+X[j]*A[k][j]; и X[k]=B[k]-S; нет
по записи похоже, будто хотели, чтобы они обе в цикле выполнялись
Yandex
Объявления
25.03.2009, 04:34     Решение линейных уравнений методом Гаусса (error C2664)
Ответ Создать тему
Опции темы

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