Autor
|
Tema: punto silla de una matriz (Leído 9,071 veces)
|
criser20
Desconectado
Mensajes: 7
|
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{ printf("que opcion desea?\n"); switch(opc){ case 8: printf("numero de columnas:"); llenaMatriz(f, c, matriz); 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++) { } } }
|
|
|
En línea
|
|
|
|
noele1995
Desconectado
Mensajes: 137
|
Bueno puedes ir columna por columna buscando el mayor, y cuando lo encuentras despues compruebas su fila a ver si es el menor. 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
|
|
|
En línea
|
|
|
|
criser20
Desconectado
Mensajes: 7
|
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 >.<
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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:1 2 3 2 3 4 1 5 2
obtendrás:Punto de silla el a[1][0]=2
Espero que lo tengas ahora más claro.
Saludos!.
|
|
« Última modificación: 6 Abril 2014, 16:57 pm por leosansan »
|
En línea
|
|
|
|
criser20
Desconectado
Mensajes: 7
|
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?
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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! ..... !!!!
|
|
« Última modificación: 6 Abril 2014, 16:59 pm por leosansan »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
silla de ruedas a 80
Foro Libre
|
portaro
|
4
|
3,331
|
28 Mayo 2010, 03:29 am
por Constance
|
|
|
Cambio de silla
Foro Libre
|
kaiserr
|
0
|
1,702
|
24 Agosto 2012, 04:07 am
por kaiserr
|
|
|
Matriz con puntos de silla (lenguaje C)
Programación C/C++
|
NOB2014
|
9
|
14,550
|
13 Agosto 2014, 16:29 pm
por NOB2014
|
|
|
SILLA GAMING 1337 INDUSTRIES ¿? Que os parece?
Dudas Generales
|
KrazyFlow
|
1
|
2,145
|
14 Noviembre 2014, 03:44 am
por dRak0
|
|
|
Hallan un canguro abatido y atado a una silla en una carretera de Australia
« 1 2 3 4 »
Foro Libre
|
El_Andaluz
|
30
|
15,584
|
5 Julio 2017, 06:54 am
por Eleкtro
|
|