Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 09:40   #1
Grafite23
 
Регистрация: 07.05.2012
Сообщений: 4
Восклицание Решение систем линейных уравнений методом Гаусса

Не могу понять почему некорректная компиляция.

Код:
Код:
// Решение системы линейных уравнений методом Гаусса

#include<io.h>

#include "stdio.h"

#include "conio.h"

#include <windows.h>

#include <iostream>

#include <time.h>

#include <io.h>

#include <fcntl.h>

#include <string.h>

#include "stdafx.h"

using namespace std;

#include <stdio.h> // Описания функций ввода-вывода

#include <math.h> // Описания математических функций

#include <stdlib.h> // Описания функций malloc и free

const int n=3;

void ReadData()

{

int n;

double A[n][n];

FILE*f=fopen("l1.txt","rt");

if (f!=0)

printf("CAN'T OPEN FILE\nPlease, f**k off!");

{

fscanf(f,"%d",&n);

printf("Sborka matritsi m- na n-:\n");

for (int i=0;i<n;i++)

{

for(int j=0;j<n;j++)

{

fscanf(f,"%d",&A[i][j]);

printf("%d",A[i][j]);

}

printf("\n");

}

printf("\n\n");

fclose(f);

}

}

void Gauss

( double X[n], const double Z[n][n], const double Y[n])

{

ReadData();

double A[n][n]; // матрица коэффициентов Гаусса

double B[n]; // рабочий массив свободных членов

int i;

int j;

int k; // рабочие переменные

for( i = 0; i < n; i++ ) // копирование в рабочую матрицу A

{

for( j = 0; j < n; j++ )

A[i][j] = Z[i][j];

B[i] = Y[i]; // копирование свободных членов
X[i] = 0;

}

for( k = 0; k < n-1; k++ )

for( i = k+1; i < n; i++ ) // преобразование строк

{

double r = A[i][k] / A[k][k];

for( j = k; j < n; j++ )

A[i][j] -= A[k][j] * r;

B[i] -= B[k] * r;

}

X[n-1] = B[n-1] / A[n-1][n-1];

for( i = n-2; i >= 0; i-- )

{

double s = 0;

for( j = i+1; j < n; j++ )

s += A[i][j] * X[j];

X[i] = ( B[i] - s ) / A[i][i];

}

printf( "\n" );

for( i = 0; i < n; i++ )

{ printf( "\n" );

for( j = 0; j < n; j++ )

printf( "%8.2lf", A[i][j] );

printf( " %8.2lf", B[i] );

}

}

/* ------------------------------------------------- */

void main( void )

{
     
ReadData();

double X[n];// корни системы линейных уравнений
short i, j; // рабочие переменные

printf( " matritsa A* matritsa B\n" );

for( i = 0; i < n; i++ ) // цикл строк

{

printf( "\n" ); // новая строка на мониторе
for( j = 0; j < n; j++ )

printf( "%8.2lf", A[i][j] );

printf( " %8.2lf", B[i] );

}

printf( "\n" );

printf( "stypen4atii vid matritsi \n" );

Gauss( X, A, B ); // решение методом Гаусса

printf( "\n" );

printf( "\n" );

printf( " zna4enia peremennih x1,x1,x3\n" );

printf( "\n X = " );

for( i = 0; i < n; i++ )

printf( "%8.2lf", X[i] );

printf( "\n" );

printf( "\n" );

printf( "rang=\n" );

getch();

}

Последний раз редактировалось Grafite23; 07.05.2012 в 10:20.
Grafite23 вне форума Ответить с цитированием
Старый 07.05.2012, 09:47   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Засуньте код в тег CODE, разберитесь с кодировкой и скажите, какую ошибку дает компилятор.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 07.05.2012, 10:22   #3
Grafite23
 
Регистрация: 07.05.2012
Сообщений: 4
По умолчанию

ошибки:
163 строка: `main' must return `int'
181 строка: `A' undeclared (first use this function)
183 строка: `B' undeclared (first use this function)
Grafite23 вне форума Ответить с цитированием
Старый 07.05.2012, 10:32   #4
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ну, в ошибках все и сказано.
`main' must return `int' - функция main должна возвращать int, а не void
181 строка: `A' undeclared (first use this function) - A не было объявлено
183 строка: `B' undeclared (first use this function) - B не было объявлено
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 07.05.2012, 11:24   #5
Grafite23
 
Регистрация: 07.05.2012
Сообщений: 4
По умолчанию

с 1 ошибкой разобрался, а где и как объявлять переменные А и В я так и не понял. Если можно, помогите исправить код программы

Последний раз редактировалось Grafite23; 07.05.2012 в 11:28.
Grafite23 вне форума Ответить с цитированием
Старый 07.05.2012, 13:21   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Массив A, объявленный в ReadData, и массив A, объявленный в Gauss, это два разных массива. Определите нужные вам массивы глобально или передавайте их в функции.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 13.05.2012, 23:54   #7
Grafite23
 
Регистрация: 07.05.2012
Сообщений: 4
Восклицание

Спасибо огромное за совет, но я плохо разбираюсь в С++, пожалуйста если можете, допишите эту программу сами
Grafite23 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение системы линейных уравнений методом Гаусса. maliyusha Помощь студентам 16 18.02.2013 15:44
Решение системы линейных уравнений методом Гаусса wizion Фриланс 4 20.11.2011 22:05
РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ ГАУССА Unkind03 Паскаль, Turbo Pascal, PascalABC.NET 0 01.12.2010 17:10
Решение систем уравнений методом Гаусса. Delphi. FixiK Помощь студентам 2 26.04.2009 12:06
Помогите,плиз! Задача на паскль! Решение линейных уравнений методом Гаусса! vdv08 Помощь студентам 4 21.10.2008 23:33