Problema su dichiarazione vettori!

di il
41 risposte

41 Risposte - Pagina 2

  • Re: Problema su dichiarazione vettori!

    Io vorrei sapere la scrittura dei vettori nella classe, la sintassi
  • Re: Problema su dichiarazione vettori!

    Non è questione di sintassi, ma di capire cosa vuoi fare.

    Tanto per iniziare l'include corretto è

    #include <string>

    e questa

    int numero_pagine[];

    è sbagliata perché tra parentesi ci deve essere qualcosa.

    Poi, se la classe rappresenta un LIBRO, perché usi questi array di 2 elementi che come ti avevano già detto (e come ti avevo chiesto di correggere) ?
    Queste linee

    nome_libro[2] = n[2];
    costo[2] = c[2];
    scaffale[2] = s[2];
    numero_pagine[2] = p[2];
    casa_editrice[2] = ce[2];

    non sono corrette e non hanno neanche senso dato che un libro NON HA due titoli o due costi ...
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Non è questione di sintassi, ma di capire cosa vuoi fare.

    Tanto per iniziare l'include corretto è

    #include <string>

    e questa

    int numero_pagine[];

    è sbagliata perché tra parentesi ci deve essere qualcosa.

    Poi, se la classe rappresenta un LIBRO, perché usi questi array di 2 elementi che come ti avevano già detto (e come ti avevo chiesto di correggere) ?
    Queste linee

    nome_libro[2] = n[2];
    costo[2] = c[2];
    scaffale[2] = s[2];
    numero_pagine[2] = p[2];
    casa_editrice[2] = ce[2];

    non sono corrette e non hanno neanche senso dato che un libro NON HA due titoli o due costi ...

    La traccia del problema è

    Definisci una classe libro contenete i seguenti attributi: nome del libro (array di caratteri), prezzo, numero di scaffale, numero di pagine, casa editrice.
    Inoltre definisci i seguenti metodi:
    void inizializza;
    void stampa();
    void applicaSconto();
    i quali, rispettivamente hanno i seguenti compiti:
    Inizializzare i campi dati dell’oggetto classe;
    Stampare tutti i dati dell’oggetto;
    Diminuire del 10% il prezzo del libro in oggetto.
  • Re: Problema su dichiarazione vettori!

    Ma quindi

    string cosa è per te?

    Se devi usare un array di char del c devi scrivere

    char nome[50];
    float prezzo;
    int scaffale;
    int numero_pagine;
    char casa_editrice[50];

    se devi usare le string del c++ allora

    string nome;
    float prezzo;
    int scaffale;
    int numero_pagine;
    string casa_editrice;
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Ma quindi

    string cosa è per te?

    Se devi usare un array di char del c devi scrivere

    char nome[50];
    float prezzo;
    int scaffale;
    int numero_pagine;
    char casa_editrice[50];

    se devi usare le string del c++ allora

    string nome;
    float prezzo;
    int scaffale;
    int numero_pagine;
    string casa_editrice;

    Mi è stato detto di usare string invece di char, comunque per me string è una concatenazione di caratteri
  • Re: Problema su dichiarazione vettori!

    In C una stringa è un array di caratteri terminato da un carattere '\0'. In C++ invece è un oggetto a tutti gli effetti, con proprietà, metodi... Che internamente l'oggetto string possa magari gestire un array di caratteri è un altro discorso che "non interessa" chi usa l'oggetto string stesso -- dall'esterno un oggetto di classe string va trattato come un oggetto e non come un array, per cui le tue proprietà riferite al titolo e alla casa editrice del libro non dovrebbero essere array.
  • Re: Problema su dichiarazione vettori!

    Hai definito string in qualche modo? Mostra TUTTO il codice ...
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Hai definito string in qualche modo? Mostra TUTTO il codice ...
    
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class Libro {
    	
    	string nome_libro[2];
    	float costo[2];
    	int scaffale[2];
    	int numero_pagine[2];
    	string casa_editrice[2];
    	
    	public:
    		void inizializza(string n[], float c[], int s[], int p[], string ce[])
    		{
    			nome_libro[2] = n[2];
    			costo[2] = c[2];
    			scaffale[2] = s[2];
    			numero_pagine[2] = p[2];
    			casa_editrice[2] = ce[2];
    		}
    		
    		void stampa()
    		{
    			int i;
    			for(i=0; i<=1; i++)
    			{
    				cout<<"Il nome del libro e\' "<<nome_libro[i]<<" e costa euro "<<costo[i]<<", si trova nello scaffale "<<scaffale[i]<<", ha pagine n. "<<numero_pagine[i]<<" ed e\' prodotto dalla "<<casa_editrice[i]<<endl;
    			}
    		}
    		
    		void applica_sconto()
    		{
    			int i;
    			for(i=0; i<=1; i++)
    			{
    				float s;
    				float tot;
    				s=(costo[i]*10)/100;
    				tot=costo[i]-s;
    				cout<<"Lo sconto del libro n. "<<i<<" e\' uguale a: "<<tot<<endl;
    			}
    		}
    		
    };
    
    int main()
    {
    	Libro operatore;
    	
    	string n[2];
    	float c[2];
    	int s[2];
    	int p[2];
    	string ce[2];
    	
    	int i;
    	for(i=0; i<=1; i++)
    	{
    		cout<<"Inserisci il nome del libro: ";
    		cin>>n[i];
    		cout<<"Quanto costa il libro? ";
    		cin>>c[i];
    		cout<<"In quale scaffale si trova? ";
    		cin>>s[i];
    		cout<<"Quante pagine ha il libro? ";
    		cin>>p[i];
    		cout<<"Qual'e\' la casa editrice? ";
    		cin>>ce[i];
    		cout<<endl;
    	}
    	
    	operatore.inizializza(n, c, s, p, ce);
    	operatore.stampa();
    	operatore.applica_sconto();
    	
    	return 0;
    }
    
  • Re: Problema su dichiarazione vettori!

    In questo modo usi le stringhe del c++ non degli array di char. Ti ho detto prima cosa fare per utilizzare array di char. Leggi bene la risposta.

    Ho l'impressione che tu sia molto confuso e ti manchino molte basi ...
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    In questo modo usi le stringhe del c++ non degli array di char. Ti ho detto prima cosa fare per utilizzare array di char. Leggi bene la risposta.

    Ho l'impressione che tu sia molto confuso e ti manchino molte basi ...

    Io voglio utilizzare le stringhe, comunque il mio problema è un'altro, cioè i vettori, vorrei solo sapere come utilizzarli nella programmazione orientata agli oggetti
  • Re: Problema su dichiarazione vettori!

    Potete semplicemente correggere la parte sbagliata, dato che sono 3 giorni che non concludiamo niente!

    Senza l'uso dei vettori l'ho fatto, ecco:
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class Libro {
    	
    	string nome_libro;
    	float costo;
    	int scaffale;
    	int numero_pagine;
    	string casa_editrice;
    	
    	public:
    		void inizzializza(string n, float c, int s, int p, string ce)
    		{
    			nome_libro=n;
    			costo=c;
    			scaffale=s;
    			numero_pagine=p;
    			casa_editrice=ce;
    		}
    		
    		void stampa()
    		{
    			cout<<"Il nome del libro e\' "<<nome_libro<<" e costa euro "<<costo<<", si trova nello scaffale "<<scaffale<<", ha pagine n. "<<numero_pagine<<" ed e\' prodotto dalla "<<casa_editrice<<endl;
    		
    		}
    		
    		void applica_sconto()
    		{
    			float s;
    			float tot;
    			s=(costo*10)/100;
    			tot=costo-s;
    			cout<<"Lo sconto del libro e\' "<<tot<<endl;
    		}
    		
    };
    
    int main()
    {
    	
    	Libro operatore; 
    	
    	string n;
    	float c;
    	int s;
    	int p;
    	string ce;
    
    	cout<<"Inserisci il nome del libro: ";
    	cin>>n;
    	cout<<"Quanto costa il libro? ";
    	cin>>c;
    	cout<<"In quale scaffale si trova? ";
    	cin>>s;
    	cout<<"Quante pagine ha il libro? ";
    	cin>>p;
    	cout<<"Qual'e\' la casa editrice? ";
    	cin>>ce;
    	cout<<endl;
    		
    	operatore.inizzializza(n, c, s, p, ce);
    	operatore.stampa();
    	operatore.applica_sconto();
    	
    	return 0;
    }
    
    QUINDI IL MIO PROBLEMA E' L'UTILIZZO DEI VETTORI NELLA PROGRAMMAZIONE ORIENTATA AGLI OGGETTI, NIENT'ALTRO.
  • Re: Problema su dichiarazione vettori!

    Prima di tutto non urlare.

    Secondo, le correzioni le hai avute ma non le hai capite. Nessuno è obbligato a riscriverti l'esercizio. Hai dei suggerimenti, sfruttali !
    I vettori si utilizzano in c come in c++. Quindi non c'è un problema di OOP ma il fatto che non sai proprio utilizzare i vettori.

    Una stringa in C te l'avevo mostrato prima

    char nome_libro[50];

    e te lo avevo già scritto.

    E la copia si fa usando la funzione strcpy
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Prima di tutto non urlare.

    Secondo, le correzioni le hai avute ma non le hai capite. Nessuno è obbligato a riscriverti l'esercizio. Hai dei suggerimenti, sfruttali !
    I vettori si utilizzano in c come in c++. Quindi non c'è un problema di OOP ma il fatto che non sai proprio utilizzare i vettori.

    Una stringa in C te l'avevo mostrato prima

    char nome_libro[50];

    e te lo avevo già scritto.

    E la copia si fa usando la funzione strcpy

    Non ho urlato, ho semplicemente chiesto di indicarmi le linee di codice errate, poi char non indica una stringa a quanto ne so, la funzione strcpy non la conosco, quindi mi può dire in generale come si scrivono i vettori, se vuole
  • Re: Problema su dichiarazione vettori!

    Nei forum non si scrive in maiuscolo perché vuol dire urlare.

    Se non ti piacciono le risposte che ti do allora vuol dire che sai tutto e ti arrangi. La pazienza è finita.
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Nei forum non si scrive in maiuscolo perché vuol dire urlare.

    Se non ti piacciono le risposte che ti do allora vuol dire che sai tutto e ti arrangi. La pazienza è finita.
    Io non ho mai detto ne che non mi piacciano le tue risposte ne che so tutto. Semplicemente non ho ricevuto una risposta a quello che ho chiesto, cioè di indicarmi la parte di codice sbagliata. Se mi vuole rispondere è bene altrimenti arrivederci.
    Ti ripeto che dopo la tua correzione il programma continua a non andar e non dirmi di postare gli errori perché non c'è ne sono.
Devi accedere o registrarti per scrivere nel forum
41 risposte