Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-09-2004, 14:00   #1
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
[C++]Allocazione Memoria

Ciao a tutti, chi mi potrebbe spiegare gentilmente come si alloca lo spazio in memoria con l'operatore new?
Per esempio devo allocare una lista dove la testa della lista (punt_lista) è il puntatore della testa della lista

Thanks
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 15:12   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Allochi una struttura o un classe in questo modo:

lista *punt_lista;

punt_lista = new lista;
punt_lista->next = NULL;
punt_lista->info = 0; //supponendo info intero


Viene istanziata e allocata una struttura/classe di tipo lista...il cui puntatore viene ritornato da new...

Comunque si tratta di un solo elemento di tipo lista...in tal caso sarà l'unico elemento della lista...

cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 15:53   #3
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
guarda praticamente devo creare un programma che dato un elenco di articoli devo conoscere il guadagno totale, di ogni articolo si sa la quantità venduta, il prezzo di acquisto e di vendita.

Adesso io volevo usare una classe articolo e le liste.
Ma come faccio a fare in modo che dentro il campo informazione ci sia la classe??
Sinceramente la prof non c'è la spiegato e non saprei come fare.

La lista ha 2 campi: il campo informazione che deve contenere la classe e il campo next che punta alla lista dopo.
Thanks

P.S: Nel punt_lista=new lista, lista cosa sarebbe??
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 16:00   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
lista sarebbe il tipo di *punt_lista;

Per metterci la classe puoi fare in questo modo:
Codice:
struct lista {
   tuaclasse info;
   lista *next;
};
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 16:10   #5
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
ok ci provo
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:17   #6
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
allora, sono arrivato al punto dove devo acquisire il dato e metterlo dentro il membro char nome_prodotto[50] della classe articolo.

E' giusto se faccio così??

cin >>ogg_art.nome_prodotto;
p->info.nome_prodotto=ogg_art.nome_prodotto

Se no come devo fare?

Ultima modifica di Gogeta ss4 : 16-09-2004 alle 17:20.
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:31   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
cin >> p->info.nome_prodotto;

Non puoi assegnare un char [50] ad una ltro char [50]... Dovresti usare strcpy per farlo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:34   #8
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
ok, senti quando compilo mi da un errore nella classe

Codice:
class articolo
{
 public: articolo();     //Costruttore
		 void insert(lista *);  //Funzione per l'inserzione del prodotto
		 float guadagno(lista *); //Funzione che calcola il guadagno
 private: char nome_prodotto[10];  //Vettore di caratteri contenente il nome del prodotto
		  char descrizione_prodotto[200]; //Vettore di caratteri contenente la descrizione del prodotto
		  int quantita_vendute; //Variabile che contiene la quantità dei prodotti venduti
		  float prezzo_vendita; //Variabile che contiene il prezzo di vendita
		  float prezzo_acquisto; //Variabile che contiene il prezzo di acquisto
		  float guadagno_totale; //Variabile che contiene il guadagno totale
};

#endif
Mi dice che non riesce a identificare (lista *)
In quella funzione mi serve per passare punt_lista
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:37   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Hai definito lista prima della classe ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:38   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Perchè inserisci la lista dentro alla classe ?!?!?

