no entiendo matrices ni estructuras

karl
17 de Abril del 2004
hola porfabor nesesito ayuda. no entiendo nada de matrices ni estructura y tengo parcialparalaotrasemanaporfabopr si saven algo o donde podree encontrar una guia k me explik claro se los agradecere.
gracias

David
17 de Abril del 2004
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>

void intromat (int matriu [4][4]);
void diagonalperf (int matriu[4][4]);
void pantalla (int matriu[4][4]);
void RouFro (int matriu[4][4]);
void canvifila (int matriu[4][4],int fila,int cas);
void triangular (int matriu[4][4]);

int main()
{
int matriu [4][4];

intromat(matriu);
pantalla(matriu);
diagonalperf (matriu);
triangular (matriu);
RouFro (matriu);


system("PAUSE");
return 0;
}

void pantalla(int matriu[4][4])
{
int contfil, contcol;
contfil=0;
contcol=0;


while(contfil<4)
{
while(contcol<4)
{
printf(" %d ",matriu[contfil][contcol]);
contcol++;
}
contcol=0;
contfil++;
printf("n");
printf("n");
}
printf("n");
printf("n");
}

void diagonalperf(int matriu[4][4])
{
int fil,col,cas,error,fila[2]={0,0};


if(matriu[0][0]==0)//Entrem aquí si hem trobat que hi havia un zero
{
cas=1;
fil=1;
col=0;
if (matriu[fil][col]==0)
{
fil++;
if (matriu[fil][col]==0)
{
fil++;
if (matriu[fil][col]==0)
{
printf("Hay una columna de ceros!");
error=1;
}
else
{
canvifila(matriu,fil,cas);//fil=3
fila[0]=1;//Deixem "marcada" la fila 1
}
}
else
{
canvifila(matriu,fil,cas);//fil=2
fila[0]=1;//Deixem "marcada" la fila 1
}
}
else
{
canvifila(matriu,fil,cas);//fil=1
fila[0]=1;//Deixem "marcada" la fila 1
}
}


if(matriu[1][1]==0)
{
cas=2;
fil=0;
col=1;
if (matriu[fil][col]==0||fila[0])
{
fil=fil+2;
if (matriu[fil][col]==0)
{
fil++;
if (matriu[fil][col]==0)
{
printf("Hay una columna de ceros!");
error=1;
}
else
{
canvifila(matriu,fil,cas);//fil=3
fila[1]=1;//Deixem "marcada" la fila 2
}
}
else
{
canvifila(matriu,fil,cas);//fil=2
fila[1]=1;//Deixem "marcada" la fila 2
}
}
else
{
canvifila(matriu,fil,cas);//fil=0
fila[1]=1;//Deixem "marcada" la fila 2
}
}



if(matriu[2][2]==0)
{
cas=3;
fil=0;
col=2;
if (matriu[fil][col]==0||fila[0])
{
fil++;
if (matriu[fil][col]==0||fila[1])
{
fil=fil+2;
if (matriu[fil][col]==0)
{
printf("Hay una columna de ceros!");
error=1;
}
else
canvifila(matriu,fil,cas);//fil=3
}
else
canvifila(matriu,fil,cas);//fil=1
}
else
canvifila(matriu,fil,cas);//fil=0
}
}

void canvifila (int matriu[4][4],int fila,int cas)
{
int temp,col;
col=0;


if(cas==1)
{
while(col<4)
{
temp=matriu[0][col];
matriu[0][col]=matriu[fila][col];
matriu[fila][col]=temp;
col++;
}
col=0;
}

if(cas==2)
{
while(col<4)
{
temp=matriu[1][col];
matriu[1][col]=matriu[fila][col];
matriu[fila][col]=temp;
col++;
}
col=0;
}

if(cas==3)
{
while(col<4)
{
temp=matriu[2][col];
matriu[2][col]=matriu[fila][col];
matriu[fila][col]=temp;
col++;
}
col=0;
}
pantalla(matriu);
}


void RouFro (int matriu[4][4])
{
if (matriu[3][2]==0 && matriu[3][3]==0 && matriu[2][2]==0 && matriu[2][3]!=0)
{
printf("El Sistema és Incompatible.");
printf("n");
}

if (matriu[3][2]==0 && matriu[3][3]!=0)
{
printf("El Sistema és Incompatible.");
printf("n");
}

if (matriu[3][2]==0 && matriu[3][3]==0 && matriu[2][2]!=0 && matriu[2][3]!=0)
{
printf("El Sistema és Compatible Determinat.");
printf("n");
}

if (matriu[3][2]==0 && matriu[3][3]==0 && matriu[2][2]==0 && matriu[2][3]==0)
{
printf("El Sistema és Compatible Indeterminat.");
printf("n");
}
}

void triangular (int matriu[4][4])
{
int numcol;
int fila1 [1][4], fila2[1][4],fila3[1][4],fila4[1][4];
int coefpiv,coefmod;
int filpiv,filmod;

numcol=0;//Aquesta variable es va incrementant dins l'últim "while" per
//anar modificant tots els membres (columnes) d'una mateixa fila.
filpiv=0;//Aquesta variable marca qui és la fila "pivot", és a dir, qui és en
//combinació la fila que modifica a totes les altres.

while(filpiv<3)//Com que pivotarem amb tres de les quatre files (ja que no
//volem modificar la columna de les solucions), "filpiv" pendrà
//tres valors: des de zero fins a dos (referint-se a la 1ª, 2ª i
// 3ª fila).
{
filmod=0;//Inicialitzem a zero cada vegada que pivotem sobre una nova
//fila, perque modificarem de nou totes les files a cada
//pivotatge nou que fem.

coefpiv=matriu[filpiv][filpiv];//Assignem a "coefpiv" el valor del
//coeficient del pivot que multiplicara
//a les files que seran modificades.
//Aquests valors son els de la diagonal
//de la matriu, per això en les posicions
//de la matriu col·loquem en identica
//posicio tant la fila com la columna.


while (filmod<4) //Aquest "while" fa referència a les files que es
//modificaran, tot i que el comptador va dels valos
//zero al tres, no passa sempre per tots els valors
//degut a que hi ha un "if" que evita un dels valors
//que pren entre el zero i el tres. Perque sempre sempre
//es modifica una fila menys de les que tenim
//(perquè una es la pivot).
{
if(filpiv==filmod)//Aquest "if" evita que mai coincideixi
//la fila que modifica (fila pivot, filpiv)
//amb la que és modificada.
{
filmod++;//En el cas de coincidir l´incrementem.
}

coefmod=matriu[filmod][filpiv];//En aquesta variable guardem
//el coeficient de la fila que
//és modificada.
numcol=0;//Inicialitzem a zero per cada vegada que sumem
//dues files, ja que ho fem numero per numero i ens
//hem d´anar desplaçant per les seves col.lumnes.
while(numcol<4)//Aquest "while" realitza la suma de dues
//files repetint-se cuatre vegades per les
//cuatre col.lumnes de cada fila.
{
matriu[filmod][numcol]=matriu[filmod][numcol]*
coefpiv-matriu[filpiv][numcol]*coefmod;
numcol++;//Guarda en la fila modificada el valor de
//la resta dels valors anteriors multiplicats
//pels coefients de les files oposades.
}
filmod++;//Passem a la següent fila que es modificara.
}
printf("n");
pantalla(matriu);//Escrivim la matriu despres de cada obtenció de
//zeros per col·lumna.
filpiv++;//Canviem de fila pivot.

}


}

yoyo
17 de Abril del 2004
Yo te recomiendo que te peges un tiro en las bolas.

kamegeist
17 de Abril del 2004
no pongas cuidado a las estupideces como las del tonto de "yoyo", para solucionar tus problemas con las estructuras de datos, para eso existe gente que se han tomado la molestia de escribir libros cuyo titulo es "ESTRUCTURAS DE DATOS", explicado muy sencillo y fácil de entender

noel solw
17 de Abril del 2004
no sos el unico ! ! !