elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: punto silla de una matriz en: 5 Abril 2014, 20:45 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:

Código
  1. int opc, f, c,  matriz[f][c] ;

* Esto si:

Código
  1. .........................
  2. int  f, c;
  3.  printf("numero de filas:");
  4.  scanf("%d", &f);
  5.  printf("numero de columnas:");
  6.  scanf("%d", &c);
  7.  int matriz[f][c];
  8. ...........................

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):


Código
  1. int i,iM,jm ,j,k,mayor=-1000,menor=1000;
  2.  for (j=0; j<m; j++){
  3.    mayor=-1000,menor=1000;
  4.    for(i=0; i<n; i++) {
  5.      if (matriz[i][j]>mayor){
  6.        mayor=matriz[i][j];
  7.        iM=i;
  8.      }
  9.    }

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:

Código
  1. for (k=0; k<m-1; k++){
  2.      if (matriz[iM][k]<menor){
  3.        menor=matriz[iM][k];
  4.        jm=k;
  5.      }
  6.    }

Y ya sólo queda comparar si el mayor de la columna coincide con el mínimo de la fila correspondiente:

Código
  1. if (mayor==menor)
  2.      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?
2  Programación / Programación C/C++ / Re: punto silla de una matriz en: 5 Abril 2014, 19:52 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 >.<
3  Programación / Programación C/C++ / punto silla de una matriz en: 5 Abril 2014, 04:57 am
hola me podrian ayudar a tener una idea de como entrarle pq de verdad que no se como hacerle miren
Código
  1. int main()
  2. {int opc, f, c,  matriz[f][c] ;
  3. do{
  4.        system("CLS");
  5.  
  6.   printf("8.punto de silla");
  7.   printf("0.Salir\n");
  8.   printf("que opcion desea?\n");
  9.   scanf("%d", &opc);
  10.    switch(opc){
  11.  
  12. case 8:
  13.  printf("numero de filas:");
  14.    scanf("%d", &f);
  15.    printf("numero de columnas:");
  16.    scanf("%d", &c);
  17.    llenaMatriz(f, c, matriz);
  18.    printf("la matriz es:\n");
  19.    despliegaMatriz(f,c,matriz);
  20.    break;
  21.  }
  22.  
  23.   } while(opc!=0);
  24.    return 0;
  25. }
  26.  
  27. void llenaMatriz(int n, int m, int matriz[n][m]){
  28. int i, j;
  29.    for (i=0; i<n; i++) {
  30.        for(j=0; j<m; j++) {
  31.            printf("Introduzca la posicion %d, %d: ", i+1, j+1);
  32.            scanf("%d", &matriz[i][j]);
  33.        }
  34.  
  35.    }
  36. }
  37.  
  38. void despliegaMatriz(int n, int m, int matriz[n][m]){
  39. int i, j;
  40.    for(i=0; i<n; i++) {
  41.        for (j=0; j<m; j++) {
  42.            printf("%d\t", matriz[i][j]);
  43.        }
  44.        printf("\n");
  45.    }
  46. }
  47.  
4  Programación / Programación C/C++ / Re: media con arreglos en: 4 Abril 2014, 18:46 pm
gracias a ambos ya lo resolvi de verdad muchas gracias
5  Programación / Programación C/C++ / media con arreglos en: 4 Abril 2014, 07:01 am
Código:
no entiendo pq no me funciona esto para sacar la media de un arreglo dinamico, me podrian decir que tiene mal o algun consejo?
code=c]#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 200



void media(int n,int arr[MAX]);

int main()
{int opc, n, arreglo[n] ;

   do{
        system("CLS");
   printf("Seleccione una accion.\n");
   printf("1.Multiplicacion de matrices.\n");
   printf("2.transpuesta de una matriz.\n");
   printf("4.fibonacci.\n");
   printf("7.Media,Varianza.");
   printf("0.Salir");
   scanf("%d", &opc);
    switch(opc){
    case 0:
        printf("gracias por usar el programa");
        system("PAUSE");
        break;

case 7:
    printf("cuantos numeros desea evaluar?");
    scanf("%d", &n);
    media(n, arreglo);
    break;


    }

   } while(opc!=0);
    return 0;
}


void media(int n,int arr[MAX]){
int i, x=0, j;
for (i=0;i<n;i++){
    printf("ingrese el %d numero", i+1);
    scanf("%d", &arr[i]);
}
for (j=0;j<n;j++){
    x=x+arr[j];
}
printf("la media es %d", x/n);
}
6  Programación / Programación C/C++ / Re: Matrices en C en: 3 Abril 2014, 20:26 pm

