Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
oscar83
Nivel 1



Registrado: 16 Mar 2009
Mensajes: 4


blank.gif
MensajePublicado: Lun Abr 12, 2010 8:17 pm  Asunto:  intercambio de elemtos de un vector en C Responder citandoFin de la PáginaVolver arriba

buenas..
necesito q me tiren un centro con esto
Tengo una una duda con el c
necesitos generar un vector de 100 posiciones, cargarlo con nros enteros y mostrar el vector ordenado con los numeros impares a la derecha y pares a izquierda, se me complice el hecho intercambiar los elementos y ordenarlos para q me queden los pares de un lado y los impares del otro, si me pueden dar una mano , se agradece !!!


   OfflineGalería Personal de oscar83Ver perfil de usuarioEnviar mensaje privado
Kartlan
Nivel 5


Edad: 43
Registrado: 09 Ago 2005
Mensajes: 176
Ubicación: Once
Carrera: Informática
argentina.gif
MensajePublicado: Lun Abr 12, 2010 9:32 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Lo que se me ocurre asi a las apuradas es:

1- Primero se me habia ocurrido una funcion que te ponga todos los pares al comienzo del vector y que te diga cuantos pares encontro, y despues usar una funcion para ordenar cada porcion del vector.

2- Pero despues se me ocurrio que podes arremangar un cachito el algoritmo de ordenamiento:

Código:

// Uso un burbujeo por que es lo mas tonto
// Supongo que swap(vector,i,j) es una boludes.

int compararEspecial(int a, int b) {
   if (a == b)
      return 0
   aEsPar = (a % 2 == 0);
   bEsPar = (b % 2 == 0);

   // Si ambos son pares o impares se usan el orden comun.
   if (aEsPar && bEsPar)
      return a-b;
   if (!aEsPar && !bEsPar)
      return a-b

   // Sino los pares son "menores" que los impares.
   // Si la funcion llega hasta aca ya se que uno es par y el otro no.
   if (aEsPar)
      return -1
   return 1
}

void ordenarEspecial (int* vector, int largo) {
  for (int i = 0; i < largo-1; i++) {
     for (int j = i+1; j<largo; j++) {
        if (compararEspecial(vector[j],vector[i]) < 0)
           swap(vector,i,j);
     }
  } 
}


PD: no se si la sintaxis esta bien, hace tiempo que no laburo en C.


Aries Género:Masculino Gallo OfflineGalería Personal de KartlanVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
SaaS
Nivel 7


Edad: 34
Registrado: 17 Dic 2008
Mensajes: 310
Ubicación: San Martín
Carrera: Informática
argentina.gif
MensajePublicado: Lun Abr 12, 2010 11:04 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

fijate así:

recorres el vector desde el principio buscando impares...
cuando encontras un impar recorres desde el final buscando pares....
cuando encontras un par lo intercambias con el par que encontraste antes...
seguis hasta que el del final llegue al principio o el del principio al final...

obviamente para intercambiar usas una variable auxiliar no ?


Geminis Género:Masculino Serpiente OfflineGalería Personal de SaaSVer perfil de usuarioEnviar mensaje privadoMSN Messenger
GREgO
Nivel 8



Registrado: 21 Abr 2009
Mensajes: 771
Ubicación: New Belsen
Carrera: Electrónica
argentina.gif
MensajePublicado: Lun Abr 12, 2010 11:17 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Kartlan escribió:

PD: no se si la sintaxis está bien, hace tiempo que no laburo en C.

Creo que sí, faltaría " ; " al finalizar cada return.

No es que sea jodido, ehh! Sólo aviso por si Oscar83 lo quiere compilar así de una... Wink

_________________
El ser humano primero cree en Papá Noel,
Después en Dios,
Luego en la Izquierda,
Y finalmente advierte que la posta es Hermanos Bladimir

................
Ya salió la Bladimir Papel nº 3! Conseguila en el baño de tu Ugi's!

 Género:Masculino  OcultoGalería Personal de GREgOVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Rada
Moderador


Edad: 37
Registrado: 10 Abr 2006
Mensajes: 2728
Ubicación: Caballito
Carrera: Informática
blank.gif
MensajePublicado: Mar Abr 13, 2010 1:34 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Retomando lo que dice kartlan... esa es la idea del ejercicio (si, estamos en todos lados).

La idea es que vos puedas separar (o abstraerte por decirlo mas bonito) lo que es el algoritmo de ordenamiento al criterio por el cual vos decis que un elemento es mayor o menor que otro.

Como algoritmo de ordenamiento kartlan uso burbujeo y coomo algoritmo para comparacion hizo una funcion del estilo mas tipico de las funciones de comparacion:
recibe 2 datos a comparar y devuelve:
- 0 si son iguales
- -1 si el 1er dato es menor al 2do dato
- 1 si el 1er dato es mayor al 2do dato

Saludos

_________________
[CAMPAÑA] Colaboremos entre todos por un foro más ordenado (click aquí)
[CAMPAÑA] Hacer un tópico por cada curso y con información ¡útil! (click aquí)


Gabba gabba we accept you we accept you one of us

Tauro Género:Masculino Tigre OcultoGalería Personal de RadaVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.2796s ][ Pedidos: 20 (0.2109s) ]