Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#631
Cita de: MAFUS en  8 Marzo 2017, 12:23 PM
Supongo que, al igual que scanf, cin usa los espacios en blanco como separadores de datos. Cuando encuentra uno cree que ha llegado al final de la cadena esperada.
En C++, creo que para adquirir una cadena con espacios es con
Código (c++) [Seleccionar]
std::getline(std::cin, mi_cadena);
Para std::string, sí. Para char*, entonces será:
Código (cpp) [Seleccionar]
cin.getline(cadena, tamaño_cadena); // Lee hasta '\n'
// O
cin.getline(cadena, tamaño_cadena, caracter_delimitador); // Lee hasta el delimitador


O sea:
Código (cpp) [Seleccionar]
cin.getline(nombre, 40);
#632
Si pones un ejemplo del código en el que uses los métodos de la clase m_register, se me despejarían algunas dudas.
No estoy seguro de que realmente te interese una función variadic.
Si quieres comprimir los 3setters y los 3 getters en 1 setter y 1 getter, podrías meter los 3 maps en un array (o en una std::list si te interesa que sea una cantidad de maps variable (o std::vector, vaya, según necesidades)), y en los setters/getters, recibir como parámetro el índice del map.

Si aun quieres utilizar un método variadic, ver un ejemplo de uso sería muy explicativo.
Y por cierto, ¿qué valores almacenas exactamente en el map?
#633
Código (javascript) [Seleccionar]
resultado = var numero_uno + var numero_dos;

Será:

Código (javascript) [Seleccionar]
var resultado = numero_uno + numero_dos;

var es solo al declarar las variables.
#634
Depende de tu país. En España por ejemplo, la policía tiene web para estas cosas: https://www.policia.es/formulario_generico.php?ordenes=6
Y teléfono, vaya.
#635
Programación C/C++ / Re: Ayuda con un error
5 Marzo 2017, 00:19 AM
Así sin más, es difícil decir qué ocurre.
Asegúrate de que el ejecutable no se esté ejecutando ya (en caso de que estés recompilando). Fíjate en que no exista el proceso.

Si no era ese el caso, puedes poner aquí el código (salvo que sea muy largo, vaya)

Sobre el error: al compilar hay 2 fases. La primera, la compilación per sé, en que transformas código a código objeto, binario. Y luego, todos los códigos objeto que haya, se enlazan en 1 ejecutable (o librería o lo que sea). "ld" es el linker, y es esta última fase. Si SOLO te da ese error, entonces puede ser que el ejecutable esté corriendo. En tal caso, tira error por no poder crear el nuev ejecutable.

Pero bueno, depende.
#636
Programación C/C++ / Re: enteros de 12 bits
5 Marzo 2017, 00:13 AM
Citarunsigned char a[9] = {
0b00011100, // 0 (entero 1)
0b10010001, // 1 (entero 2)
0b11001010, // 2 (nada)
0b00011100, // 0 (entero 1)
0b10110001, // 1 (entero 2)
0b11001100, // 2 (nada)
0b00011100, // 0 (entero 1)
0b11010001, // 1 (entero 2)
0b11001110 // 2 (nada)
};

Tienes 2 enteros cada 3 bytes.
En el primer bytes, obtienes el primer entero (accediendo, además, al siguiente byte)
En el segundo byte, obtienes el segundo entero (accediendo también al siguiente byte)
El tercer byte es, en su totalidad, parte del anterior entero. Aquí no hay anda que hacer

Y repites. 3 bytes, 2 acciones.
#637
Programación C/C++ / Re: enteros de 12 bits
4 Marzo 2017, 21:45 PM
No depende de si el byte es par o impar. Depende del resto de dividir entre 3:

int main()
{
for(int i=0; i<9; i++)
{
if(i % 3 == 1){
short x = ((a[i] & 0xF) << 8);
x |= ((a[i+1] & 0xFF));
printf("%d\n", x);

} else if(i % 3 == 0) {

short x = (a[i] << 4) | ((a[i+1] >> 4) & 0xF);
printf("%d\n", x);
}
}
}
#638
Depende de qué pila.
En una pila generalmente podrás acceder al primer elemento, y luego, al siguiente, y así sucesivamente. Para ello tendrías que recorrer la pila manualmente e ir contando cuáles son pares y cuáles no.
Si fuera una pila en la que solo puedes acceder a la cima, entonces tendrías que crear otra pila e irla "desmontando" en ella, retirando elemento a elemento.
#639
Pusiste: cout<<aux->next;
next es un puntero. Como aparece un 0, significa que el siguiente es NULL. Es correcto.
Tal vez quisiste poner aux->element (antes de la línea aux = aux->next, eso sí)

De todos modos, pusiste Luis como valor antiguo. No exise, así que no tiene que hacer nada.

En la imagen aparece un error 0xC0000005. De este error está bien que te acujerdes (es de los pocos que verás "normalmente"). Es un error por, generalmente, acceder a una zona de memoria que no debes.

Pero no te preocupes. En este caso es por esto:
Código (cpp) [Seleccionar]
aux= aux->next;
cout<<aux->next;

Si aux->next es NULL, luego, en el cout, tratas de acceder a aux->next, es decir, NULL->next. Pero bueno, sería cambiar el orden de esas líneas y listo (o poner element, como puse arriba)

Y lo dicho, tienes mal la salida del menú:
Código (cpp) [Seleccionar]
            cout<<"What's the new value?"<<endl;
            cin>>value;
            if(opt==1){
                int pos;
                cout<<"In which position do you want to edit?"<<endl;
                cin>>pos;
                a.editByPos(value,pos);}
            else if (opt==2){
                cout<<"For which value do you want to change?"<<endl;
                cin>>newName;
                a.editByValue(value, newName);}

Primero pides el new value. Luego, lo pides de nuevo. El primer "nuevo valor", es el que pasas como antiguo. Revisa esos couts y cómo llamas a la función.
#640
¿Cómo generaste el executable? Estás llamando a una función, así que tiene que ser una función. No vale un executable en formato ELF.