Código
  1. void llenaMatriz(int n, int m, int matriz[n][m]

Y análogamente en las demás funciones y declaraciones.

Y lo que no puedes hacer en la traspuesta de repente cambiar las filas por las columnas sin más. Sólo si son cuadradas las matrices no petará el código.


¡¡¡¡ Saluditos! ..... !!!!



me sigue dando el error si quieres correlo para ver si es tal vez mi pc o no se pero no me quiere continuar a la segunda fila de la matriz
7  Programación / Programación C/C++ / Matrices en C en: 3 Abril 2014, 19:38 pm
ayudenme que por alguna razon el programa no me avanza a la segunda fila, es de una tarea y eso es lo que he avanzado y me hace lo mismo en la transpuesta ayuda porfavor:((

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 200
  4.  
  5. void llenaMatriz(int n, int m, int matriz[MAX][MAX]);
  6. void despliegaMatriz(int n, int m, int matriz[MAX][MAX]);
  7. void transpuesta(int n, int m, int matriz[MAX][MAX]);
  8. void multiplicacion(int fila, int col, int fila2, int col2, int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX]);
  9.  
  10. int main()
  11. {int opc, f, c, c2, f2, matriz[f][c], matriz2[f][c], matriz3[f][c];
  12.  
  13.   do{
  14.        system("CLS");
  15.   printf("Seleccione una accion.\n");
  16.   printf("1.Multiplicacion de matrices.\n");
  17.   printf("2.transpuesta de una matriz.\n");
  18.   scanf("%d", &opc);
  19.    switch(opc){
  20. case 1:
  21.    printf("numero de filas:");
  22.    scanf("%d", &f);
  23.    printf("numero de columnas:");
  24.    scanf("%d", &c);
  25.    llenaMatriz(f, c, matriz);
  26.  
  27.    printf("numero de filas de la segunda matriz:");
  28.    scanf("%d", &f2);
  29.    printf("numero de columnas de la segunda matriz:");
  30.    scanf("%d", &c2);
  31.    llenaMatriz(f2, c2, matriz2);
  32.    multiplicacion(f, c, f2, c2, matriz, matriz2, matriz3);
  33.    despliegaMatriz(f, c, matriz);
  34.    despliegaMatriz(f2, c2, matriz2);
  35.    despliegaMatriz(f, c2, matriz3);
  36.    break;
  37.  
  38. case 2:
  39.    printf("numero de filas:");
  40.    scanf("%d", &f);
  41.    printf("numero de columnas:");
  42.    scanf("%d", &c);
  43.    llenaMatriz(f, c, matriz);
  44.    transpuesta(f, c, matriz);
  45.    break;
  46.  
  47.  
  48.    }
  49.  
  50.   } while(opc!=0);
  51.    return 0;
  52. }
  53.  
  54. void llenaMatriz(int n, int m, int matriz[MAX][MAX]){
  55. int i, j;
  56.    for (i=0; i<n; i++) {
  57.        for(j=0; j<m; j++) {
  58.            printf("Introduzca la posicion %d, %d: ", i+1, j+1);
  59.            scanf("%d", &matriz[i][j]);
  60.        }
  61.  
  62.    }
  63. }
  64.  
  65. void despliegaMatriz(int n, int m, int matriz[MAX][MAX]){
  66. int i, j;
  67.    for(i=0; i<n; i++) {
  68.        for (j=0; j<m; j++) {
  69.            printf("%d\t", matriz[i][j]);
  70.        }
  71.        printf("\n");
  72.    }
  73. }
  74.  
  75. void multiplicacion(int fila, int col, int fila2, int col2, int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX]) {
  76.    int i, j, k;
  77. if(col==fila2){
  78.    for(i=0;i<fila;i++){
  79.      for(j=0;j<col2;j++){
  80.          C[i][j]=0;
  81.          for(k=0;k<col;k++){
  82.              C[i][j]=(C[i][j]+(A[i][k]*B[k][j]));
  83.          }
  84.      }
  85.  }
  86. }else{printf("no es posible la multiplicacion");}
  87. }
  88.  
  89.  
  90. void transpuesta(int n, int m, int matriz[MAX][MAX]){
  91. int i, j;
  92.  
  93.    for (j=0; j<m; j++ ){
  94.        for(i=0; i<n; i++) {
  95.            printf("%d\t", matriz[i][j]);
  96.        }
  97.        printf("\n");
  98.    }
  99. }
  100.  
  101.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines