Ir para conteúdo
Fórum Script Brasil

eduardoloco

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre eduardoloco

eduardoloco's Achievements

0

Reputação

  1. 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.
×
×
  • Criar Novo...