Programma Inventario C++

di il
46 risposte

46 Risposte - Pagina 3

  • Re: Programma Inventario C++

    Poi ovvio che voglio imparare a programmare, ma non posso neanche andare ramingo su centinaia di siti web che dicono uno l'opposto dell'altro
  • Re: Programma Inventario C++

    Ora non stiamo faccendo le mappe (lasciale stare per il momento). Ti ho fatto un menu. Se lo esegui vedi cosa fà. Nella funzione menu cosa c'è che non capisci?
  • Re: Programma Inventario C++

    A dire la verità l'ho eseguito ....
        
    int scelta = 0;
           do
           {
              scelta = menu();
           } while (scelta != 3);
           return 0;
    
    e poi non capisco
    
       int scelta = 0;
           if(!(std::cin >> scelta))
           {
              std::cin.clear();
              std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
           }
           return scelta;
    
    ma soprattutto NON SO COME TRATTARE QUEL return scelta!!!
  • Re: Programma Inventario C++

    Quello lo trattiamo poi. Ti spiego in tanto le 4 righe che mi hai elencato. Solo così puoi fare progressi e non buttando codice a muzzo.
    
    int scelta = 0;
    if(!(std::cin >> scelta))
    // scomponiamo l'if sopra
    // std::cin >> scelta questo estrae un dato formattato in int (perche scelta è un int)
    // e lo memorizza in scelta.
    // se non riesce a estrappolare il dato perche l'utente ha messo una lettera invece che un numero
    // lo stato interno del cin va in fail e scelta non viene modificato
    // con !(std::cin >> scelta) si verifica se cin è in fail e se si si agisce di conseguenza.
           {
    // quì siamo entrati perche cin è in fail, cosa si fa:
              std::cin.clear();
    // si pulisce lo stato di fail con cin.clear()
              std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    // ignoriamo tutti i caratteri che sono messi nello stream cin finche non trova una 
    // nuova riga oppure finche abbiamo raggiunto il limite massimo dei caratteri estraibili
    // che è uguale a std::numeric_limits<std::streamsize>::max() (circa 4 miliardi di numeri)
           }
    return scelta;
    // ritorna scelta sia che il suo valore sia cambiato sia che sia rimasto 0.
    
  • Re: Programma Inventario C++

    Adesso ti mostro la gestione della scelta. Lo scopo è quello di tenere il main sempre + pulito.
    
    #include <iostream>
    #include <limits>
    #include <string>
    #include <map>
    
    typedef struct _prodotto
    {
       std::string nome;
       double prezzo;
       int quantita;
    }prodotto;
    
    std::map<std::string,prodotto> magazzino;
    //questo sarà il nostro magazzino
    
    int menu(void);
    void InserisciArticolo(void);
    void CercaArticolo(void);
    
    int main()
    {
       int scelta = 0;
       do
       {
          scelta = menu();
    	  switch(scelta)
    	  {
    		case 1:
    		{
    			InserisciArticolo();
    		}
    		break;
    		case 2:
    		{
    			CercaArticolo();
    		}
    		break;
    	  }
       } while (scelta != 3);
       return 0;
    }
    
    int menu(void)
    {
       
       std::cout << std::string(25,'\n');
       std::cout << "\tMAGAZZINO 1.0" << std::endl << std::endl;
       std::cout << "1.\tInserisci articolo" << std::endl;
       std::cout << "2.\tCerca articolo" << std::endl;
       std::cout << "3.\tEsci" << std::endl << std::endl;
       std::cout << "Scelta:\t";
       int scelta = 0;
       if(!(std::cin >> scelta))
       {
          std::cin.clear();
          std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
       }
       return scelta;
    }
    
    void InserisciArticolo(void)
    {
    	std::cout << std::endl << "Sono nella funzione InserisciArticolo";
    	std::cout << std::endl << "Premi INVIO per continuare..." << std::endl;
    	std::cin.get();
    	std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }
    
    void CercaArticolo(void)
    {
    	std::cout << std::endl << "Sono nella funzione CercaArticolo" ;
    	std::cout << std::endl << "Premi INVIO per continuare..." << std::endl;
    	std::cin.get();
    	std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }
    
    Come sempre dimmi cosa non capisci e cosa hai capito.
  • Re: Programma Inventario C++

    Si sta facendo tutto un poco più chiaro, anche se non è affatto semplice. Non capisco quale sia la riga di codice che fà ricominciare lo script
  • Re: Programma Inventario C++

    
    std::cout << std::string(25,'\n');
    
    fa stampare 25 nuove righe di fila .

    il do-while finché non metti il 3 come scelta richiama sempre il menu. il menu stampa 25 nuove righe prima di presentarsi.
  • Re: Programma Inventario C++

    Sei ancora fermo a pensare?
  • Re: Programma Inventario C++

    Io l'inserimento articoli l'ho terminato. Tu inceve cosa hai imparato?
    
    #include <iostream>
    #include <limits>
    #include <string>
    #include <map>
    
    typedef struct _prodotto
    {
    	std::string nome;
    	double prezzo;
    	int quantita;
    }prodotto;
    
    std::map<std::string,prodotto> magazzino;
    //questo sarà il nostro magazzino
    
    int menu(void);
    void InserisciArticolo(void);
    void CercaArticolo(void);
    
    int main()
    {
    	int scelta = 0;
    	do
    	{
    		scelta = menu();
    		switch(scelta)
    		{
    		case 1:
    			{
    				InserisciArticolo();
    			}
    			break;
    		case 2:
    			{
    				CercaArticolo();
    			}
    			break;
    		}
    	} while (scelta != 3);
    	return 0;
    }
    
    int menu(void)
    {
    
    	std::cout << std::string(25,'\n');
    	std::cout << "\tMAGAZZINO 1.0" << std::endl << std::endl;
    	std::cout << "1.\tInserisci articolo" << std::endl;
    	std::cout << "2.\tCerca articolo" << std::endl;
    	std::cout << "3.\tEsci" << std::endl << std::endl;
    	std::cout << "Scelta:\t";
    	int scelta = 0;
    	if(!(std::cin >> scelta))
    	{
    		std::cin.clear();
    		std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    	}
    	return scelta;
    }
    
    void InserisciArticolo(void)
    {
    	std::cout << std::string(25,'\n');
    	std::cout << "\tINSERIMENTO ARTICOLI" << std::endl;
    	std::cout << std::endl << "Inserisci Codice Articolo:\t";
    	std::string codiceArticolo;
    	std::cin >> codiceArticolo;
    
    	std::map<std::string,prodotto>::iterator it = magazzino.find(codiceArticolo);
    	if(it == magazzino.end())
    	{
    		prodotto nuovoProdotto;
    		std::cout << std::endl << "Inserisci Nome Articolo:\t";
    		std::cin >> nuovoProdotto.nome;
    		std::cout << std::endl << "Inserisci Prezzo Articolo:\t";
    		std::cin >> nuovoProdotto.prezzo;
    		std::cout << std::endl << "Inserisci Quantita\' iniziale Articolo:\t";
    		std::cin >> nuovoProdotto.quantita;
    
    		magazzino[codiceArticolo] = nuovoProdotto;
    		std::cout << std::endl << "Articolo inserito";
    	}
    	else
    	{
    		std::cout << std::endl << "Codice prodotto gia\' esistente:\t" << it->second.nome;
    	}
    
    	std::cout << std::endl << "INVIO per continuare..." << std::endl;
    	std::cin.get();
    	std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }
    
    void CercaArticolo(void)
    {
    	std::cout << std::endl << "Sono nella funzione CercaArticolo" ;
    	std::cout << std::endl << "INVIO per continuare..." << std::endl;
    	std::cin.get();
    	std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
    }
    
  • Re: Programma Inventario C++

    Perdona la mia assenza: ho dovuto sostenere esami di lingua ...
    sembra che manchi solamente la ricerca.
    inoltri vorrei provare (magari più in là) ad inserire l'opzione che ti permetta di vedere tutti gli articoli, una lista.
    volevo anche chiederti se quel famoso "25" fosse un numero fisso o potesse essere aumentato.
  • Re: Programma Inventario C++

    Quel 25 è il numero di righe da scendere per avere uno schermo pulito. Puoi provare anche altri numeri per vedere cosa ti garba di+. Ciò che interessa a me è cosa hai imparato tu in questo piccolo programmino.
  • Re: Programma Inventario C++

    Be, per me è tutto nuovo: menu, stringhe, sruct...
  • Re: Programma Inventario C++

    Quindi?
  • Re: Programma Inventario C++

    Quindi ho imprato un sacco di cose
  • Re: Programma Inventario C++

    Cosa fa sta riga me la sapresti spiegare?
    
     magazzino[codiceArticolo] = nuovoProdotto;
    
    e quest'altra?
    
    magazzino.insert(std::make_pair(codiceArticolo,nuovoProdotto));
    
Devi accedere o registrarti per scrivere nel forum
46 risposte