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.