Ir ao conteúdo
  • Cadastre-se

Gabriel Sardinha Colicigno

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

3
  1. Ola,sou um novo usuário do Forum Clubdohardware e peço paciência. Fiz esse algoritmo para escalonar uma matriz, gostaria da opinião da comunidade e se possível maneiras de otimizar o algoritmo e suas aplicações. Obrigado. #include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ void Ler_matrix(int lx,int cx,int Mx[10][10]) { int i,j; for(i=1;i<=lx+1;i++) { for(j=1;j<=cx+1;j++) { if(i==lx+1||j==lx+1) { Mx[j]=0; } else { scanf("%d",&Mx[j]); } } } } void Imprimir_matrix(int lx, int cx,int Mx[10][10]) { int i,j; for(i=1;i<=lx;i++) { for(j=1;j<=cx;j++) { printf("|%d |",Mx[j]); } printf("\n"); } } int Ler_Matrix_Escalonada(int lx, int cx,int Mz[10][10],int ex) { int i,j,e; e=1; for(j=1;j<=lx;j++) { for(i=j;i<=cx;i++) { if(Mz[j]!=0&&i!=j) { e=0; } if(i==j) { if(Mz[j]==0) { if(Mz[i+1][j+1]!=0) { e=0; } } } } } ex=e; } void Contar_zeros (int lx,int cx,int Mz[10][10],int Vz[10]) { int i,j,cont; for(i=1;i<=lx;i++) { j=1; cont=0; while(Mz[j]==0&&j<cx) { cont=cont+1; j=j+1; } Vz=cont; } } void Trocar_linhas(int lx,int cx,int Mz[10][10],int ix) { int j,k; for(j=1;j<=cx;j++) { k=Mz[ix][j]; Mz[ix][j]=Mz[ix+1][j]; Mz[ix+1][j]=k; } } void Procurar_Pivos(int lx,int cx,int Mz[10][10],int Vp[10]) { int i,j; for(i=1;i<=lx;i++) { j=1; while(Mz[j]==0&&j<lx) { j=j+1;//printf("%d",j);system("pause"); } Vp=Mz[j];//printf("Vp[%d]=%d",i,Mz[j]);system("pause"); } } void soma_linhas(int lx,int cx, int Mz[10][10],int R[10],int ix) { //multiplico a linha i pelo pivo da linha i+1; e o mesmo para linha i+1 pela linha i int a,b,j; Procurar_Pivos(lx,cx,Mz,R); a=R[ix];//vetor pivo referencia b=R[ix+1]; //multiplicar o vetor referencia(o vetor que se quer somar com o maior pivo) for(j=1;j<=cx;j++) { Mz[ix+1][j]=Mz[ix+1][j]*a-Mz[ix][j]*b;//system("pause");printf("%d",Mz[ix+1][j]); } } int main(int argc, char *argv[]) { int k,i,l,c,M[10][10],Z[10],P[10]; printf("Escreva as Dimensoes da Matrix a ser escalonada"); scanf("%d%d",&l,&c); Ler_matrix(l,c,M); k=0; while(k<l) { k=k+1; Imprimir_matrix(l,c,M); printf("\n"); //contar zero i=1; while(i<l) {Contar_zeros(l,c,M,Z); if(Z>Z[i+1]) { Trocar_linhas(l,c,M,i); Imprimir_matrix(l,c,M); printf("\n"); i=0; } i=i+1; } i=1; while(i<l) { Procurar_Pivos(l,c,M,P); if(Z==Z[i+1]&&P!=0&&P<P[i+1]) { Trocar_linhas(l,c,M,i); Imprimir_matrix(l,c,M); printf("\n"); i=0; } i=i+1; } Contar_zeros(l,c,M,Z); Procurar_Pivos(l,c,M,P); if(Z[k]==Z[k+1]&&P!=0) {//printf("k=%d",k);system("pause"); Procurar_Pivos(l,c,M,P); soma_linhas(l,c,M,P,k); k=0; } k=k+1; } printf("Fim Algoritmo"); return 0; } Gabriel Sardinha Colicigno Graduando Engenharia elétrica pela universidade Julio de Mesquita Filho-Unesp Ilha Solteira.

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...