class articolo
{
public: articolo(); //Costruttore
void insert(lista *); //Funzione per l'inserzione del prodotto
float guadagno(lista *); //Funzione che calcola il guadagno
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:40   #11
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
e allora come faccio a passargli il punt_lista alla funzione?
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:50   #12
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Ti posto tutto il codice così magari e meglio:

Codice:
#ifndef articoli_h
#define articoli_h

class articolo
{
 public: articolo();     //Costruttore
		 void insert(lista *);  //Funzione per l'inserzione del prodotto
		 float guadagno(lista *); //Funzione che calcola il guadagno
 private: char nome_prodotto[10];  //Vettore di caratteri contenente il nome del prodotto
		  char descrizione_prodotto[200]; //Vettore di caratteri contenente la descrizione del prodotto
		  int quantita_vendute; //Variabile che contiene la quantità dei prodotti venduti
		  float prezzo_vendita; //Variabile che contiene il prezzo di vendita
		  float prezzo_acquisto; //Variabile che contiene il prezzo di acquisto
		  float guadagno_totale; //Variabile che contiene il guadagno totale
};

#endif
------------------------------------

Codice:
#include <iostream.h>
#include "classi.h"

articolo::articolo() //Il costruttore inizializza a 0 
{
 quantita_vendute=0;
 prezzo_vendita=0;
 prezzo_acquisto=0;
 guadagno_totale=0;
}

void articolo::insert(lista *punt_lista)
{
 articolo ogg_art;
 register lista *p;
 p=new lista;
 cout <<"Inserisci il nome del prodotto venduto (MAX 10 LETTERE): ";
 cin >>p->info.nome_prodotto;
 cout <<"Descrivi Il Prodotto(MAX 200 LETTERE): ";
 cin >>p->info.descrizione_prodotto;
 cout <<"Quanti prodotti hai venduto?: ";
 cin >>p->info.quantita_vendute;
 cout <<"Inserisci il prezzo di vendita del prodotto: ";
 cin >>p->info.prezzo_vendita;
 cout <<"Inserisci il prezzo d'acquisto del prodotto: ";
 cin >>p->info.prezzo_acquisto;
 if(punt_lista==NULL) //caso lista vuota
  {
   p->next=NULL;
   punt_lista=p;
  }
 else
  {
   p->next=punt_lista;
   punt_lista=p;
  }

}

float articolo::guadagno(lista *punt_lista)
{
 articolo ogg_art;
 register lista *p;
 int prezzo_vend,prezzo_acqu,quantita_vend,totale=0;
 for(p=punt_lista;p!=NULL;p=p->next)
  {
   prezzo_vend=p->info.prezzo_vendita;
   prezzo_acqu=p->info.prezzo_acquisto;
   quantita_vend=p->info.quantita_vendute;
   totale+=(prezzo_vend-prezzo_acqu)*quantita_vend;
  }
 return totale;
}
---------------------------------------------

Codice:
#include "stdafx.h"
#include "classi.h"
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

struct lista_articoli
{
 articolo info;
 struct lista_articoli *next;
};


typedef struct lista_articoli lista;
 
int main(int argc, char* argv[])
{
 articolo ogg_art;
 lista *punt_lista=NULL;
 int scelta,totale=0;
  do
  {
   cout <<setw(20) <<"MENU' PRINCIPALE";
   cout <<setw(15) <<"1)Inserisci Singolo Prodotto";
   cout <<setw(15) <<"2)Controlla Gaudagno Totale";
   cout <<setw(15) <<"0)Uscita";
   cout <<setw(25) <<"Scelta: ";
   cin >>scelta;
   switch(scelta)
    {
     case 1: ogg_art.insert(punt_lista);
		     break;
	 case 2: totale+=ogg_art.guadagno(punt_lista);
		     cout <<"\nFinora hai guadagnato" <<totale <<"Euro";
			 break;
	 case 0: exit(EXIT_SUCCESS);
	 default: cout <<"\nOpzione non valida";
	}
   } while(scelta!=0);
	return 0;
}
Grazie per la pazienza
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 17:57   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Se articolo è anche la classe che è all'interno di lista allora così ha poco senso...

Le cose sono due...o definisci una classe lista...o le quelle funzioni le porti fuori dalla classe articolo...
Per la prima soluzione:
Codice:
class lista {
   articolo art;
   lista *next;
public:
   lista(const articolo a = articolo());
   void insersci_in_coda(oggetto art);
   articolo *cerca_prodotto(const char *nome_prodotto);
   void collega(const lista &lst);
};

//Tanto per farti un esempio
lista::lista(const articolo a = articolo())
{
   art = a; //attento che devi definire il costruttore di copia per articolo
   //altrimenti devi fare la copia membro a membro dei dati
   next = NULL;
}

//collega serbve per fare una specie di insrimento in testa
void lista::collega(const lista &lst)
{
   next = &lst;
}

//ecco la ricerca sula lista effettuata in modo ricorsivo
void lista::insersci_in_coda(oggetto art)
{
   if(next != NULL)
      next->inserisci_in_coda(art);
   else
      next = new lista(art);
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 18:02   #14
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
ok, allora definisco una classe lista, ma va dopo o prima la classe articolo??
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 18:03   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Dopo...altrimenti articolo non è definito...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 18:05   #16
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
scusa e nella classe lista cosa dovrei mettere allora??
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 18:10   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
In che senso ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 18:16   #18
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
Allora ecco il codice:

Codice:
#include <iostream.h>
#include "stdafx.h"
#include "classi.h"
#include <iomanip.h>
#include <stdlib.h>

struct lista_articoli
{
 articolo info;
 struct lista_articoli *next;
};


typedef struct lista_articoli lista;

void insert(lista *);  //Funzione per l'inserzione del prodotto
float guadagno(lista *); //Funzione che calcola il guadagno

int main(int argc, char* argv[])
{
 lista *punt_lista=NULL;
 int scelta;
 float totale;
  do
  {
   cout <<setw(10) <<"\nMENU' PRINCIPALE";
   cout <<setw(15) <<"\n1)Inserisci Singolo Prodotto";
   cout <<setw(15) <<"\n2)Controlla Gaudagno Totale";
   cout <<setw(15) <<"\n0)Uscita";
   cout <<setw(25) <<"\nScelta: ";
   cin >>scelta;
   switch(scelta)
    {
     case 1: insert(punt_lista);
		     break;
	 case 2: totale+=guadagno(punt_lista);
		     cout <<"\nFinora hai guadagnato" <<totale <<" Euro";
			 break;
	 case 0: exit(EXIT_SUCCESS);
	 default: cout <<"\nOpzione non valida";
	}
   } while(scelta!=0);
return 0;
}


//Funzioni

void insert(lista *punt_lista)
{
 articolo ogg_art;
 register lista *p;
 p=new lista;
 cout <<"Inserisci il nome del prodotto venduto (MAX 10 LETTERE): ";
 cin >>p->info.nome_prodotto;
 cout <<"Descrivi Il Prodotto(MAX 200 LETTERE): ";
 cin >>p->info.descrizione_prodotto;
 cout <<"Quanti prodotti hai venduto?: ";
 cin >>p->info.quantita_vendute;
 cout <<"Inserisci il prezzo di vendita del prodotto: ";
 cin >>p->info.prezzo_vendita;
 cout <<"Inserisci il prezzo d'acquisto del prodotto: ";
 cin >>p->info.prezzo_acquisto;
 if(punt_lista==NULL) //caso lista vuota
  {
   p->next=NULL;
   punt_lista=p;
  }
 else
  {
   p->next=punt_lista;
   punt_lista=p;
  }
}

float guadagno(lista *punt_lista)
{
 articolo ogg_art;
 register lista *p;
 int quantita_vend;
 float prezzo_vend,prezzo_acqu,totale;
 for(p=punt_lista;p!=NULL;p=p->next)
  {
   prezzo_vend=p->info.prezzo_vendita;
   prezzo_acqu=p->info.prezzo_acquisto;
   quantita_vend=p->info.quantita_vendute;
   totale+=(prezzo_vend-prezzo_acqu)*quantita_vend;
  }
 return totale;
}
Codice:
#include <iostream.h>
#include "stdafx.h"
#include "classi.h"
#include <iomanip.h>
#include <stdlib.h>

articolo::articolo() //Il costruttore inizializza a 0 
{
 quantita_vendute=0;
 prezzo_vendita=0;
 prezzo_acquisto=0;
 guadagno_totale=0;
}
Codice:
#ifndef ARTICOLO_H
#define ARTICOLO_H


class articolo
{
 public: articolo();     //Costruttore
          char nome_prodotto[10];  //Vettore di caratteri contenente il nome del prodotto
		  char descrizione_prodotto[200]; //Vettore di caratteri contenente la descrizione del prodotto
		  int quantita_vendute; //Variabile che contiene la quantità dei prodotti venduti
		  float prezzo_vendita; //Variabile che contiene il prezzo di vendita
		  float prezzo_acquisto; //Variabile che contiene il prezzo di acquisto
		  float guadagno_totale; //Variabile che contiene il guadagno totale
};

#endif
Allora il programma parte, dopo che faccio l'inserimento dei dati e voglio sapere il guadagno mi da un numero stranissimo, con il debug ho visto che non entra nel ciclo for della funzione del guadagno e non riesco a capire dovè l'errore.
Puoi illuminarmi?

Ultima modifica di Gogeta ss4 : 16-09-2004 alle 19:47.
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
Old 16-09-2004, 20:33   #19
Gogeta ss4
Senior Member
 
L'Avatar di Gogeta ss4
 
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
sono riuscito a mettere apposto, l'unica cosa che non riesco a capire e perchè non mi vede la manipolazione dello stream SETW...
Gogeta ss4 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
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: 04:45.


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