Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
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


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
Le 10 migliori offerte Amazon di Pasqua:...
Nuove fotografie dagli astronauti di Art...
La toilette della capsula Orion Integrit...
GeForce NOW: ecco tutte le novità in arr...
Il Realme 16 5G debutta sul mercato glob...
HONOR svela tre nuovi tablet: il più int...
Tineco Floor One S9 Master: aspira e pul...
Vivo X300 Ultra, il lancio globale è ini...
Offerte robot aspirapolvere Amazon: ECOV...
L'AI genera codice in 8 minuti e i senio...
Ring Intercom Audio a 44,99€ su Amazon: ...
Apple iPhone 16 crolla a 689€: ecco perc...
Google Pixel 9 a 449,90€ con caricatore ...
Ecco la top 7 delle offerte Amazon, aggi...
Ex ingegnere ammette il sabotaggio: migl...
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: 21:33.


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