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

#1861
Programación General / Re: Procesador x86
9 Septiembre 2015, 18:03 PM
Hay solo 4 registros de uso general.

Luego hay otros, como ESI y EDI, ESP y EBP, EIP, y CS,,DS,ES,FS,GS,SS. Si me olvido alguno, pues bueno, los podrías ver en internet.

Con solo esas ""variables"", la CPU corre todo. Los datos que quiere guardar, los guarda además en la RAM.
Los que ahí mencioné tienen información específica. por ejemplo, EIP guarda la dirección de la instrucción que la CPU está "ejecutando".

AX, BX, CX y DX son registros para uso general. El que utiliza la CPU guarda en ellos lo que quiere.
#1862
Programación General / Re: Procesador x86
9 Septiembre 2015, 16:19 PM
Esois registros son los 4 registros básicos de uso general. No cambian, son esos sus nombres. La CPU los tiene, y ahís es donde guarda información que está utilizando (a parte de la RAM).

Los registros no dependen del programa, es parte de la CPU. Todos los programas, sistema operativo, servicios,... las utilizan.

De todos modos, no las llames variables. """funcionan como variables""", pero son registros. Es algo que lleva ahí desde antes de las variables en la programación xD
#1863
%c es caracter. %s es para cadenas de caracteres.
Y sí, es posible. Sinó, prueba.
#1864
Programación C/C++ / Re: JS call() o apply() en c++
9 Septiembre 2015, 15:48 PM
Una función static:

Código (cpp) [Seleccionar]
class Clase{
public:
    static void func(Clase* _this, int param1, string param2);
};


Si quieres un call para cualquier función, pues:

Código (cpp) [Seleccionar]
enum ClaseMethods{
    CLEAR,
    ADD
}

class Clase{
public:
    static void call(Clase* _this, ClaseMethods function, ...){
        switch(function){
        case CLEAR:
            _this->clear();
           break;
        case ADD:
           int var = *(int*)&((&function)[1]);
            _this->add(var);
           break;
    }
};


Bueno, es un ejemplo a mano alzada.

No sé si es lo que buscabas (?)
#1865
Crea las funciones
Código (cpp) [Seleccionar]
float func1(float x, float y);

Y luego las introduces como sea.
¿Qué es lo que no das hecho?
#1866
cin >> var;

Lo único que hace es leer del flujo de entrada. Si lo que lee lo puede meter en la variable var, lo convierte y lo mete.

Es como hacen scanf y otros. Cada uno tiene su utilidad. De todos modos, cin es C++, y hay más cosas escondidas detrás de la sintaxis
Código (cpp) [Seleccionar]
cin >> a >> b >> c;
que no hace falta mencionar ahora.
#1867
Olvida eso de volver al principio de la función, no tiene que ver.

Realmente, deberías olvidarte de la función main de momento, y seguir.

http://v1.minidosis.org/C++/Subprogramas/Varias%20Funciones%201/

¿Por donde viaja el retorno de una función?
CitarLo de retorno no es más que una abstracción para simplificar la realidad. Y la realidad, que es lo que verás si llegas a programar ensamblador, es que "llamar a una función X, con unos parámetros A y B", es mover los parámetros A y B a registros de la CPU (o a la pila, según), y saltar a la dirección de la función.

Ahora veamos: cuando la función va a "devolver un valor", lo que hace es, generalmente, meter ese valor en un registro de la CPU. Una vez ahí guardado, retorna al punto desde el que fue llamado, y continúa por ahí. El retorno, estará guardado en el registro, y será utilizado por el programa de la manera que considere.

Hasta te recomendaría que aprendieses ensamblador, puesto que es lo más básico y simple, y no hay nada "oculto". Todo es como es, y como tal lo ves.
#1868
Si te doy un conjunto de datos (en papel), del tipo:

Primera cifra:  1
Segunda cifra:  8
Tercera cifra:  4

¿Sabrías, mediante operaciones aritméticas (concatenar no vale), formar el número?

Si la respuesta es sí, solo tienes que hacer eso mismo con código.
Dado un caracter '5', para convertirlo al número 5, tienes que restarle el valor ascii del 0. El valor ascii del 0 es 48, pero en C++ puedes poner simplemente:

Código (cpp) [Seleccionar]
char c = '5';
int n = c - '0';


Ahora "n" es 5. Haces eso cada vez que necesites el valor numérico de un caracter.

Luego, si no sabes convertir una cadena a un número, es:

Cifras: 5 4 8 6
Numero = 5*10^3 + 4*10^2 + 8*10^1 + 6*10^0


O, abstrayendo el concepto:
Por cada cifra:
Numero = Numero + cifra*10^indice
Siendo el indice la posicion de la cifra, empezando desde 0 desde la derecha
#1869
Como dijo someRandomCode, tendrás que parsear la ecuación. Tendrás que interpretar la cadena de caracteres, y de ahí sacar las operaciones (manteniendo prioridad en los operadores), los coeficientes, y las variables. Salvo que solo lo quieras hacer con ecuaciones que sigan un patrón (Ej. "aX^2+bX+c"), tendrás que interpretarlo con todas sus posibilidades, y eso ya te va a llevar más tiempo.


Si real, realmente quieres hacerlo ahora, te aconsejo apartarte de ese proyecto momentaneamente y ponerte con lo otro. Pensar en cómo lo harás, pensar en cómo mantendrás el orden de los paréntesis, en como cambiarás las variables por tus valores, etc.

Para ver operadores, solo es comparar los caracteres (str[ i ] == '+'), y los números los separas y conviertes a variables enteras o flotantes con el set de funciones <stof, stoi...>.

Dale tiempo a pensar el algoritmo.
#1870
Si has programado C++, conocerás los bloques de llaves {}. En estos bloques, las variables que se declaran dentro, "desaparecen" al salir del contexto del bloque.
Las variables declaradas dentro de los paréntesis de using (que serán variables que heredan de IDisposable) tienen asegurado que se llamará a su método Dispose().

Para más información, mira la intefraz IDisposable y el método Dispose, así como su utilidad en elementos del lenguaje C#.