Problema tonto con un bucle "for"

Iniciado por Don Pollo, 24 Marzo 2011, 22:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Don Pollo

Veréis, tengo hecha esta función, pero resulta que cuando llega al "for" de abajo, termina la aplicación de repente y, además, el rendimiento de la CPU sube hasta casi al 100%. Le he dado mil vueltas y no le veo el fallo, a ver si me podéis decir que le pasa:

/* La función lo que hace es que inserta un valor en un vector dinámico en una posición dada, desplazando los elementos que hay a su derecha
un lugar a la derecha. */

void vector::inserta (const int &t, unsigned pos){

       if(tamf==taml){
       int *v1;
       tamf=tamf*2;
       try{
           if(!(v1=new int[tamf])) throw bad_alloc();
           for(int i=0;i<taml;i++){
               v1[i]=v[i];
           }
           delete []v;
       }
       catch (bad_alloc){
           cout << "Error al crear v1." << endl;
       }
       v=v1;
       v[taml]=t;
       taml++;
   }else if(taml<tamf){
       for(int i=(taml-1);i>=pos;i--) v[i++]=v[i]; //Aquí es donde se para.
v[pos]=t;
       taml++;
   }

}


Gracias de antemano!


PD: Rectifico, la aplicación no termina, si no que se queda ahí como si fuese un bucle infinito.

Akai

Código (cpp) [Seleccionar]
for(int i=(taml-1);i>=pos;i--) v[i++]=v[i];

te lo pongo en grande

for(int i=(taml-1);i>=pos;i--) v[i++]

Incrementas, decrementas, incrementas, decrementas...

Don Pollo

#2
Joder, estoy cegato perdido... Voy a cambiarlo y ahora te digo si fufa.

Edito: Ahora sí, ya va perfecto  ;D No sé como le he puesto "i++" en vez de "i+1"...

Por cierto, una duda existencial, que diferencia hay entre limpiar y generar el main project a generarlo directamente?

D4RIO

Lo realmente increíble es que el rendimiento del CPU "sube" hasta casi el 100%... deberías dejar ese programa corriendo! xD (Chiste Semántico)
OpenBSDFreeBSD