Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-01-2008, 10:41   #1
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
[excel c++]gestire il LIFO continuo.

Salve, premetto subito che non è nessun esercizio assegnatomi ma una cosa che mi serve.
per gestire alcuni soldi devo seguire un sistema che si chiama LIFO continuo. è tipo una pila ma vengono eseguite delle operazioni quando si fa il pop(prelievo) degli elementi.
Innanzitutto volevo sapere se qualcuno poteva indirizzarmi su qualcosa di già pronto, magari qualche macro di excel (non ci riesco a realizzarla io e paradossalmente riesco meglio in c++ dove almeno so cosa cercare).
Se mi potete aiutare ve ne sarei grato.
In c++ ho realizzato una classe pila statica seguendo l'esempio del libro, con push e pop degli elementi, ovviamente non ci sono altre operazioni sugli elementi.

Compri 100 Fiat a 18 euro
Compri altre 100 Fiat a 17.50.
Vendi 50 Fiat a 17.80. Si considerano vendute per prime quelle che hai comprato per ultime, quindi quelle comprate a 17.50. Quindi avrai un gain di 0.30 ad azione.
Compri altre 100 Fiat a 17.20.
Vendi 120 Fiat a 17.60. Si considerano vendute prime le ultime 100 comprate a 17.20 (quindi su queste avrai un gain di 0.40 ad azione) poi 20 di quelle comprate a 17.50 (e su queste avrai un gain di 0.10 ad azione).
E così via. Semplicemente le ultime ad entrare (Last In) sono le prime ad uscire (First Out). Non devi mai considerare il prezzo medio.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2008, 12:49   #2
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
sarei più interessato ad excel perchè devo importare dei dati sul cambio con una queryweb e non saprei farlo con altri programmi.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 11:49   #3
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
non so se vi è chiaro quello che il programma deve fare.
facendo una pila dite che può andare bene?
nessuno mi da qualche consiglio?
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 12:10   #4
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Ecco qui un po'di pseudocodice:

Codice:
auto = new Coda

compraAuto(quantitá, prezzo)
  auto.push_front(new Automobili(quantitá, prezzo))
end

vendiAuto(quantitá)
  prezzo = 0
  do
    if auto.front.quantitá > quantitá
      auto.front.quantitá -= quantitá
      prezzo += auto.front.prezzo * quantitá
      quantitá = 0
    else
      quantitá -= auto.front.quantitá
      prezzo += auto.front.prezzo * auto.front.quantitá
      auto.pop_front
    endif
  while quantitá != 0
  return prezzo
end
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 13:03   #5
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
Quote:
Originariamente inviato da stdecden Guarda i messaggi
Ecco qui un po'di pseudocodice:

Codice:
auto = new Coda

compraAuto(quantitá, prezzo)
  auto.push_front(new Automobili(quantitá, prezzo))
end

vendiAuto(quantitá)
  prezzo = 0
  do
    if auto.front.quantitá > quantitá
      auto.front.quantitá -= quantitá
      prezzo += auto.front.prezzo * quantitá
      quantitá = 0
    else
      quantitá -= auto.front.quantitá
      prezzo += auto.front.prezzo * auto.front.quantitá
      auto.pop_front
    endif
  while quantitá != 0
  return prezzo
end
innanzitutto grazie per aver risposto,
l'esempio era per i titoli azionari ma credo valga lo stesso.
mi resta un po difficile capire. devo implementare con la coda?
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 13:22   #6
skintek1
Senior Member
 
L'Avatar di skintek1
 
Iscritto dal: Dec 2005
Messaggi: 2195
Quote:
Originariamente inviato da limpid-sky Guarda i messaggi
Salve, premetto subito che non è nessun esercizio assegnatomi ma una cosa che mi serve.
per gestire alcuni soldi devo seguire un sistema che si chiama LIFO continuo. è tipo una pila ma vengono eseguite delle operazioni quando si fa il pop(prelievo) degli elementi.
Innanzitutto volevo sapere se qualcuno poteva indirizzarmi su qualcosa di già pronto, magari qualche macro di excel (non ci riesco a realizzarla io e paradossalmente riesco meglio in c++ dove almeno so cosa cercare).
Se mi potete aiutare ve ne sarei grato.
In c++ ho realizzato una classe pila statica seguendo l'esempio del libro, con push e pop degli elementi, ovviamente non ci sono altre operazioni sugli elementi.

Compri 100 Fiat a 18 euro
Compri altre 100 Fiat a 17.50.
Vendi 50 Fiat a 17.80. Si considerano vendute per prime quelle che hai comprato per ultime, quindi quelle comprate a 17.50. Quindi avrai un gain di 0.30 ad azione.
Compri altre 100 Fiat a 17.20.
Vendi 120 Fiat a 17.60. Si considerano vendute prime le ultime 100 comprate a 17.20 (quindi su queste avrai un gain di 0.40 ad azione) poi 20 di quelle comprate a 17.50 (e su queste avrai un gain di 0.10 ad azione).
E così via. Semplicemente le ultime ad entrare (Last In) sono le prime ad uscire (First Out). Non devi mai considerare il prezzo medio.

ma se si comprano delle azioni che si hanno gia in portafoglio l'acquisto delle ultime non è calcolato con la media dell'acquisto delle prime e delle ultime comprate????
__________________
venitemi a trovare nel mio sito www.skintek.altervista.org/skintek1.htm
forum di camionisti virtuali http://virtualtrucker.mastertopforum.com/index.php
skintek1 è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 13:31   #7
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
Quote:
Originariamente inviato da skintek1 Guarda i messaggi
ma se si comprano delle azioni che si hanno gia in portafoglio l'acquisto delle ultime non è calcolato con la media dell'acquisto delle prime e delle ultime comprate????
è così per tutto l'amministrato mentre per il dichiarativo con il broker estero bisogna fare sto casino.
è un modo per complicare le cose e favorire le banche nostrane.
cmq rimaniamo in topic, per queste domande ci sono altri topic ai quali sarò felice di partecipare.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 16:41   #8
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
Posto l'esempio base che ho realizzato.
è solo la classe pila realizzata in forma statica(in pratica è un vettore)
su cui avevo intenzione di lavorare.
Il main è solo per vedere che tutto funziona.

file main.cpp
Codice:
#include <cstdlib>
#include <iostream>
#include "PILAS.h"

using namespace std;

int main(int argc, char *argv[])
{
    Pila p;
    E e=10;
    E secondo=0;
    E terzo=0;
    E sum=0;
    p.print();
    system("PAUSE");
    for (int i=0;i<10;i++)
    {
    e=e+1;
    p.push(e);
    }
    p.print();
    system("PAUSE");
    
    p.pop(e);
    cout<<"\nElemento prelevato"<<e<<"\n";
    p.print();
    p.push(99);
    p.print();
    p.pop(secondo);
    p.pop(terzo);
    
    cout<<"e:       "<<e<<"\n";
    cout<<"secondo: "<<secondo<<"\n";
    cout<<"terzo:   "<<terzo<<"\n";
    sum=e+secondo+terzo;
    cout<<"Somma: "<<sum<<"\n";
    
    p.print();
     
    system("PAUSE");
    return 0;
}
file PILAS.H

Codice:
#ifndef PILAS_H
#define PILAS_H


typedef int E;
class Pila {
    public:
        Pila();
        void zero(E p[]);
        void push(const E e);
        void pop(E& e);
        void top (E& e)const;
        bool empty()const;
        bool full()const;
        void print()const;
    private:
        enum {N=10};
        E p[N];
        int t;
    };
#endif
file pilas.cpp
Codice:
#include "PILAS.H"
#include <iostream>
//FUNZIONE COSTRUTTORE
using namespace std;

Pila::Pila(){
    t=0;
    for (int i=0;i<N;i++) //inizializza a zero la pila
    p[i]=0;
}

bool Pila::empty()const{
    return (t==0);
}

bool Pila::full()const{
    return (t==N);
}

void Pila::push(const E e){
p[t]=e;
t++;
}

void Pila::pop(E& e){
t--;
e=p[t];
p[t]=0;
}

