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 - ThunderCls

#51
No creo que exista una manera estandar en C++ para lograr lo que deseas, sin embargo puedes usar un par de opciones:

1- Usando la funcion "getch()" de la libreria NO estandar "conio.h" (getch() espera una entrada del teclado pero no la muestra en la consola)

2- Usando la API de Windows para modificar el comportamiento de la consola:
Código (cpp) [Seleccionar]
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE) & ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT));
   
   Para leer y escribir:
       
Código (cpp) [Seleccionar]
ReadConsole(...)/WriteConsole(...)

3- Usando GetAsyncKeyState(...) en un loop

4- Usando un hook de teclado con GetConsoleWindow(...)/SetWindowsHookEx(...)

Saludos
#52
Tus variables "aux" y "txt2" en la funcion "cargalista" son variables locales, luego en tu codigo al hacer algo como

datito.apellido=aux;

simplemente estas copiando el puntero "aux" a tu miembro de estructura pero no el contenido al que apunta, lo que significa que una vez la funcion retorna y la memoria de las variables locales es liberada, ahora tendras lo que se conoce como dangling pointer (puntero colgante), apuntando a memoria desconocida. En este caso entonces necesitas hacer una copia de la memoria a donde apunta el puntero y no del puntero en si, puedes sustituir

datito.apellido=aux;

por


datito.apellido=malloc(strlen(aux) + 1);
strncpy(datito.apellido, aux, i);


lo mismo con "datito.pais" y lo mismo en tu funcion "agregar"

(*nodo)->dato=datito;

por

memcpy(&(*nodo)->dato, &datito, sizeof(struct s_datos));

Saludos

EDIT: Olvidé mencionar que igual no tiene mucho sentido y es mejor que te deshagas por completo de las variables "aux" y "txt2" y uses directamente los miembros de la estructura local "datito"

EDIT2: En la funcion "agregar" estoy usando "shallow copy" con la estructura, pero en este caso supongo que una copia profunda es el camino a tomar

memcpy(&(*nodo)->dato, &datito, sizeof(struct s_datos));

por una llamada a la funcion

void copia_stdatos(t_dato *dest, t_dato *src)
{
    dest->apellido = malloc(strlen(src->apellido) + 1);
    strncpy(dest->apellido, src->apellido, strlen(src->apellido) + 1);
   
    dest->dni = src->dni;
   
    dest->pais = malloc(strlen(src->pais) + 1);
    strncpy(dest->pais, src->pais, strlen(src->pais) + 1);
}
#53
Cita de: NEBIRE en 21 Junio 2020, 23:02 PM
USA compró California a España, "Por un puñado de dólares." :silbar: :silbar: :silbar:

:xD :xD :xD :xD :xD...es broma no?!
#54
Esto lo puedes resolver de varias maneras, por ejemplo de cualquiera de estas dos te podria servir

Código (csharp) [Seleccionar]
// Metodo 1: usando composicion y properties
public class ClassA
{
    public int Quantity {get; set;}
    // ...
    private void AddQuantity(int p_Quantity) { Quantity += p_Quantity; }
}

public class ClassB
{
    ClassA clsA;

    public ClassB(ClassA p_clsA){ this.clsA = p_clsA; }
    public void ShowQuantity()
    {
        Console.WriteLine($"Quantity from ClassA = {clsA.Quantity}");
    }
}


// Metodo 2: usando atributos estaticos (-_-)
public class ClassA
{
    public static string Color;
    // ...
    private void ChangeColor(string p_Color) { Color = p_Color; }
}

public class ClassB
{
    public void ShowColor()
    {
        Console.WriteLine($"Color from ClassA = {ClassA.Color}");
    }
}
#55
Algo te impide usar atributos de clases y/o asociaciones?
Saludos
#57
Argumentando un poco mas lo que te han dicho anteriormente, la comparacion de decimales no es tan simple como con numeros enteros y la mayor diferencia radica en la precision. Para mas teoria al respecto puedes ver

https://es.wikipedia.org/wiki/Formato_en_coma_flotante_de_simple_precisi%C3%B3n
https://es.wikipedia.org/wiki/Formato_en_coma_flotante_de_doble_precisi%C3%B3n

En este caso otra posible solucion que se refirio seria usar | a - b | ≤  ϵ; donde ϵ es la constante epsilon. Luego tienes que tener en cuenta que dependiendo de los valores que deseas comparar te servira mas un acercamiento que otro, para este tema no hay un algoritmo o un metodo infalible para todos los casos. Para tu ejemplo en concreto esto tambien te sirve:

#define fleq(a, b) ((((a - b) < FLT_EPSILON) && (fabs(a - b) > FLT_EPSILON)) || (fabs(a - b) < FLT_EPSILON) ? 1 : 0)

Uso:

if ((nota >= 5) && fleq(nota, 6.9))
{
    printf ("\nHas aprobado!!");
}
else
{
    printf ("\nMehhh!!");
}


Saludos
#58
@fary
AddressOfEntryPoint y la direccion de inicio de la funcion "main" son dos cosas diferentes, el primero no tiene porque ser necesariamente el segundo (y casi nunca lo es).

@marax
Con IDA y Ghidra es muy sencillo localizar la funcion main en el listado de funciones.
Por otra parte si lo quieres manualmente, como ya mencionaste, localizando referencias en instrucciones a cadenas dentro del ejecutable es una forma muy utilizada para localizar zonas de codigo y funciones en general. Tambien puedes hacer "stalk walking" en el caso que lo estes depurando, o incluso puedes usar ciertas llamadas a funciones como guia para llevarte a la funcion main, la cual casi siempre esta algunas lineas mas abajo de estas. En este caso entre las que serian usadas con mas probabilidad tienes "kernel32.GetCommandLineX", "kernel32.GetEnvironemStringX" o si usa los runtimes de c++ "__getmainargs" y "__p__environ", finalmente "kernel32.ExitProcess" o "_cexit" probablemente te pueden llevar justo unas instrucciones despues de la salida de la funcion main

Saludos
#59
Parece tratarse de la extension "Imgur Uploader", la cual ha sido modificada en las ultimas versiones por el autor para inyectar ads en las busquedas y obtener ganacias de ello. Creo que ya ha sido reportada como Adware y por ello tu antivirus salta. Para arreglarlo debe ser tan sencillo como eliminar dicha extension
Saludos
#60
Desde el 2008 registrado, y aunque muchos foros han perdido la fuerza de años atras por diferentes motivos, es genial ver una "reliquia" como esta aun en pie. Todavia recuerdo en mis inicios todo maravillado leyendo los posts de usuarios como [Zero]/HackerZero, Karcrack, Mad Antrax, Eternal Idol, WHK, LeandroA, karmany, BlackZeroX, Shaddy, Amerikano|Cls, apuromafo CLS, Littlehorse, MCKSys Argentina, The Swash, engel lex y otro largo etc y no entendiendo practicamente nada xD...que tiempos!  ;-)
Saludos