« first day (2440 days earlier)      last day (685 days later) » 
02:00 - 21:0021:00 - 23:00

9:03 PM
Si vas a usar un array internamente para meter los elementos, entonces no veo para qué liarse con punteros. Lo de los punteros sería más bien para crear una lista enlazada (lo del campo sig), evitando así el array. Pero de todas formas, si lo que querías es que la lista elementos sea una lista de punteros, entonces está mal declarada. Y la función append() debería recibir un puntero a T en vez de un T.
y si vas a usar un array internamente para almacenar, no necesitas ni primero ni siguiente, solo el índice del último (que no un puntero al último, que no te serviría de mucho pues a partir del puntero no sabes en qué posición del array está)
 
@_@ me mareo más
Así?
template <typename T>
class List {
    public:
    int size = 0;
    T *primero = nullptr, *siguiente = nullptr, *ultimo = nullptr;
    void append(T *elemento){
        T *nuevo_elemento = new T();
        if(ultimo == nullptr) siguiente = nuevo_elemento;
        else ultimo->siguiente = nuevo_elemento;
        ultimo = nuevo_elemento;
        size++;
    }
};
 
Yo diría más bien esto, aunque no funcionará (pero esta sería la idea):
template <typename T>
class List {
    public:
    T *primero = nullptr, *ultimo = nullptr;
    int size = 0;
    void append(T *elemento){
        if(ultimo == nullptr) primero = ultimo = elemento;
        else ultimo->siguiente = elemento;
        ultimo = elemento;
        size++;
    }
};
quien ha de llamar a new para crear el elemento sería la función externa que luego llamaría a lista.append() para meter el elemento creado
la lista no debe crear elementos. No sabe cómo! No sabe qué parámetros hay que pasar al constructor de T
así que append recibe ya directamente el puntero al elemento creado
y simplemente lo inserta en la posición siguiente al último, es decir, en ultimo->siguiente
esto no funcionará de todas formas porque el compilador se va a quejar de que el tipo T no tiene un campo llamado siguiente
y es que tu List necesita que T cumpla un cierto "contrato". Debe tener un campo llamado siguientede tipo puntero a sí mismo
no tengo claro cómo expresar eso en C++. Probablemente podrías hacer una clase base abstracta, por ejemplo Nodo, que tenga ese campo. Y entonces decir que los elementos de List han de ser del tipo Nodo
gracias al polimorfismo podrás meter objetos de cualquier clase que herede de Nodo
en ese caso no se necesitan templates
 
9:20 PM
Voy a investigar más, gracias por el ejemplo
 
9:33 PM
Tengo el C++ super-oxidado. Hace décadas (literal!) que no escribo nada OOP en C++. Pero he conseguido que el siguiente ejemplo compile y al ejecutar haga lo que pretendía. @Christian mira a ver si te sirve de base o algo
#include <iostream>

class Nodo {
    public:
    Nodo *siguiente;
    virtual void print() {};
};

class List {
    public:
    Nodo *primero = nullptr, *ultimo = nullptr;
    int size = 0;

    void append(Nodo *elemento){
        if(ultimo == nullptr) primero = ultimo = elemento;
        else ultimo->siguiente = elemento;
        ultimo = elemento;
        size++;
    }

