c – ¿Cómo hago que un código de Pila guarde varias variables en una estructura?

Estoy tratando de modificar un código de pila para que en su lugar pida varios datos que podamos almacenar, no llevo mucho tiempo aprendiendo C por lo que se me ha dificultado un poco hacer que una pila en vez de almacenar una simple variable almacene varias variables en una estructura, aunque llevo unos cuantos días tratando de hacerlo, el código original es este:

#include<stdlib.h>
struct pilaNodo{
    int datos;
    struct pilaNodo *siguientePtr; // apuntador a stacknodo
};
typedef struct pilaNodo PILANODO;
typedef PILANODO *PILANODOPTR;
void push(PILANODOPTR *cimaPtr, int); //función push
int pop(PILANODOPTR *cimaPtr); //función pop
int vacio(PILANODOPTR);
void imprimirPila(PILANODOPTR);
void instrucciones(void);

int main(){
    
    PILANODOPTR pilaPtr = NULL;
    int eleccion, valor;
    
    instrucciones();
    printf("? ");
    scanf("%d",&eleccion);
    
    while (eleccion!= 3){
        switch(eleccion){
            case 1:
                printf("Escribe un número entero: ");
                scanf("%d",&valor);
                push(&pilaPtr,valor);
                imprimirPila(pilaPtr);
                break;
            case 2:
                if(!vacio(pilaPtr))
                printf("El valor quitado es: %d. n", pop(&pilaPtr));
                imprimirPila(pilaPtr);
                break;
            default:
                printf("elección invalida nn");
                instrucciones();
                break;
        }
        printf("? ");
        scanf("%d",&eleccion);
    }
    printf("Programa finalizado n");
    return 0;
}

void instrucciones(void){
printf("Pon tu elección: n"
        "1 para ponerle un valor a la pilan"
        "2 para quitarle un valor a la pilan"
        "3 para finalizar el programan");
}

void push(PILANODOPTR *cimaPtr, int informacion){ //función push, cimaPtr es pilaPtr en el switch e informacion es valor en el switch
    
    PILANODOPTR nuevoPtr;
    
    nuevoPtr =malloc(sizeof(PILANODO));
    if (nuevoPtr !=NULL){
        nuevoPtr-> datos =informacion;
        nuevoPtr -> siguientePtr= *cimaPtr;
        *cimaPtr=nuevoPtr;
    }
    else
    printf("%d no fue insertado a la pila. No hay memoria disponible. n",informacion);
    
}
int  pop(PILANODOPTR *cimaPtr) //función pop
{
    PILANODOPTR temporalPtr;
    int popValor;
    temporalPtr=*cimaPtr;
    popValor=(*cimaPtr)->datos;
    *cimaPtr=(*cimaPtr)->siguientePtr;
    free(temporalPtr);
    return popValor;
    
}
void imprimirPila(PILANODOPTR actualPtr){
    if(actualPtr==NULL)
        printf("La pila está vacía.nn");
    else{
        printf("La pila es: n");
        while(actualPtr != NULL){
            printf("%d-->", actualPtr->datos);
            actualPtr=actualPtr->siguientePtr;
        }
    printf("NULLnn");
    
    }
}
int vacio(PILANODOPTR cimaPtr){
    return cimaPtr==NULL;
}

Lo más cerca que he llegado hasta este punto es:

#include<stdlib.h>
struct datos{ //estructura de los datos que ahora le quiero agregar
    char nombre(15);
    int edad;
    long celular;
};
struct pilaNodo{
    struct datos d;// estructura anidada
    struct pilaNodo *siguientePtr; // apuntador a stacknodo
}d1;// variable de la estructura
typedef struct datos DATOS;// declaración de la estructura datos
typedef DATOS datos1;// creación de "datos1"
typedef struct pilaNodo PILANODO;
typedef PILANODO *PILANODOPTR;
void push(PILANODOPTR *cimaPtr, PILANODO); //función push
int pop(PILANODOPTR *cimaPtr); //función pop
int vacio(PILANODOPTR);
void imprimirPila(PILANODOPTR);
void instrucciones(void);

int main(){
    
    PILANODOPTR pilaPtr = NULL;
    int eleccion;
    PILANODO d;
    
    instrucciones();
    printf("? ");
    scanf("%d",&eleccion);
    
    while (eleccion!= 3){
        switch(eleccion){
            case 1:
                printf("Escribe tu nombre: ");
                scanf("%c",d1.d.nombre);
                printf("Escribe tu edad: ");
                scanf("%d",&d1.d.edad);
                printf("Escribe tu número de celular: ");
                scanf("%ln",&d1.d.celular);
                push(&pilaPtr,d); //WARNING: d no se inicia cuando es usado aquí
                imprimirPila(pilaPtr);
                break;
            case 2:
                if(!vacio(pilaPtr))
                printf("El valor quitado es: %d. n", pop(&pilaPtr));
                imprimirPila(pilaPtr);
                break;
            default:
                printf("elección invalida nn");
                instrucciones();
                break;
        }
        printf("? ");
        scanf("%d",&eleccion);
    }
    printf("Programa finalizado n");
    return 0;
}

void instrucciones(void){
printf("Pon tu elección: n"
        "1 para ponerle un valor a la pilan"
        "2 para quitarle un valor a la pilan"
        "3 para finalizar el programan");
}

void push(PILANODOPTR *cimaPtr, d);{ //marca error, tiene tipos conflictivos y busca un identificador
    
    PILANODOPTR nuevoPtr;
    
    nuevoPtr =malloc(sizeof(PILANODO));
    if (nuevoPtr !=NULL){
        nuevoPtr-> d =DATOS;
        nuevoPtr -> siguientePtr= *cimaPtr;
        *cimaPtr=nuevoPtr;
    }
    else
    printf("%d no fue insertado a la pila. No hay memoria disponible. n",informacion);
    
}
int  pop(PILANODOPTR *cimaPtr) //función pop
{
    PILANODOPTR temporalPtr;
    DATOS popValor;
    temporalPtr=*cimaPtr;
    popValor=(*cimaPtr)->d;
    *cimaPtr=(*cimaPtr)->siguientePtr;
    free(temporalPtr);
    return popValor; //marca error Datos es incompatible con int
    
}
void imprimirPila(PILANODOPTR actualPtr){
    if(actualPtr==NULL)
        printf("La pila está vacía.nn");
    else{
        printf("La pila es: n");
        while(actualPtr != NULL){
            printf("%DATOS-->", actualPtr->d); //WARNING: d es asignado como entero
            actualPtr=actualPtr->siguientePtr;
        }
    printf("NULLnn");
    
    }
}
int vacio(PILANODOPTR cimaPtr){
    return cimaPtr==NULL;
}

¿Alguien sabe cómo puedo eliminar los errores o si tan siquiera me acerqué a lo deseado?,¿o acaso necesito hacer otra cosa para lograr lo que deseo?. Cualquier tipo de ayuda y corrección se aprecia mucho para que pueda seguir aprendiendo, y muchas gracias por tomarte el tiempo de leer mi pregunta

Que base de datos usar en un sistema c# a la que acceden varias pc?

Tengo una aplicacion escritorio hecha en c# usa entity framework y ahora esta funcionando con sql server de manera local, pero quiero que la aplicacion se instale en varias pc que accedan a la misma base de datos. Tengo que guardar imagenes asi que deberia permitir mas o menos 20gb de almacenamiento. ¿Que base de datos puedo usar en este caso?

javascript – Como utilizar um script para várias páginas sem dar o erro do eventListener no console?

Segue um exemplo simples pra demonstrar a dúvida. São duas páginas e um script. Sei que funciona importando o script nas duas páginas, porém quando utilizo o eventListener, ele mostra o erro dizendo que não encontrou o elemento alvo da página que não foi carregada. Apesar de nesse exemplo mais simples funcionar, a mensagem de erro fica aparecendo no console, e em exemplos mais complexos o evento para de funcionar.

Mensagem de erro: “Uncaught TypeError: Cannot read property ‘addEventListener’ of null”

Página 1:

<body>
  <button id="botao1">botão 1</button>

  <script src="script.js"></script>

Página 2:

