Guardar una posición de un vector

adm1003888
13 de Febrero del 2008
Ahora pasando a mi problema... utilizo el programa Dev-C++ y Borland C(este último es muy viejo lo sé u_u), lo digo por lo códigos, que quizás no sean todos iguales y hay muchos que desconozco aún.
Estoy practicando haciendo un examen "final", que puede ser muy sencillo para muchos pero es que hay un punto en particular que no lo puedo hacer. El punto es el siguiente:

• Ordenar el 2º vector en forma decreciente desde el primer número mayor a 10 hasta el final. Mostrarlo.

Les comento que solo voy a poner una parte del código porque sino sería un lío.

[code]void ordenar(int x[], int n)
{
int i,j=0,aux;
for(i=0;i<n;i++)
{
if(x>10)
{
x[j]=x;
j++;
}
}

j=0;
i=0;
for(i=laposicionquemefalta;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(x<x[j])
{
aux=x;
x[j]=x;
x[j]=aux;
}
}
}
return;
}[/code]

Como podrán notar en el código, ya de por sí, está mal. Es que no encuentro la manera de guardar la primera posición después del 10, es que al hacerlo se le borran todos los siguientes porque es un ciclo y recuerda el último visto mayor a 10 =S. El problema específicamente está acá.

[code]
if(x>10)
{
x[j]=x;
j++;
}[/code]

Este es el código para el "decreciente", pero sigo sin tener esa posición.

[code]
for(i=laposicionquemefalta;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(x<x[j])
{
aux=x;
x[j]=x;
x[j]=aux;
}
}
}
[/code]

Lo que hice(y está mal) fue guardar a través de "j" los que sean mayores a 10, y después sacarlo con la posición 0 que va a ser el primero que guarde pero no sirve porque necesito la posición, no el valor.

Si alguien puede ayudarme o si no me expresé bien por favor que me lo diga.

Saludos y desde ya gracias.

javier1309
13 de Febrero del 2008
El codigo seria:
void ordena(int *ptr,int n)
{
int i,j,aux;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(*(ptr+i)>*(ptr+j))
{
aux=*(ptr+i);
*(ptr+i)=*(ptr+j);
*(ptr+j)=aux;
}
}


En donde n es el numero de elementos del vector y *ptr es el vector.

Si no quieres pasarle un apuntador, deveras mandar llamar a la función asi:

int vector[10];
ordena(&vector,10);

adm1003888
13 de Febrero del 2008
Muchas gracias por responder. Ordenarlo de hecho ya lo podía hacer, lo que no puedo es guardar por ejemplo: "la primera posición mayor a un número". =S.

De todas maneras muchas gracias por responder.