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);
}