Ir ao conteúdo
  • Cadastre-se

Programinha de resolução de sistema linear em c


Evelyne Amorim

Posts recomendados

Gente, essa programa resolve sistema linear só que eu queria que ele devolvesse a solução se tiver, senão, devolver "o sistema não tem solução" o problema é que ele ta devolvendo "o sistema nao tem solucao" parra cada sequencia. Ajudeeem porr favoorr!!! 

 

#include <stdio.h>
#include <stdlib.h>
#define NUSP 8940702 /* substitua aqui pelo seu NUSP */
#define MAXCOL 21
#define MAXLIN 21

/* Gera matriz A[1..N x 1..M] e vetor C[1..N] */
void GeraMatVet(int A[][MAXCOL],int C[],int N,int M) {
 static int vez = 1;
 int i, j, k1, k2, aux[MAXCOL];
    if(N >= M) { printf("* * * N deve ser menor que M"); return; }
    srand(vez*NUSP);
    for (j = 1; j <= M; j++) aux[j] = rand() % 3 - 1;
            for(i = 1; i <= N; i++) {
                C = 0;
                for(j = 1; j <= M; j++) {
                    k1 = (rand() % 3 - 1);
                    k2 = k1 * (rand() % 17);
                    A[j] = k2;
                    }
             if(vez % 2 == 0)
             for (j = 1; j <= M; j++) C += aux[j] * A[j];
             else C = rand() % 47;
                }
            vez++;
    }
void ImprimeMatVet(int aa[][MAXCOL], int cc[], int nn, int mm) {
 int i, j;
    printf("\nMatriz:");
        for(i = 1; i <= nn; i++) {
            printf("\n");
            for(j = 1; j <= mm; j++) printf("%10d", aa[j]);
            }
        printf("\nVetor:\n");
        for(i = 1; i <= nn; i++) printf("%10d", cc);
    }
/*verifica se o vetor b é a solução*/
int verificasistema (int a[][MAXCOL], int b[], int n, int m, int c[]) {
        int d[MAXLIN], i, j, l;
        for (i=0; i<n; i++)
            d=0;
        for (i=0; i<n; i++) {
            for (l=0; l<m; l++) {
                d=d+(a[l]*b[l]);
            }
        }
        for (i=0; i<n; i++)
        if (d!=c) return -1;
        return 0;
    }
/*gera o vetor B*/
int proxima(int a[], int N, int M) {
    int t = N-1;
    /* soma 1 ao vetor */
    while (t >= 0) {
        a[t] = (a[t] +1) % M;
        if (a[t] == 0) t--;
        else return 0;
        }
        return -1;
        }
int main() {
 int n, m, k = 1, i, j, l, a[MAXLIN][MAXCOL], c[MAXCOL], b[MAXCOL],seq[MAXCOL];
    while (1) {
        printf("\n\nEntre com n e m:");
        scanf("%d%d", &n, &m);
        /* consistência de n e m */
        if(!(n >= 1 && n <= 20 && m >= 1 && m <= 20 && n < m)) {
        printf("\n\nn e m devem ser ambos entre 1 e 20 - n deve ser menor que m\n\n");
        break;
        }
        printf("\nGera Matriz e Vetor - teste numero %d", k++);
        GeraMatVet(a, c, n, m);
        ImprimeMatVet(a, c, n, m);
        /*programa*/
        for (i = 0; i < m; i++) b = 0;
        do {
        /* imprime sequência atual */
        for (i = 0; i < m; i++) { seq=b-1;
        }
        printf ("\n");
        if (verificasistema(a,seq,n,m,c)==0) {
            printf ("\nA sequencia");
            printf ("%2d", seq);
            printf (" é solucao para o sistema\n");
        }
        else
            printf("O sistema nao tem solucao");
        /* gera a próxima */
        } while (proxima(b, m, 3) == 0);
    }
system("PAUSE");
 return 0;
}
 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...