void Pila::top(E& e)const {
e=p[t-1];
}

void Pila::print()const{
    cout<<"Stampa Pila\n"; 
    for (int i=N-1;i>=0;i--)
    cout<<"p["<<i<<"] :"<<p[i]<<"\n";
}
Allegati
File Type: zip pila.zip (5.6 KB, 0 visite)

Ultima modifica di limpid-sky : 06-01-2008 alle 16:48.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 18:55   #9
stdecden
Member
 
L'Avatar di stdecden
 
Iscritto dal: Apr 2007
Messaggi: 263
Esiste giá una classe per una pila nella libreria standard, piú precisamente nelle STL, e si chiama:

STACK - (Per lifo)
QUEUE - (Per fifo)

Dai un occhiata al link http://www.cplusplus.com/reference/stl/
stdecden è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 19:00   #10
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
ma pensi che la pila va bene per quello che voglio realizzare?
In realtà è qualcosa di più di una pila perchè gli elementi vengono modificati quando si fa la pop.

Ultima modifica di limpid-sky : 07-01-2008 alle 15:20.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2008, 14:07   #11
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
qualcuno che mi vuole aiutare a cercare o a fare un programma simile?
forse l'esempio è poco chiaro?

edit: ho fatto un animazione powerpoint che magari può aiutare a capire.
non è molto accurata ma magari si capisce meglio.
è più difficile a dirlo che a farlo il conto.
capite bene però che se si aggiunge una pop i conti sono totalmente diversi e
il conto va ripetuto ogni volta. una vera scocciatura e perdita di tempo.
Allegati
File Type: zip Presentazione1.zip (7.2 KB, 2 visite)

Ultima modifica di limpid-sky : 07-01-2008 alle 15:21.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2008, 13:50   #12
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
up.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2008, 11:18   #13
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
è un esercizio troppo difficile?
non mi potete aiutare?
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2008, 11:07   #14
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
mi sembra di essere trasparente qui sul forum alle volte.
possibile che nessuno mi sappia indirizzare o darmi un aiutino?
non sto chiedendo se me lo fate voi ma di darmi una mano.
il titolo del topic è forse sbagliato?

Ultima modifica di limpid-sky : 11-01-2008 alle 11:09.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2008, 14:02   #15
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
up
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2008, 14:19   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Ci credi che e' proprio il nodo centrale del mio ultimo colloquio di assunzione?
Io l'avevo risolto piu' o meno come riporto qui.
Si puo' ottimizzare pesantemente, ma cosi' funziona (sono stato assunto).
Ovviamente poi sono stato assunto per un problema simile, e la prima ottimizzazione e' stata proprio quella di "compattare" e quindi sveltire le operazioni.

Codice:
class Program
    {
        static void Main(string[] args)
        {
            Agente ag = new Agente();
            Console.WriteLine("Compro 10 azioni a 70.0");
            ag.Compro(10, 70.0);
            Console.WriteLine("Compro 8 azioni a 75.0");
            ag.Compro(8, 75.0);
            Console.WriteLine("Vendo 15 azioni a 78.0");
            double gain = ag.Vendo(15, 78.0);
            Console.WriteLine("Gain ultima operazione={0}", gain);
            Console.ReadKey();
        }
    }

    class Agente
    {
        private Stack<double> Azioni = new Stack<double>();

        public void Compro(int Numeroazioni, double Prezzo)
        {
            for (int t = 0; t < Numeroazioni; t++)
            {
                Azioni.Push(Prezzo);
            }            
        }

        public double Vendo(int NumeroAzioni, double Prezzo)
        {
            double ret = 0;
            for (int t = 0; t < NumeroAzioni; t++)
            {
                double conf = Azioni.Pop();
                ret += (Prezzo - conf);
            }
            return ret;
        }
    }
Stampa 80, che dovrebbe essere giusto
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 14-02-2008 alle 14:24. Motivo: Risultato
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2008, 15:23   #17
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
Ne avevo fatto uno molto più alla buona e scritto male.(la funzione pop è scritta malissimo). In c++ funziona ora però cercavo di esportare la cosa in excel e non riesco a trovare un modo per far capire bene le operazioni che vengono eseguite.
Non riesco proprio a organizzare le celle in Excel in un modo che ad esempio l'ultima pop da 120 sia visualizzabile chiaramente in modo da poter controllare manualmente.
Hai idee?
Magari conosci software adatti allo scopo.

header.h
Codice:
#ifndef header_h
#define header_h


typedef double E;
class Pila {
    public:
        Pila();

        void pushRiga(const E num, const E val, const E dollar);
        void pop(E num, E val);
       // void top (E& e)const;
        bool empty()const;
        bool full()const;
        void print()const;
    private:
        enum {N=10};
        enum {M=3};
        E p[N][M];
        int t;
    };
#endif
header.cpp
Codice:
#include "header.h"
#include <iostream>
//FUNZIONE COSTRUTTORE
using namespace std;

Pila::Pila(){
    t=N-1;
    for (int i=0;i<N;i++)
      for (int j=0;j<M;j++)   //inizializza a zero
    p[i][j]=0;

}

bool Pila::empty()const{
    return (t==0);
}

bool Pila::full()const{
    return (t==N);
}

void Pila::pushRiga(const E num, const E val, const E dollar){

p[t][0]=num;
p[t][1]=val;
p[t][2]=dollar;

//temp=num*val;
//p[t][2]=temp;
t--;
}

void Pila::pop(E numero, E prezzo)
{
    double valenza=0;
    int temp=0;
    cout<<"Vendita di "<<numero<<" azioni a "<<prezzo;

    t++;

    if (numero<p[t][0])
        {
        temp=p[t][0]-numero;
        p[t][0]=temp;
        valenza=(prezzo-p[t][1])*numero;
        t--;
        }
    else if (numero==p[t][0])
        {
            temp=p[t][0]-numero;
            p[t][0]=temp;
            valenza=(prezzo-p[t][1])*numero;
            for (int j=0;j<M;j++)
            p[t][j]=0;
        }
    else if (numero>p[t][0])
        {
            valenza=0;
            while(numero>p[t][0])
                {
                    valenza=valenza+(prezzo-p[t][1])*p[t][0];
                    numero=numero-p[t][0];
                    for (int j=0;j<M;j++)
                    p[t][j]=0;
                    t++;
                }
            valenza=valenza+(prezzo-p[t][1])*numero;
            p[t][0]=p[t][0]-numero;
            t--;
        }

cout<<"\nPlusvalenza: "<<valenza;
}

void Pila::print()const{
    cout<<"\nStampa Pila\n";

    for (int i=0;i<N;i++)
    {
     for (int j=0;j<M;j++)
     cout<<p[i][j]<<" ";
     cout<<"\n";
    }

    cout<<"\n";
}
main.cpp
Codice:
#include <iostream>
#include "header.h"

using namespace std;

int main(int argc, char *argv[])
{
    Pila p;

    E num3=100;
    E val3=17.2;

    E popnum1=0;
    E popval1=0;

    p.pushRiga(100, 18, 1.50);
    p.pushRiga(100, 17.5, 1.50);
    p.print();
    p.pop(50,17.8);
    p.print();
    p.pushRiga(num3,val3,1.50);
    p.print();
    p.pop(120,17.6);
    p.print();

    system("PAUSE");
    return 0;
}

Ultima modifica di limpid-sky : 14-02-2008 alle 15:26.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 15:19   #18
limpid-sky
Senior Member
 
L'Avatar di limpid-sky
 
Iscritto dal: Aug 2004
Messaggi: 1703
ho trovato un esempio già realizzato in rete.
questo è un template
http://www.businessfunctions.com/fun...?comp=LIFOCalc
mentre questo è il pacchetto di funzioni gratuite da scaricare e installare altrimenti non funziona.

ho scaricato e installato il pacchetto ma ci sono un sacco di funzioni inutili.
sapete come estrarre l'unica funzione che mi interessa e come installarla in excel?
grazie.

Ultima modifica di limpid-sky : 18-03-2008 alle 15:32.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v