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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema con varias lineas de código [C++] en: 15 Junio 2011, 11:41 am
Veréis, tengo el siguiente código que nos ha dejado el profesor:

Código
  1. /*
  2.  
  3. Si el fichero es nuevo, le metemos los datos para la tabla, y la cubeta que nos dicen.
  4.  
  5. Reservamos memoria para la cubeta.
  6.  
  7. */
  8.  
  9. void ficheroDisperso::crear(string& url, unsigned int tamTabla, unsigned int tamCubeta)
  10.  
  11. {
  12.  
  13. if(this->fDisp.is_open())
  14.  
  15. this->fDisp.close();
  16.  
  17. if(this->cub.datos == NULL)
  18.  
  19. delete[] this->cub.datos;
  20.  
  21.  
  22.  
  23. this->fDisp.open(url.c_str(), ios::in | ios::out | ios::binary | ios::trunc);
  24.  
  25.  
  26.  
  27. if(!this->fDisp.is_open())
  28.  
  29. throw excepciones::fichNoAbierto();
  30.  
  31.  
  32.  
  33. this->tamTabla=tamTabla;
  34.  
  35. this->tamCubeta=tamCubeta;
  36.  
  37. cub.datos = new Pueblo[this->tamCubeta];
  38.  
  39.  
  40.  
  41. this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));
  42.  
  43. this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));
  44.  
  45.  
  46.  
  47. for (unsigned int i=0; i <tamTabla; ++i)
  48.  
  49. {
  50.  
  51. this->fDisp.write(reinterpret_cast<char *>(&cub.tam), sizeof(unsigned int));
  52.  
  53. this->fDisp.write(reinterpret_cast<char *>(cub.datos), sizeof(Pueblo)*tamCubeta);
  54.  
  55. }
  56.  
  57. }

Pero no entiendo las líneas que ponen esto:

Código
  1. this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));
  2.  
  3. this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));
  4.  

Podrían decirme cuál es su finalidad? Si no creo mal, podría ser algo de un casting?

Gracias de antemano!  ;D
2  Programación / Programación C/C++ / Problema al leer cadenas con espacios [C++] en: 19 Mayo 2011, 18:30 pm
Veréis, tengo esta función:

Código:
void Farmacia::meterMedicamento(){
   string acodigo;
    char anombre[50];
    char aformato[50];
    string alaboratorio;
    float apvp;
   Casilla *cas;
    int unidades;
   
    cout << "Inserte el nombre del medicamento: ";
    cin>>anombre;
    do{
    cout<<"Inserte el código de 7 dígitos: ";
    cin>>acodigo;
    }while(acodigo.length()!=7);
    cout<<"Inserte el formato del medicamento: ";
    //cin>>aformato;
    fflush(stdin);
    fgets(aformato,50,stdin);
    aformato[strlen(aformato)-1]='\0';
    cout<<"Inserte el laboratorio: ";
    cin>>alaboratorio;
    cout<<"Inserte el precio: ";
    cin>>apvp;
    cout<<"Indique las unidades que habrá en el stock: ";
    cin>>unidades;

    if(unidades>=0){
   Medicamento med(acodigo, anombre, aformato, alaboratorio, apvp);
   this->nuevoMedicamento(&med);
   cas = this->casillaVacia();
   this->colocarMedicinaEstante(med.verCodigo(), cas, unidades);
    }

Y cuando pasa por leer el formato del medicamento, se lo salta directamente y no puedo introducírselo.

Me podéis decir qué está mal?

Gracias de antemano.  :)
3  Programación / Programación C/C++ / Problema al compilar [C++] en: 2 Mayo 2011, 12:25 pm
Veréis, me han mandado hacer una aplicación para una farmacia robotizada. Estoy usando NetBeans 7.0. El caso es que me da error al compilar, pero no me muestra error alguno. Lo que me devuelve al limpiar y compilar es esto:

Código:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf
make[1]: se ingresa al directorio «/home/zeki/NetBeansProjects/prac2_edi2»
rm -f -r build/Debug
rm -f dist/Debug/GNU-Linux-x86/prac2_edi2
make[1]: se sale del directorio «/home/zeki/NetBeansProjects/prac2_edi2»

CLEAN SUCCESSFUL (total time: 74ms)
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: se ingresa al directorio «/home/zeki/NetBeansProjects/prac2_edi2»
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/prac2_edi2
make[2]: se ingresa al directorio «/home/zeki/NetBeansProjects/prac2_edi2»
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/casilla.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/casilla.o.d -o build/Debug/GNU-Linux-x86/casilla.o casilla.cpp
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/robot.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/robot.o.d -o build/Debug/GNU-Linux-x86/robot.o robot.cpp
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/medicamento.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/medicamento.o.d -o build/Debug/GNU-Linux-x86/medicamento.o medicamento.cpp
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/farmacia.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/farmacia.o.d -o build/Debug/GNU-Linux-x86/farmacia.o farmacia.cpp
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/estante.o.d
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/estante.o.d -o build/Debug/GNU-Linux-x86/estante.o estante.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++     -o dist/Debug/GNU-Linux-x86/prac2_edi2 build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-x86/casilla.o build/Debug/GNU-Linux-x86/robot.o build/Debug/GNU-Linux-x86/medicamento.o build/Debug/GNU-Linux-x86/farmacia.o build/Debug/GNU-Linux-x86/estante.o  
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/prac2_edi2] Error 1
make[2]: se sale del directorio «/home/zeki/NetBeansProjects/prac2_edi2»
make[1]: *** [.build-conf] Error 2
make[1]: se sale del directorio «/home/zeki/NetBeansProjects/prac2_edi2»
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 1s

Podríais decirme a qué se debe?

Un saludo y gracias!
4  Programación / Programación C/C++ / 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.
5  Programación / Programación C/C++ / Duda con el "&" en la declaración de funciones [C++] en: 21 Marzo 2011, 19:07 pm
Veréis, tengo una duda que me reconcome por dentro y es que no comprendo cuando se pone el "&" delante del nombre de las funciones y cuando se pone al lado de los parámetros.

Algún alma caritativa que me lo explique?

Gracias de antemano!  ;D
6  Programación / Programación C/C++ / Como saber si el dato introducido por teclado es numérico? [C++] en: 17 Marzo 2011, 18:24 pm
Pues eso, estoy haciendo una práctica y necesito saber si hay alguna función para saber si el dato que han introducido por teclado es de tipo numérico.

Sé que puede ser una duda bastante tonta, pero me he quedado bloqueado en ese punto de la aplicación  :-\


Un saludo y gracias de antemano!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines