segunda-feira, 16 de novembro de 2009

função que soma duas matrizes esparsas...

void soma(tipo_nodo**l1,tipo_nodo **l2,tipo_nodo **r ,int linhas, int colunas)
{
tipo_nodo *aux1,*aux2;
int l,c,aux;
aux1= *l1;
aux2= *l2;
for(l=0;llin==l && aux1->col==c)//testamos se a posição da matriz que estamos acessando esta na lista
{
if(aux2!=NULL)//se tiver na lista, testamos se existe uma segunda lista caso existir, testamos também se a osição da matriz que estamos acessando esta na segunda lista
{
if(aux2->lin==l && aux2->col==c)
{
aux=aux1->dado + aux2->dado;//fazemos a soma das duas posições
if(aux!=0)
insere(r,aux,l,c);//inserimos numa matriz resposta
aux1=aux1->prox;//toda vez que conseguimos acessar uma posição que tenha na lista, temos que passar para a proxima posição.
aux2=aux2->prox;
}
else//caso a posição da matriz não esteja na segunda lista, consideramos que ela é 0
{
aux=aux1->dado + 0;
insere(r,aux,l,c);
aux1=aux1->prox;
}
}
else
{
aux=aux1->dado + 0;
insere(r,aux,l,c);
aux1=aux1->prox;
}
}
if(aux2!=NULL) //se cair neste if, é porque o primeiro não existe, então somamos a segunda matriz com 0
{
if(aux2->lin==l && aux2->col==c)
{
aux = 0 + aux2->dado;
insere(r,aux,l,c);
aux2=aux2->prox;
}
}

}
else
{
if(aux2!=NULL)
{
if(aux2->lin==l && aux2->col==c)
{
aux = 0 + aux2->dado;
insere(r,aux,l,c);
aux2=aux2->prox;
}
}
}
}
}
}

quarta-feira, 11 de novembro de 2009

função que imprime uma matriz esparsa

void imprime(tipo_nodo **lis,int linhas , int colunas )
{
int l , c ;
tipo_nodo *aux;
aux=*lis;
printf("\n\n\n");
for (l=0;l < linhas;l++)
{
for(c=0;c < colunas;c++)
{
if(aux!=NULL)//este if teve de ser colocado porque se o aux chegar no fim e ele for nulo, ao testar o if abaixo, ele tenta acessar um registro nulo, dando erro de execução
{
if(l==aux- > lin && c==aux- > col)
{
printf("\t %d",aux- > dado);
aux=aux- > prox;
}
else
printf("\t0");//caso não tenha este else, nao aparecem alguns zeros, isso porqueo aux nao é null, entao nao entra no outro if.
}
else
printf("\t0");
}
printf("\n");
}
}

terça-feira, 10 de novembro de 2009

Voltando

E ai galera...

To faz uns dias sem posta nada aqui... mas é por falta de conteúdo mesmo... rsrsrs

bom seguinte... temos um trabalim pra fazer... a tal da matriz esparsa, isso usando uma lista encadeada...
as funções estão meio dificeis de sair, sendo que ta dando muitos erros de execução...

vou postando aqui as funções q eu fiz pra galera da sala ir fazendo ctrl + c , ctrl + v ... rsrsrss

falow