Autor |
Mensaje |
oscar83
Nivel 1
Registrado: 16 Mar 2009
Mensajes: 4
|
|
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 !!!
|
|
|
|
|
|
|
|
|
Kartlan
Nivel 5
Edad: 42
Registrado: 09 Ago 2005
Mensajes: 176
Ubicación: Once
Carrera: Informática
|
|
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.
|
|
|
|
|
|
|
|
|
SaaS
Nivel 7
Edad: 34
Registrado: 17 Dic 2008
Mensajes: 310
Ubicación: San Martín
Carrera: Informática
|
|
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 ?
|
|
|
|
|
|
|
|
|
GREgO
Nivel 8
Registrado: 21 Abr 2009
Mensajes: 771
Ubicación: New Belsen
Carrera: Electrónica
|
|
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...
|
|
|
|
_________________ 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!
|
|
|
|
|
Rada
Moderador
Edad: 37
Registrado: 10 Abr 2006
Mensajes: 2728
Ubicación: Caballito
Carrera: Informática
|
|
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
|
|
|
|
|
|
|
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 CrackerTracker365 Attacks blocked.
|
|
[ Tiempo: 0.3284s ][ Pedidos: 20 (0.2673s) ] |