<body>
  <button id="botao2">botão 2</button>

  <script src="script.js"></script>

JS:

let botao1 = document.getElementById("botao1");
let botao2 = document.getElementById("botao2");

botao1.addEventListener("click", () => {
  alert("botao 1");
});

botao2.addEventListener("click", () => {
  alert("botao 2");
});

javascript – ¿Cómo establecer varias ubicaciones en un mapa con html, JS, PHP?

Estoy realizando un sitio y quiero mostrar un mapa de la republica Mexicana con varias ubicaciones de algunas instalaciones, estas ubicaciones deben ser visualizadas con un punto en varios estados donde están las mismas algo así …

introducir la descripción de la imagen aquí

Al momento de pasar el mouse a un punto se debe mostrar una imagen del establecimiento.

Tengo un prototipo, donde cada estado esta en una tabla de html sin borde para que se junte cada parte, entonces ahí meto la imagen del punto rojo y al dar clic que se muestre la imagen, pero pienso que me estoy complicando mucho.

Tendrían alguna idea en como hacerlo mas fácil, no quiero mostrar lo que es el mapa de google maps, si no la imagen de la republica mexicana. Cualquier sugerencia se los agradecería, muchas gracias.

python – Receber dados em várias linhas

Olá, pessoal, tudo bem?

Eu preciso criar um código que vai calcular a media, variância e desvio padrão dos dados digitados pelo usuário.

Eu pensei em jogar esses dados em uma lista e a partir de então trabalhá-los. Porém, o usuário irá digitar cada número em uma linha. Capturar esses dados, cada um em uma linha, em uma lista está sendo minha dificuldade.
Tentei trabalhar com o módulo sys e colocar um laço dentro do sys.stdin:

for n in sys.stdin:
     for x in range(n):
          lista.append(n)

Mas eu tive alguns erros.

Alguém poderia me ajudar? Não quero necessariamente trabalhar com o módulo sys, apenas foi uma ideia.

javascript – Carregar várias funções na pagina principal usando django

Estou com um problema ao tentar carregar alguns dados do banco de dados mysql usando django, tipo as funções só funcionam se eu atribuir no arquivo: urls.py o seguinte atributo:

path('', views.countregistered)

Porém este atributo já é usado para a pagina index.html como mostra abaixo:

path('', views.index, name='home')

Se eu inserir vários atributos como este apenas o primeiro é executado e o resto é ignorado, acredito não ser o correto, eu tenho várias funções para serem exibidas na página inicial que são carregadas apartir do banco de dados porém se eu digitar apenas o elemento com as funções na página html não funciona.
Grato pela ajuda, estou iniciando agora em django.

safari – ocurrio un problema varias veces next js

hice una app con next.js todo parece funciona bien, excepto cuando se utiliza safari en algún iphone, cuando se da click en el menú en la versión móvil, después de algunos clicks aparece el mensaje de Ocurrió un un problema varias veces en {url_de_la_app}, adjunto imagen del mensaje de error.

introducir la descripción de la imagen aquí

python – Transformar uma coluna em várias outras colunas num data frame pandas


Sua privacidade


Ao clicar em “Aceitar todos os cookies”, você concorda que a Stack Exchange pode guardar cookies no seu dispositivo e utilizar essas informações de acordo com a nossa Política de Cookies.




Iterar varias listas con enumerate en Python

tengo problemas para iterar sobre varias listas, os comento, estoy creando un portfolio con optimización sobre carteras de criptomonedas, basándome en en una optimización de valores de bolsa, aquí. Utiliza pandas para los dataframe, supongo que se podría hacer perfectamente con series en pandas pero en cualquier caso el ejemplo utiliza listas, convierte los dataframe en list y cuando intento iterar sobre estas listas me devuelve “TypeError: ‘float’ object is not subscriptable” no puede iterar sobre ese tipo, he intentado crear lista de columnas y valores por separado, he intentado enumerar con zip y he lanza error de se espera 2 arreglo pero solo se proporciona uno, el caso es que las varias formas que he intentado me dan diferentes errores que no consigo solucionar, muestro el código y la salida, a ver si me podéis orientar, gracias de antemano.

import pandas as pd
import numpy as np
import json

from scipy.optimize import minimize
import matplotlib.pyplot as plt

#  Importamos datos
ADA  = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsADABUSD-1d.csv')
BNB  = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsBNBBUSD-1d.csv')
BTC  = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsBTCBUSD-1d.csv')
ETH = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsETHBUSD-1d.csv')
XMR  = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsXMRBUSD-1d.csv')
LTC = pd.read_csv('F:Inteligencia ArtificialPortfolio_LSTMdatasetsLTCBUSD-1d.csv')

#  Convert the date column to DateTime objects
ADA('timestamp') = pd.to_datetime(ADA('timestamp'))
BNB('timestamp') = pd.to_datetime(BNB('timestamp'))
LTC('timestamp') = pd.to_datetime(LTC('timestamp'))
BTC('timestamp') = pd.to_datetime(BTC('timestamp'))
ETH('timestamp') = pd.to_datetime(ETH('timestamp'))
XMR('timestamp') = pd.to_datetime(XMR('timestamp'))


#  Make the dates the frame's index
ADA.set_index('timestamp', inplace = True)
BNB.set_index('timestamp', inplace = True)
BTC.set_index('timestamp', inplace = True)
ETH.set_index('timestamp', inplace = True)
XMR.set_index('timestamp', inplace = True)
LTC.set_index('timestamp', inplace = True)


#  Resymbol the Close columns.  This is convenient when we build our new frames as the column symbols have to be unique
ADA = ADA.rename(columns = {'close': 'ADA'})
BNB = BNB.rename(columns = {'close': 'BNB'})
BTC = BTC.rename(columns = {'close': 'BTC'})
ETH = ETH.rename(columns = {'close': 'ETH'})
XMR = XMR.rename(columns = {'close': 'XMR'})
LTC = LTC.rename(columns = {'close': 'LTC'})


#  Select our date range
date_range = pd.date_range('2018-03-18', '2021-05-22')
portfolio = pd.DataFrame(index = date_range)

                
# Build our new data frame
portfolio = portfolio.join(ADA('ADA'), how = 'inner')
portfolio = portfolio.join(BNB('BNB'), how = 'inner')
portfolio = portfolio.join(BTC('BTC'), how = 'inner')
portfolio = portfolio.join(ETH('ETH'), how = 'inner')
portfolio = portfolio.join(XMR('XMR'), how = 'inner')
portfolio = portfolio.join(LTC('LTC'), how = 'inner')

### Comprobacion 
print(" Mostrando porfolio combinado")
#portfolio.to_csv ('portfolio.csv', index = None)
print(portfolio)
print(portfolio.dtypes)
print(portfolio.columns)


#  Normalize the price data
portfolio = portfolio / portfolio.iloc(0)

return_portfolio = portfolio.pct_change()
return_portfolio.head()

weight_portfolio = (0.1, 0.1, 0.1, 0.1, 0.1, 0.1)
portfolio_return = return_portfolio.dot(weight_portfolio)
portfolio_return.head()

variance_matrix = return_portfolio.cov()*365 # (252 dias habiles si fuesen acciones)

# Computing portfolio variance
portfolio_variance = np.transpose(weight_portfolio)@variance_matrix@weight_portfolio

#Computing portfolio volatility (Risk)
portfolio_volatility = np.sqrt(portfolio_variance)

print("Portfolio Varianza:", portfolio_variance)
print("Portfolio Volatilidad:", portfolio_volatility)

# Intialize an empty list for sotring the portfolio returns
port_returns = ()
# Initialize an empty list for stroing the portfolio volatility
port_volatility = ()
# Initialize an enmpty list for sotring the portfolio weight
port_weights = ()

num_assests = len(portfolio.columns)
num_portfolios = 100

# Computing the individual asset return
individual_rets = portfolio.resample('Y').last().pct_change().mean()

