elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema tonto con un bucle "for"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema tonto con un bucle "for"  (Leído 2,285 veces)
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Problema tonto con un bucle "for"
« 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.


« Última modificación: 24 Marzo 2011, 22:27 pm por Don Pollo » En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Problema tonto con un bucle "for"
« Respuesta #1 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...


En línea

Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Problema tonto con un bucle "for"
« Respuesta #2 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?
« Última modificación: 24 Marzo 2011, 22:47 pm por Don Pollo » En línea

D4RIO


Desconectado Desconectado

Mensajes: 1.004


U N I X


Ver Perfil WWW
Re: Problema tonto con un bucle "for"
« Respuesta #3 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)
En línea

OpenBSDFreeBSD
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines