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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema Ordenar Matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Ordenar Matriz  (Leído 3,075 veces)
Decay15

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema Ordenar Matriz
« en: 26 Mayo 2016, 22:53 pm »

Buenas noches,
Estoy intentando hacer este problema donde te piden una matriz mxn y tienes que dar un vector con todos los elementos que aparecen en la matriz de forma que no se repitan los números (si un numero esta mas de una vez en la matriz se obvia) y ese vector tiene que estar ordenado de menor a mayor.
Los datos que me dan son que utilice estas dos funciones:

buscarVector(v, n, numero, pos): esta función devuelve el valor 1 si el numero se encuentra en el vector v y 0 en caso contrario. La longitud de v es n. Pos devolverá la posición del vector donde se encontró el número o donde debería insertarse para que el vector v siguiera ordenado de menor a mayor.

repetidosMatriz(matriz, m, n, numeros, l): dada la matriz mxn, devuelve el vector números de longitud l. este vector ordena todos los numeros existentes en la matriz. Se debe usar la función anterior de forma que el vector vaya quedando ordenado conforme se escribe y no haya repetidos.

Ejemplo: 0 9 2 4 6 --> devuelve (0, 1, 2, 4, 5, 6, 8, 9)
             5 6 1 8 0
             4 8 0 2 9

La verdad es que ando un poco perdido, adjunto lo que llevo realizado pero cuando termino de definir la matriz me da error. Muchas gracias de antemano.

#include<stdio.h>
#include<stdlib.h>
#define TAM 50
 
void dimension(int *m,int *n){
 
    printf("Dime las dimensiones de la matriz M (m,n):");
    scanf("%d,%d",&*m,&*n);
 
}
 
void matriz(int x[TAM][TAM],int m,int n){
 
   int i,j;
 
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
                printf("Dime el valor del elemento (%d,%d)",i+1,j+1);
                scanf("%d",&x[j]);
 
        }
    }
}
void mostrarMatriz(int x[TAM][TAM],int m,int n){
 
   int i,j;
 
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
                printf("%d ",x[j]);
 
        }
        printf("\n");
    }
}
 
int buscarVector(int v[TAM],int n,int numero,int pos){
 
    int i,j,aux;
    v[0]=0;
    printf("%d",n);
    for(i=0;i<n;i++){
        if(numero==v){
            return(1);
        }
    }
    i=0;
    while(numero<v){
        pos=i;
        i++;
    }
 
    for(i=pos;i<n+1;i++){
        aux=v;
        v[pos]=numero;
        v[i+1]=aux;
    }
 
    return(0);
}
 
void escribir(int x[TAM],int l){
 
    int i;
 
    printf("Los valores del vector son:\n");
 
    for(i=0;i<l;i++){
 
            printf("%d ",x);
 
    }
    printf("\n");
}
 
void repetidosMatriz(int matriz[TAM][TAM],int m, int n,int numeros[TAM],int *l){
 
    int i,j,numero,pos;
    *l=1;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            numero=matriz[j];
            if(buscarVector(numeros[TAM],*l,numero,pos)==0){
 
                *l++;
            }
        }
    }
 
}
int main(){
 
int M[TAM][TAM],m,n,numeros[TAM],l;
 
dimension(&m,&n);
matriz(M,m,n);
mostrarMatriz(M,m,n);
repetidosMatriz(M,m,n,numeros,&l);
escribir(numeros,l);
 
 
system("pause");
return(0);
}


« Última modificación: 26 Mayo 2016, 23:18 pm por Decay15 » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema Ordenar Matriz
« Respuesta #1 en: 26 Mayo 2016, 23:04 pm »

En el for en el scanf

Código
  1. scanf("%d",&x[j]);

cuando deberia de ser

Código
  1. scanf("%d",&x[i][j]);

Saludos


En línea

Decay15

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema Ordenar Matriz
« Respuesta #2 en: 26 Mayo 2016, 23:27 pm »

En el for en el scanf

Código
  1. scanf("%d",&x[j]);

cuando deberia de ser

Código
  1. scanf("%d",&x[i][j]);

Saludos

Gracias por responder tan rápido!
Nose porque lo que copio de mi compilador no corresponde al 100% con lo que se muestra en el foro, tanto en el scanf como dentro de la funcion buscarVector donde pongo if(numero==v(i), no salen a veces los corchetes =/.

igualmente mi duda viene despues de inicializar la matriz, a la hora de buscar y ordenar el vector con los elementos de la matriz el programa peta, realemente no creo que sea un fallo de ese estilo, sino que no tengo muy claro como hacer lo de buscar y ordenar los numeros.
Muchas garcias
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Problema Ordenar Matriz
« Respuesta #3 en: 26 Mayo 2016, 23:36 pm »

Si el programa falla es por que posiblemente estas escribiendo o leyendo de un area fuera de los limites de la matriz.

Tienes que buscar un algoritmo de ordenamienro y apegarte a el...


De ser posible yo ordenaria los elementos antes de agregarlos a la matriz ya que manipularlos dentro de la matriz puede complicarse un poco en especial si no tienes experiencia ordenando dartos en un arreglo sencillo. Se te complicará hacerlo ya estando en una matriz.


Yo manejaria un arrglo lineal y apara pedir elementos de la matriz utilizaria un desfazamiento de

 (Fila * numero total de columnas) + columna pedida.

Saludos.

PD. Lo que.dices de el codigo es por que no lo po es con la etiqueta geshi de lenguaje c
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar matriz alfabeticamente
Programación C/C++
programacion_c 7 11,187 Último mensaje 25 Abril 2012, 00:19 am
por david_BS
ordenar matriz
Java
~H~ 1 2,216 Último mensaje 4 Noviembre 2013, 15:52 pm
por egyware
Ordenar una matriz sin repetir numeros.
Programación C/C++
veravluis 5 4,783 Último mensaje 25 Abril 2016, 00:29 am
por MAFUS
(python) como ordenar matriz?
Scripting
horacio_b92 5 10,922 Último mensaje 7 Enero 2017, 21:19 pm
por jairoes
Ordenar una matriz en C?
Programación C/C++
palacio29 0 9,689 Último mensaje 6 Septiembre 2016, 01:06 am
por palacio29
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines