Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III, la nuova mirrorless compatta
FUJIFILM X-T30 III è la nuvoa fotocamera mirrorless pensata per chi si avvicina alla fotografia e ricerca una soluzione leggera e compatta, da avere sempre a disposizione ma che non porti a rinunce quanto a controllo dell'immagine.
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati
Da Las Vegas, la visione di Larry Ellison e la concretezza di Clay Magouyrk definiscono la nuova traiettoria di Oracle: portare l’intelligenza artificiale ai dati, non i dati all’intelligenza, costruendo un’infrastruttura cloud e applicativa in cui gli agenti IA diventano parte integrante dei processi aziendali, fino al cuore delle imprese europee
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-01-2008, 11: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, 13: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, 12: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, 13: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, 14: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, 14: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, 14: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, 17: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 17:48.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 06-01-2008, 19: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, 20: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 16:20.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2008, 15: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 16:21.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 09-01-2008, 14: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, 12: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, 12: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 12:09.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2008, 15: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, 15: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 15:24. Motivo: Risultato
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-02-2008, 16: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 16:26.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2008, 16: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 16:32.
limpid-sky è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Micron e millisecondi: la piattaforma ServiceNow guida l'infrastruttura IT di Aston Martin F1 Micron e millisecondi: la piattaforma ServiceNow...
ASUS GeForce RTX 5080 Noctua OC Edition: una custom fenomenale, ma anche enorme ASUS GeForce RTX 5080 Noctua OC Edition: una cus...
Amazon prepara il più grande licenziamen...
Un post di Sean Duffy (amministratore ad...
SpaceX ha già lanciato oltre 135 ...
GeForce RTX 5060 Ti 8GB: non piace neanc...
Isar Aerospace Spectrum: il fallimento d...
'State lontani dalla GeForce RTX 5090 Fo...
GJ 251 c è la ''super-Terra'' sco...
Halo è ufficialmente multipiattaf...
Windows 11 25H2 e 24H2: come attivare su...
Brembo Solutions e Microsoft danno vita ...
Migliaia di pacchi Amazon rubati ai legi...
Ex CEO di Stellantis: Musk lascerà...
Record storico per i giochi Windows su L...
GPU introvabili: Microsoft accusa i mine...
RedTiger prende di mira i gamer: furto d...
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:12.


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