Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Don Pollo en 24 Marzo 2011, 22:24 PM

Título: Problema tonto con un bucle "for"
Publicado por: Don Pollo en 24 Marzo 2011, 22:24 PM
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.
Título: Re: Problema tonto con un bucle "for"
Publicado por: Akai en 24 Marzo 2011, 22:36 PM
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...
Título: Re: Problema tonto con un bucle "for"
Publicado por: Don Pollo en 24 Marzo 2011, 22:38 PM
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?
Título: Re: Problema tonto con un bucle "for"
Publicado por: D4RIO en 25 Marzo 2011, 05:26 AM
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)