Foro de elhacker.net

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:

Código:
/* 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
  1. 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)