hola me podrian ayudar a tener una idea de como entrarle pq de verdad que no se como hacerle miren
int main()
{int opc, f, c, matriz[f][c] ;
do{
system("CLS");
printf("8.punto de silla");
printf("0.Salir\n");
printf("que opcion desea?\n");
scanf("%d", &opc);
switch(opc){
case 8:
printf("numero de filas:");
scanf("%d", &f);
printf("numero de columnas:");
scanf("%d", &c);
llenaMatriz(f, c, matriz);
printf("la matriz es:\n");
despliegaMatriz(f,c,matriz);
break;
}
} while(opc!=0);
return 0;
}
void llenaMatriz(int n, int m, int matriz[n][m]){
int i, j;
for (i=0; i<n; i++) {
for(j=0; j<m; j++) {
printf("Introduzca la posicion %d, %d: ", i+1, j+1);
scanf("%d", &matriz[i][j]);
}
}
}
void despliegaMatriz(int n, int m, int matriz[n][m]){
int i, j;
for(i=0; i<n; i++) {
for (j=0; j<m; j++) {
printf("%d\t", matriz[i][j]);
}
printf("\n");
}
}
Bueno puedes ir columna por columna buscando el mayor, y cuando lo encuentras despues compruebas su fila a ver si es el menor.
Cita de: criser20 en 5 Abril 2014, 04:57 AM
int opc, f, c, matriz[f][c] ;
Estas declarando una matriz de tamaño f x c cuando f y c no estan inicializados y su contenido es basura, inicializalos o usa una constante o un define.
Saludos
Cita de: noele1995 en 5 Abril 2014, 13:58 PM
Bueno puedes ir columna por columna buscando el mayor, y cuando lo encuentras despues compruebas su fila a ver si es el menor.
Estas declarando una matriz de tamaño f x c cuando f y c no estan inicializados y su contenido es basura, inicializalos o usa una constante o un define.
Saludos
se que seria asi lo que no se como hacer eso :/ y en el libro que tengo solo habla de lo basico y no aparece eso >.<
Cita de: criser20 en 5 Abril 2014, 19:52 PM
se que seria asi lo que no se como hacer eso :/ y en el libro que tengo solo habla de lo basico y no aparece eso >.<
Para empezar tienes que arreglar lo de la matriz.
Como ya te indiqué en dos de los temas anteriores, no puedes declararla antes de conocer sus dimensiones.
* Esto no:
int opc, f, c, matriz[f][c] ;
* Esto si:
.........................
int f, c;
printf("numero de filas:");
scanf("%d", &f);
printf("numero de columnas:");
scanf("%d", &c);
int matriz[f][c];
...........................
Y respecto al tema del punto silla sólo tienes que seguir los pasos que te indicó noele1995.
Por ejemplo, primero calculas el máximo de cada columna (los valores de mayor y menor pones tu los que consideres, aunque para hacerlo bien habría que usar la librería limits.h y elegir el máximo=INT_MIN y mínimo=INT_MAX de los int):int i,iM,jm ,j,k,mayor=-1000,menor=1000;
for (j=0; j<m; j++){
mayor=-1000,menor=1000;
for(i=0; i<n; i++) {
if (matriz[i][j]>mayor){
mayor=matriz[i][j];
iM=i;
}
}
Y una vez localizado el máximo de una columna, cosa que hace el código anterior, miras cual es el mínimo de la fila donde está ese máximo:for (k=0; k<m; k++){
if (matriz[iM][k]<menor){
menor=matriz[iM][k];
jm=k;
}
}
Y ya sólo queda comparar si el mayor de la columna coincide con el mínimo de la fila correspondiente:if (mayor==menor)
printf ("\nPunto de silla el a[%d][%d]=%d\n",iM,jm,matriz[iM][jm]);
Si aplicas lo anterior a la matriz:Citar
1 2 3
2 3 4
1 5 2
obtendrás:Citar
Punto de silla el a[1][0]=2
Espero que lo tengas ahora más claro.
Saludos!.
Cita de: leosansan en 5 Abril 2014, 20:25 PM
Para empezar tienes que arreglar lo de la matriz.
Como ya te indiqué en dos de los temas anteriores, no puedes declararla antes de conocer sus dimensiones.
* Esto no:
int opc, f, c, matriz[f][c] ;
* Esto si:
.........................
int f, c;
printf("numero de filas:");
scanf("%d", &f);
printf("numero de columnas:");
scanf("%d", &c);
int matriz[f][c];
...........................
Y respecto al tema del punto silla sólo tienes que seguir los pasos que te indicó noele1995.
Por ejemplo, primero calculas el máximo de cada columna (los valores de mayor y menor pones tu los que consideres, aunque para hacerlo bien habría que usar la librería limits.h y elegir el máximo=INT_MIN y mínimo=INT_MAX de los int):
int i,iM,jm ,j,k,mayor=-1000,menor=1000;
for (j=0; j<m; j++){
mayor=-1000,menor=1000;
for(i=0; i<n; i++) {
if (matriz[i][j]>mayor){
mayor=matriz[i][j];
iM=i;
}
}
Y una vez localizado el máximo de una columna, cosa que hace el código anterior, miras cual es el mínimo de la fila donde está ese máximo:
for (k=0; k<m-1; k++){
if (matriz[iM][k]<menor){
menor=matriz[iM][k];
jm=k;
}
}
Y ya sólo queda comparar si el mayor de la columna coincide con el mínimo de la fila correspondiente:
if (mayor==menor)
printf ("\nPunto de silla el a[%d][%d]=%d\n",iM,jm,matriz[iM][jm]);
Si aplicas lo anterior a la matriz:
obtendrás:
Espero que lo tengas ahora más claro.
Saludos!.
gracias y por cierto no sabras de algun libro que explique cosas como esta que me peuda servir para futuras referencias?
Cita de: criser20 en 5 Abril 2014, 20:45 PM
gracias y por cierto no sabrás de algún libro que explique cosas como esta que me pueda servir para futuras referencias?
En la página de inicio tienes un enlace a diversos libros muy válidos.
Si te digo la verdad he llegado a un punto en que los libros sólo me dicen más de los mismo, en cambio las diversas cosas que aprendo y muy interesantes en los diversos foros en los que participo, es crema.
Yo te aconsejo seguir de entrada dos o tres buenos libros y nada si te trabas en alguno de los ejercicios colgar en el foro tus avances. Seguro que con las respuestas que te ofrezcan los usuarios iras sacando poco a poco buenos códigos y/o prácticas de programación. La práctica lo es casi todo, eso si, con un nivel de teoría correcto y profundo. ¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)