    void print() {
        Nodo *p = primero;
        while (p) {
            p->print();
            std::cout << std::endl;
Nodo es una clase abstracta, de la que han de heredar los objetos que quieras meter en la lista. Los herederos deben implementar el constructor y print() (para imprimirse a sí mismos). Un ejemplo de clase derivada sería la clase Posicion que escribo más abajo
La clase List admite elementos de tipo Nodo y los va enlazando. Tiene un método print() para imprimir la lista entera, para lo cual itera comenzando por el primero hasta encontrar el último y para cada uno llama al print() de ese objeto
La función main() muestra un ejemplo de cómo instanciar la lista, meter un par de elementos en ella, e imprimir la lista
Los asuntos de privacidad no los tengo claros. Demasiado tiempo usando Python en el que todo es público. Así que puse aquí también casi todo public
@Trauma cuando puedas echar un ojo a esto me dices si es aborrecible o no está tan mal
 
@abulafia te puedo pedir un favor?
 
@JuanPerez Si no es muy largo, adelante. Justo ahora me iba ya pa la cama
 
Tengo un dataframe df_ibnline
Tengo un dataframe df_table_lninv
Necesito recorrer el dataframe df_ibnline y a su vez tambien el df_table_lninv
Del dataframe df_ibnline necesito tomar estas columnas
```df_ibnline['NUMBER_COMPLETE']
df_ibnline['CUST_GROUP']
df_ibnline['NUMBER_COMPLETE']```
Del dataframe df_table_lninv necesito tomar estas columnas
df_table_lninv['NAME_LEN]
La idea es obtener un comando con los datos asi:
 
Para hacer qué? Lo más probable es que no necesites recorrer para nada los dataframes y se pueda hacer en una sola línea de código
 
new $ 0**df_ibnline['NUMBER_COMPLETE']** ibn **df_ibnline['CUST_GROUP']** 0 52 **df_table_lninv['NAME_LEN]** dgt SIP_DATA +
sip_package premium sip_uri **df_ibnline['NUMBER_COMPLETE']**@lflh-voip.vtr.net SIP_CLIENT_TYPE +
sipline SIP_LOCATION lflh SIP_PASSWD FTTH20190823 $ dpl y 3 AIN MZ02_LNP $
[4006 rows x 11 columns]
 
9:49 PM
Todo eso es una sola línea?
y entiendo que con los contenidos de las celdas insertados en donde has puest los dataframes
 
el dataframe df_ibnline tiene 4006 registros por lo tanto tiene que devolver en un nuevo dataframe 4006 comando como el que esta arriba
 
devolver un dataframe con 4006 celdas en el que cada celda es una cadena como la que has escrito?
 
Asi es
 
ambos dataframes tienen el mismo número de filas, y el mismo índice?
 
El dataframe de df_table_lninv tiene esto:;
[14110 rows x 4 columns]
new $ 0df_ibnline['NUMBER_COMPLETE'] ibn df_ibnline['CUST_GROUP'] 0 52 df_table_lninv['NAME_LEN] dgt SIP_DATA +
sip_package premium sip_uri df_ibnline['NUMBER_COMPLETE']@lflh-voip.vtr.net SIP_CLIENT_TYPE +
sipline SIP_LOCATION lflh SIP_PASSWD FTTH20190823  $ dpl y 3 AIN MZ02_LNP $

new $ 0df_ibnline['NUMBER_COMPLETE'] ibn df_ibnline['CUST_GROUP'] 0 52 df_table_lninv['NAME_LEN] dgt SIP_DATA +
sip_package premium sip_uri df_ibnline['NUMBER_COMPLETE']@lflh-voip.vtr.net SIP_CLIENT_TYPE +
sipline SIP_LOCATION lflh SIP_PASSWD FTTH20190823  $ dpl y 3 AIN MZ02_LNP $
 
9:52 PM
0
Q: mostrar contenido que esta por debajo del nivel acceso al document root server

ArcanisGK507Primero les comentare sobre mi entorno ya que puede haber limitaciones o adecuaciones para resolver el problema segun el S.O Estoy desarrollando un Script php7.4 y como servidor uso un proxy nginx que apunta a un servidor apache, en mi local uso Windows 11 Home. pero planeo desplegarlo en Linux, ...

 
@JuanPerez Espera, espera... eso no es un dataframe. Eso qué &%$@ es?
 
cada linea del dataframe de df_ibnline tiene que rellenarse con los campos que te he mencionado arriba
@abulafia En que parte te refieres?
 
pero de verdad tiene esa cadena cada celda de df_table_lninv['NAME_LEN']?
con ahi metido literalmente el texto df_ibnline['NUMBER_COMPLETE']?
o es una forma que has tenido tú de indicar dónde querrías que fueran las cosas
 
df_table_lninv
       NAME         LEN         NAME_LEN                          DESC
0      SSL0  02 4 00 04  SSL0 02 4 00 04  GWLPOT PKNIL HASU N NL N NIL
1      SSL0  02 4 00 19  SSL0 02 4 00 19  GWLPOT PKNIL HASU N NL N NIL
2      SSL0  02 4 00 26  SSL0 02 4 00 26  GWLPOT PKNIL HASU N NL N NIL
3      SSL0  02 4 00 86  SSL0 02 4 00 86  GWLPOT PKNIL HASU N NL N NIL
4      SSL0  02 4 01 58  SSL0 02 4 01 58  GWLPOT PKNIL HASU N NL N NIL
...     ...         ...              ...                           ...
 
ah, vale, eso es otra cosa
 
9:54 PM
@JuanPerez una pregunta, cuando le colocaste el nombre al dataframe df_ibnline por que le pusiste ese nombre???
 
de ese dataframe solo necesitamos la columna df_table_lninv['NAME_LEN']
 
sigues algun standar o patron para nombrar tus cosos???
 
para poder rellenar el comando que necesito
@ArcanisGK507 Si
 
@abulafia ese es el dataframe df_ibnline te lo mande por foto para que se pueda apreciar mejor
Ya que perdia el formato
 
9:58 PM
@JuanPerez Puedes pegarlo como texto, aunque pierda el formato?
es para poder hacer una prueba
 
df_ibnline
        CENTRAL CUST_GROUP  NCOS        DATE                 FEATURES  ... NUMBER_COMPLETE    GWC NUMBER_DUMMY                       COMMAND_CDN                                       COMMAND_PODN
414595  SS_MAIP    IBNSTGO    96  23-06-2022                   $       ...       224196540  GWC 2    799196540  cdn $ 224196540 799196540 bldn y  CICP $ 224196540 PODN 326326 0 FT LNPFTTH TROMB N
414601  SS_MAIP    IBNLINA    92  23-06-2022                   $       ...       332458756  GWC 2    783458756  cdn $ 332458756 783458756 bldn y  CICP $ 332458756 PODN 326326 0 FT LNPFTTH TROMB N
Listo
 
ok, un minuto
 
vale gracias
 
@JuanPerez A ver, si no te entendí mal creo que lo siguiente debería funcionar
formato_final = "new $ 0**{0}** ibn **{1}** 0 52 **{0}** dgt SIP_DATA + sip_package premium sip_uri **{2}**@lflh-voip.vtr.net SIP_CLIENT_TYPE + sipline SIP_LOCATION lflh SIP_PASSWD FTTH20190823 $ dpl y 3 AIN MZ02_LNP $"
data = pd.concat([df_ibnline[['NUMBER_COMPLETE', 'CUST_GROUP']], df_table_lninv['NAME_LEN']], axis=1)
result = data.apply(lambda x: formato_final.format(*x), axis=1)
Si no te funciona, no tengo tiempo ya ahora para seguir mirándolo
¿por qué no pones la pregunta en el sitio? De ese modo quien se tome el trabajo de responder al menos ganará algún punto :-)
 
Vale. Gracias lo voy a revisar
 
10:06 PM
Espera, esos ** que hay por ahi en la cadena ¿necesitas que estén o solo los pusiste para marcar dónde irían los datos de las celdas?
 
Solo los puse para marcar donde iban las variables
 
ah, pues quitalos de formato_final entonces
 
0224196540.0
Abu porque aparece ese .0 al final?
Se puede eliminar?
14105     new $ 0nan ibn nan 0 52 nan dgt SIP_DATA + sip...
14106     new $ 0nan ibn nan 0 52 nan dgt SIP_DATA + sip...
14107     new $ 0nan ibn nan 0 52 nan dgt SIP_DATA + sip...
14108     new $ 0nan ibn nan 0 52 nan dgt SIP_DATA + sip...
14109     new $ 0nan ibn nan 0 52 nan dgt SIP_DATA + sip...
Y porque en algunos aparece 0nan?
 
eso es porque lo tienes así (mal) en el dataframe del que tomas los datos
parece que al cargar el dataframe pandas ha entendido que esa columna era un número flotante
 
Deberia aparecer 4006 registros
Length: 18116, dtype: object
 
10:08 PM
por eso añadió decimales, y por eso algunos que no pudo parsear como número salen como NaN
revisa tus dataframes de entrada
yo hice una prueba con los dos que me pusiste de ejemplo, y no me salen cosas raras
 
Vale
 
0    new $ 0224196540 ibn IBNSTGO 0 52 224196540 dg...
1    new $ 0332458756 ibn IBNLINA 0 52 332458756 dg...
2    new $ 0228911780 ibn IBNCONC 0 52 228911780 dg...
3    new $ 0227910088 ibn IBNSTGO 0 52 227910088 dg...
4    new $ 0227910011 ibn IBNSTGO 0 52 227910011 dg...
bueno, me voy. Suerte
 
Gracias abu
 
02:00 - 21:0021:00 - 23:00

« first day (2440 days earlier)      last day (685 days later) »