Ir para conteúdo
Fórum Script Brasil
  • 0

sistema de equações em c


eduardoloco

Pergunta

Boa pessoal, primeiro de tudo, boa noite a todos, meu nome é Eduardo e sou novo no forum.

Hoje na aula de programação da faculdade meu professor passou o seguinte exercício:

Calcule as raízes de um sistema de n <= 20 equações, onde o calculo das raízes é feita da seguinte forma:

exemplo: n = 5

|A11 | * |X1| = |b1|

|A21 A22 | |X2| |b2|

|A31 A32 A33| |X3| |b3|

X1 = b1/A11

x2 = (b2 - A11*X1)/A22

X3 = (b3 - A32*X2)/A33

E assim por diante até o n 20

Eu devo ler a matriz das constantes (a matriz dos 'As') e os coeficientes (o vetor dos 'bs') e a partir da soma descrita acima, encontrar os 'Xs'

resumidamente, eu devo resolver um sistema de no máximo 20 equações, em que a cada linha é adicionado um termo a ele, tornando-o em um sistema cuja matriz das constantes é triangular.

No fim das contas o sistema fica assim:

A11*X1 = b1

A21*X1 + A22*X2 = b2

A31*X1 + A32*X2 + A33*X3 = b3

OBS: deve-se usar ponteiros.

Enfim, após esse longo enunciado, o código:

------------------------------------------------------------------------------------------------------------------------

#include <stdlib.h>

#include <stdio.h>

void leitura();

float calcula();

float calcula(int **constante, int *coeficiente, int n, float *X)

{

if (n == 0)

return(constante[0][0]/coeficiente[0]); //é o calculo do X1, pois ele é o único que pode ser calculado de primeira.

else

{

X[n] = (coeficiente[n] - calcula(&constante[n][n-1], &coeficiente[n-1], n, &X[n]))/constante[n][n]; //recursiva

n--; // o n do X[n] é a respectiva raiz que está sendo calculada. Nesse caso, ele calcula da última raiz até a primeira, atravéz da recursiva.

}

}

void leitura() //função de leitura de todos os itens necessários

{

int n, i, j;

printf("Insira o numero de termos do sistema: ");

scanf("%d", &n);

int constantes[n][n], coeficientes[n];

float X[n];

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

{

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

{

fflush(stdin);

printf("Insira o valor da constante A%d%d: ", i+1, j+1);

scanf("&d", &constantes[j]);

}

}printf("\n");

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

{

fflush(stdin);

printf("Insira o valor do %do coeficiente: ", i+1);

scanf("%d", &coeficientes);

}

calcula(&constantes[n][n], &coeficientes[n], n, &X[n]); //chamada da função calcula

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

printf("X%d = %f", i, X[n]);

}

main()

{

leitura();

system("PAUSE");

}

------------------------------------------------------------------------------------------------------------------------

Bom, o meu problema está na função calcula. Eu tentei fazer uma função recursiva mas estou com dúvidas quanto os parâmetro que passei, e com a própria recursiva, pois quando o programa acessa ela, ele da erro fatal e fecha o programa. Como estou no primeiro ano de computação ainda, não manjo muito de ponteiro e meu professor não conseguiu explicar direito isso, então peço que algum de vecês possam me ajudar...

Qualquer outra informação é só perguntar.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...