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;
}