for port in range(num_portfolios):
    # Ramdomly generate weigh combination
    weights = np.random.random()
    port_weights.append(weights)
    # Return are the dot product of indivuadual expect return of asset and its weight
    returns = np.dot(weights, individual_rets)
    port_returns.append(returns)

    # Computing Portfolio Variance
    var = variance_matrix.mul(weights, axis=0).mul(weights, axis=1).sum().sum()
    # Daily standard deviation: volatility is square root of variance
    sd = np.sqrt(var)
    # Annualizing the standard deviation will give us the volatility
    ann_sd = sd*np.sqrt(365) #250 habiles
    port_volatility.append(ann_sd)


# Creating dictionary of returns and volatility
data = {'Returns':port_returns, 'Volatility':port_volatility}

for counter, symbol in enumerate (portfolio.columns.tolist()):
         data(symbol+'weight') = (w(counter) for w in port_weights)


# Converting the dictionary to dataframe
portfolios_V1 = pd.DataFrame(data)
portfolios_V1.head()
print(portfolios_V1)

# Plot efficient frontier
#portfolios_V1.plot.scatter(x='Volatility', y='Returns', marker='o', color='y',
#                        s=15, alpha=0.5, grid=True, figsize=(8,8))
#plt.ylabel("Expected Returns")

# Min Volatility
# idxmin() gives us the minimum value in the column that has been specified
min_vol_port = portfolios_V1.iloc(portfolios_V1('Volatility').idxmin())
print(min_vol_port)

#Finding the optimal portfolio: Highest SHARPE RATIO
rf = 0.01
optimal_risky_port = portfolios_V1.iloc(((portfolios_V1('Returns')-rf)/portfolios_V1('Volatility')).
                                        idxmax())
print(optimal_risky_port)


# Plotting optimal portfolio and minimum volatility
plt.subplots(figsize=(8,8))
plt.scatter(portfolios_V1('Volatility'), portfolios_V1('Returns'), maker='o', s=10, alpha=0.3, color='green')
plt.scatter(min_vol_port(1), min_vol_port(0), color='y', maker='*', s=500)
plt.scatter(optimal_risky_port(1), optimal_risky_port(0), color='b', maker='*', s=500)
plt.xlabel("Risk (Volatility)")
plt.ylabel("Excepted Returns")

y esta es la salida

Mostrando porfolio combinado
                ADA       BNB       BTC      ETH     XMR     LTC
2020-02-27  0.04973   19.1268   8815.88   227.60   70.33   61.61
2020-02-28  0.04901   19.0454   8706.48   227.15   69.13   59.98
2020-02-29  0.04712   19.2689   8524.53   217.48   65.97   58.03
2020-03-01  0.04556   18.9225   8525.69   217.40   64.73   57.74
2020-03-02  0.04895   19.9119   8916.01   232.04   68.42   61.20
...             ...       ...       ...      ...     ...     ...
2021-05-18  2.00360  508.2100  42870.07  3377.49  340.92  294.05
2021-05-19  1.47000  335.4700  36736.94  2443.89  197.93  186.67
2021-05-20  1.80420  391.8900  40647.10  2774.43  281.57  211.18
2021-05-21  1.55130  326.7600  37330.71  2433.36  256.48  180.24
2021-05-22  1.46530  300.0800  37482.50  2297.14  230.90  169.45

(451 rows x 6 columns)
ADA    float64
BNB    float64
BTC    float64
ETH    float64
XMR    float64
LTC    float64
dtype: object
Index(('ADA', 'BNB', 'BTC', 'ETH', 'XMR', 'LTC'), dtype='object')
Portfolio Varianza: 0.34744830030009155
Portfolio Volatilidad: 0.5894474533833288
Traceback (most recent call last):
  File "f:/Inteligencia Artificial/Portfolio_LSTM/portfolio_test.py", line 119, in <module>
    data(symbol+'weight') = (w(counter) for w in port_weights)
  File "f:/Inteligencia Artificial/Portfolio_LSTM/portfolio_test.py", line 119, in <listcomp>
    data(symbol+'weight') = (w(counter) for w in port_weights)
TypeError: 'float' object is not subscriptable
PS F:Inteligencia Artificial>

Como insertar varias calificaciones a varios alumnos

Tengo la siguiente pantalla, donde se muestran unos campos y una tabla, necesito guardar los datos: id_grupo, id_clase, id_alumno y par1. como le hago para que cada alumno tenga esos datos.

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí