Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Burbuja en Matriz

Estas en el tema de Burbuja en Matriz en el foro de C/C++ en Foros del Web. Hola chicos tengo un ejercicio sobre buscar un valor en una matriz bidimensional,mas o menos como lo he pensado,keria usar el metodo de ordenamiento de ...
  #1 (permalink)  
Antiguo 19/04/2010, 04:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Información Burbuja en Matriz

Hola chicos tengo un ejercicio sobre buscar un valor en una matriz bidimensional,mas o menos como lo he pensado,keria usar el metodo de ordenamiento de la burbuja para ordenar el contenido de la matriz y luego con otro algoritmo de busqueda daria con el valor..,mi problema es que 1 no se como hacer la burbuja en matrizes solo en vectores,segundo que viendo en otras web recomiendan guardar los valores de la matriz en un vector unidimensional y en el hacer la busqueda..
Que me recomendais?... si me podeis porfis hechar una mano con como copiar el contenido de la matriz en un vector seria chachi.. grax
Código C:
Ver original
  1. /*buscar en una matriz un valor insertado por teclado.*/
  2.  
  3. #include<stdio.h>
  4.  
  5. int main(){
  6.  
  7. int i=0,j=0,k=0,mat[3][5],vec[15];
  8.  
  9. printf("Inserta 15 Valores para la matriz:\n");
  10. for(i=0;i<3;i++){
  11. for(j=0;j<5;j++){
  12. scanf("%d",&mat[i][j]);
  13.  
  14.   for(k=0;k<15;k++){
  15.   vec[k]=mat[i][j];
  16.  
  17.   }
  18.  
  19. }
  20. }
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27. for(i=0;i<3;i++){
  28. for(j=0;j<5;j++){
  29. printf("\t%d",mat[i][j]);
  30. }
  31. printf("\n");
  32.  
  33. }
  34.  
  35. //vector
  36. for(k=0;k<15;k++){
  37. printf("%d",vec[k]);
  38. }
  39. return 0;
  40. }

como podeis ver al ejecutar me guarda solo el ultimo valor de la matriz en el vector.

Última edición por roser24; 19/04/2010 a las 04:45
  #2 (permalink)  
Antiguo 19/04/2010, 05:34
 
Fecha de Ingreso: abril-2010
Mensajes: 11
Antigüedad: 14 años
Puntos: 0
Respuesta: Burbuja en Matriz

Hola roser, tienes que sacar el for donde rellenas el vector fuera de las llaves donde pides los datos para la matriz.
  #3 (permalink)  
Antiguo 19/04/2010, 13:35
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Burbuja en Matriz

Si en definitiva mejor pasar los datos a un vectoy y buscar desde allí que pesadilla estar pendiente de las celdas de una matriz con un metodo de ordenamiento o busqueda...
luego si acaso con el vector arrglado, se sobrescribe en la matriz..
  #4 (permalink)  
Antiguo 19/04/2010, 14:58
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Burbuja en Matriz

Hola ,gracias chicos por responder,la verdad es que no se como guardar los elementos de la matriz en un vector... como lo deberia de hacer?
  #5 (permalink)  
Antiguo 19/04/2010, 15:23
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Burbuja en Matriz

Algo Asi podrias hacer :

Código C++:
Ver original
  1. printf("Inserta 15 Valores para la matriz:\n");
  2. for(i=0;i<3;i++)
  3. {
  4.         for(j=0;j<5;j++)
  5.        {
  6.                 scanf(" %d",&mat[i][j]);
  7.                 vec[i*5+j]=mat[i][j];
  8.        }
  9. }

Suerte...!!!
  #6 (permalink)  
Antiguo 19/04/2010, 15:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Burbuja en Matriz

Hola,aguirremanuel gracias por el codigo pero please me lo podrias explicar un poquillo ?... la linea vec[i*5+j]=mat[i][j];

gracias
  #7 (permalink)  
Antiguo 19/04/2010, 15:45
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Burbuja en Matriz

Bueno la cosa va así :

valores variables .... ecuacion == valores == resultado

i = 0 ; j = 0 // ..........i * 5 + j == 0 * 5 + 0 == 0

i = 0 ; j = 1 // ..........i * 5 + j == 0 * 5 + 1 == 1

i = 0 ; j = 2 // ..........i * 5 + j == 0 * 5 + 2 == 2

i = 0 ; j = 3 // ..........i * 5 + j == 0 * 5 + 3 == 3

i = 0 ; j = 4 // ..........i * 5 + j == 0 * 5 + 4 == 4

i = 1 ; j = 0 // ..........i * 5 + j == 1 * 5 + 0 == 5

i = 1 ; j = 1 // ..........i * 5 + j == 1 * 5 + 1 == 6

i = 1 ; j = 2 // ..........i * 5 + j == 1 * 5 + 2 == 7

i = 1 ; j = 3 // ..........i * 5 + j == 1 * 5 + 3 == 8

i = 2 ; j = 4 // ..........i * 5 + j == 2 * 5 + 4 == 9

i = 2 ; j = 0 // ..........i * 5 + j == 2 * 5 + 0 == 10

i = 2 ; j = 1 // ..........i * 5 + j == 2 * 5 + 1 == 11

i = 2 ; j = 2 // ..........i * 5 + j == 2 * 5 + 2 == 12

i = 2 ; j = 3 // ..........i * 5 + j == 2 * 5 + 3 == 13

i = 2 ; j = 4 // ..........i * 5 + j == 2 * 5 + 4 == 14
  #8 (permalink)  
Antiguo 19/04/2010, 16:23
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Burbuja en Matriz

Cita:
Iniciado por aguirremanuel Ver Mensaje
Bueno la cosa va así :

valores variables .... ecuacion == valores == resultado

i = 0 ; j = 0 // ..........i * 5 + j == 0 * 5 + 0 == 0

i = 0 ; j = 1 // ..........i * 5 + j == 0 * 5 + 1 == 1

i = 0 ; j = 2 // ..........i * 5 + j == 0 * 5 + 2 == 2

i = 0 ; j = 3 // ..........i * 5 + j == 0 * 5 + 3 == 3

i = 0 ; j = 4 // ..........i * 5 + j == 0 * 5 + 4 == 4

i = 1 ; j = 0 // ..........i * 5 + j == 1 * 5 + 0 == 5

i = 1 ; j = 1 // ..........i * 5 + j == 1 * 5 + 1 == 6

i = 1 ; j = 2 // ..........i * 5 + j == 1 * 5 + 2 == 7

i = 1 ; j = 3 // ..........i * 5 + j == 1 * 5 + 3 == 8

i = 2 ; j = 4 // ..........i * 5 + j == 2 * 5 + 4 == 9

i = 2 ; j = 0 // ..........i * 5 + j == 2 * 5 + 0 == 10

i = 2 ; j = 1 // ..........i * 5 + j == 2 * 5 + 1 == 11

i = 2 ; j = 2 // ..........i * 5 + j == 2 * 5 + 2 == 12

i = 2 ; j = 3 // ..........i * 5 + j == 2 * 5 + 3 == 13

i = 2 ; j = 4 // ..........i * 5 + j == 2 * 5 + 4 == 14

Hola AguiireManuel,muchas gracias por la ayuda,muy bien pensado =),efectivamente de esa manera si me traslada todos los numeros al vector =).
hare eso y luego ordenare por burbuja ..una vez ordenado.. busco directamente y luego paso los valores a la matriz no?
mat[i][j]=vec[i] mmm lo iba a hacer asi.. pero tal y como vi tu codigo pensare otra forma parecida a la tuya jiji,grax
  #9 (permalink)  
Antiguo 19/04/2010, 16:53
aguirremanuel
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Burbuja en Matriz

Tranquilo mi pana, lo que no entiendo es para que quieres ordenar la matriz, si para buscar un dato dentro de la misma no hace falta ordenarala...
  #10 (permalink)  
Antiguo 19/04/2010, 18:09
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Burbuja en Matriz

para guardar una matriz nxm en un vector:

Creas un vector de tamaño n*m
luego haces esto:
Código C++:
Ver original
  1. int con=0;
  2.  int  T=n*m;
  3.  int vector[T];
  4.  for(int i=0;i<n;i++){
  5.     for(int j=0;j<m;j++){
  6.       vector[con] = matriz[i][j];
  7.       con++;
  8.     }
  9.  }
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse

Última edición por mhax; 19/04/2010 a las 18:18
  #11 (permalink)  
Antiguo 20/04/2010, 11:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Burbuja en Matriz

Hola chicos gracias por los codigos, la verdad es que en si el ejercicio era porque no se me ocurria como buscar un valor en una matriz ..
mirando por internet encontre este codigo ,el cual aparentemente no tiene graves errores .. pero al ejecutarlo me da un error super rapido y se cierra mi turbo C...
el codigo raro es este:

Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. int a[100][100],b,i,j,c=0,d;
  5. printf("escriba el tamaño de la matriz NxN:");
  6.  scanf("%d",&b);
  7. for (i=0;i<b;i++) {
  8. for (j=0;j<b;j++) {
  9. printf("[%d %d]:",i+1,j+1);
  10.  scanf("%d",&a[i][j]);
  11. }
  12. }
  13. printf("escriba el numero a buscar dentro de la matriz:");
  14. scanf("%d",&d);
  15. printf("\nla matriz original es:\n");
  16. for (i=0;i<b;i++) {
  17. for (j=0;j<b;j++) {
  18. printf(" %d ",a[i][j]);
  19. }
  20. printf("\n");
  21. }
  22. for (i=0;i<b;i++) {
  23. for (j=0;j<b;j++) {
  24. if (a[i][j] == d) {
  25. c = c + 1;
  26. a[i][j] = 0;
  27. }
  28. }
  29. }
  30. printf("\nla nueva matriz es:\n");
  31. for(i=0;i<b;i++) {
  32. for(j=0;j<b;j++) {
  33. printf(" %d ",a[i][j]);
  34. }
  35. printf("\n");
  36. }
  37. printf("\nla cantidad de numeros reemplazados son: %d",c);
  38. return 0;
  39. }

ese es todo el programa pero mas que nada lo que me interesa en comprobar que si se ejecuta bien la busqueda .. sin necesidad de copiar los valores en un vector ordenarlos,y luego usar un algoritmo de busqueda dicotomia... ya que la verdad es que es mucho lio para un enunciado tan corto..
  #12 (permalink)  
Antiguo 20/04/2010, 12:03
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Burbuja en Matriz

Todavia es un misterio para que quieres ordenar la matriz para buscar 1 elemento. Para que?
  #13 (permalink)  
Antiguo 20/04/2010, 12:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Información Respuesta: Burbuja en Matriz

Ups perdona,me explique fatal el codigo que peta es el ultimo y solo queria ver si se ejecutaba bien y si fuera asi... usaria parte de ese codigo para mi ejercicio "buscar un valor en una matriz", ya que de otra manera se me paso por la cabeza el copiar los valores en un vector y luego ordenarlos y luego buscar el valor.. y todo eso en codigo es mucho lio .. por eso me gustaria que porfavor vierais en el ultimo codigo el porque peta,y si es correcto ese codigo..

gracias..
  #14 (permalink)  
Antiguo 20/04/2010, 15:33
Avatar de sadalsuud  
Fecha de Ingreso: marzo-2010
Ubicación: en la casa del duende
Mensajes: 96
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Burbuja en Matriz

roser24 corrí el codigo y está bien sin embargo me mostraba un error por unos espacios antes de los scanf raro ese error ... en todo caso copio el codigo aqui


Código C++:
Ver original
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. int a[100][100],b,i,j,c=0,d;
  5. printf("escriba el tamaño de la matriz NxN:");
  6. scanf("%d",&b);
  7. for (i=0;i<b;i++) {
  8. for (j=0;j<b;j++) {
  9. printf("[%d %d]:",i+1,j+1);
  10. scanf("%d",&a[i][j]);
  11. }
  12. }
  13. printf("escriba el numero a buscar dentro de la matriz:");
  14. scanf("%d",&d);
  15. printf("\nla matriz original es:\n");
  16. for (i=0;i<b;i++) {
  17. for (j=0;j<b;j++) {
  18. printf(" %d ",a[i][j]);
  19. }
  20. printf("\n");
  21. }
  22. for (i=0;i<b;i++) {
  23. for (j=0;j<b;j++) {
  24. if (a[i][j] == d) {
  25. c = c + 1;
  26. a[i][j] = 0;
  27. }
  28. }
  29. }
  30. printf("\nla nueva matriz es:\n");
  31. for(i=0;i<b;i++) {
  32. for(j=0;j<b;j++) {
  33. printf(" %d ",a[i][j]);
  34. }
  35. printf("\n");
  36. }
  37. printf("\nla cantidad de numeros reemplazados son: %d",c);
  38. return 0;
  39. }

ciao
  #15 (permalink)  
Antiguo 20/04/2010, 16:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Burbuja en Matriz

mmm... no si es raro veras compilarlo si efectivamente no da errores pero al ejecutarlo me sale como un error "NTVDM.EXE dejo de funcionar y se queda colgado el turbo c y me obliga a finalizar ,solo me ocurre con ese codigo cualquier otros me ejecuta y compila bien.. es sumamente extraño..

Etiquetas: burbuja, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:13.