Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2016
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Mi codigo de ordenacion por insercion no funciona bien

Hola amigos, estoy intentando crearme un pequeño codigo el cual coja dos arrays con enteros y los vaya insertando ordenados en un tercer array de forma ya ordenada sin tener que usar ningun otro metodo de ordenacion en ninguno de los 3 arrays. El caso es que no doy con la tecla y hace cosas raras. Os pongo mi codigo a ver si pueden echarme una mano:
Código PHP:
#include <stdio.h>
#include <stdlib.h>
 
int buscarPos(int valorint array[], int size_array)
{
    
int pos=0,aux_pos;
 
    do{
        
aux_pos=pos;
        if(
valor > array[pos]){
            
pos = (pos size_array) / 2;
            if(
aux_pos==pos && pos 0){
                
pos++;
            }
        }else{
            if(
pos && array[pos-1] < valor){
                break;
            }else if(
size_array && valor <= array[pos])
                break;
            
size_array size_array aux_pos;
            
pos size_array 2;
            if(
aux_pos==pos && pos 0){
                
pos--;
            }
        }
    }while(
pos size_array && aux_pos != pos);
    return 
pos;
}
 
int insertarElemento(int valorint array[], int size_arrayint pos)
{
    
int i;
 
    for (
i=size_arrayposi--) {
        array[
i]=array[i-1];
    }
    array[
pos]=valor;
 
    
size_array++;
    return 
size_array;
}
 
int main(int argccharargv[])
{
    
int a[]={50,2,2,100,5,3,1,7,9};
    
int b[]={4,2,6,10,8};
    
//int *c;
    
int c[50];
    
int pos,i,j;
    
int nElements=0,size_array1,size_array2;
 
    
//Solicito la memoria necesaria para colocar la lista combinada ordenada
    //c= calloc((sizeof(a)+sizeof(b))/sizeof(int),sizeof(int));
    
size_array1=sizeof(a)/sizeof(int);
    
size_array2=sizeof(b)/sizeof(int);
 
    for(
i=0,j=0;nElements size_array1+size_array2;){
        if(
i<size_array1){
            
//Obtengo la posicion que tomará dicho elemento en la lista en orden ascendente
            
pos buscarPos(a[i],c,nElements);
            
nElements insertarElemento(a[i],c,nElements,pos);
            
i++;
        }
        if(
j<size_array2){
            
pos buscarPos(b[j],c,nElements);
            
nElements insertarElemento(b[j],c,nElements,pos);
            
j++;
        }
    }
 
    for(
pos=0;pos<nElements;pos++)
        
printf("%i\n",c[pos]);
    
//free(c);
    
getchar();
    return 
0;

Gracias por adelantado.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
funciona bien en windows 7 64b pero en XP no funciona ASAPLTDA Varios 5 06-05-2011 16:24:50
funcion RANDOM ... funciona bien ?!!!!! ingel Varios 5 07-04-2010 15:22:08
No funciona bien el QrImage en el QReport AGAG4 Impresión 11 29-10-2008 16:16:56
QRImage no funciona bien eljinete Impresión 4 16-12-2005 01:02:05
La insercion de registros funciona pero..... ilichhernandez Conexión con bases de datos 1 22-10-2005 11:24:33


La franja horaria es GMT +2. Ahora son las 12:31:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi