Jump to content
Fórum Script Brasil
  • 0

sistema de equações em c


eduardoloco

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...