Problema su dichiarazione vettori!

di il
41 risposte

Problema su dichiarazione vettori!

Ciao a tutti, chiedo un piccolo aiuto sulla dichiarazione di array nella programmazione ad oggetti in C++, in quanto essendo alle prime armi non so come andrebbe fatta, allego il mio codice. Grazie a tutti
#include <iostream>
#include <cstring>
using namespace std;

class Libro {
	
	string nome_libro[10];
	float costo[10];
	int scaffale[10];
	int numero_pagine[10];
	string casa_editrice[10];
	
	public:
		float inizzializza(string n[], float c[], int s[], int p[], string ce[])
		{
			nome_libro[10] = n[10];
			costo[10] = c[10];
			scaffale[10] = s[10];
			numero_pagine[10] = p[10];
			casa_editrice[10] = ce[10];
		}
		
		void stampa()
		{
			int i;
			i=0;
			for(i=0; i<=9; i++)
			{
				cout<<"Il nome del libro e\' "<<nome_libro[i]<<" e costa euro "<<costo[i]<<" ,si trova nello scaffale "<<scaffale<<" ,ha pagine n. "<<numero_pagine<<" ed e\' prodotto dalla "<<casa_editrice<<endl;
			}
		}
		
		void applica_sconto()
		{
			int i;
			i=0;
			for(i=0; i<=9; 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[10];
	float c[10];
	int s[10];
	int p[10];
	string ce[10];
	int i;
	i=0;
	for(i=0; i<=9; 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.inizzializza(n[10], c[10], s[10], p[10], ce[10])
	operatore.stampa();
	operatore.applica_sconto();
	
}

41 Risposte

  • Re: Problema su dichiarazione vettori!

    Ma la domanda qual è?
  • Re: Problema su dichiarazione vettori!

    .
  • Re: Problema su dichiarazione vettori!

    Il libro da dove sto studiando non mi da una risposta soddisfacente
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Ma la domanda qual è?
    Di dirmi come andrebbe fatta
  • Re: Problema su dichiarazione vettori!

    La domanda è troppo generica e probabilmente il tuo problema è quello del passaggio dei vettori. Al metodo inizializza (con una z e due z).

    La chiamata va fatta con

    operatore.inizializza(n, c, s, p, ce)
  • Re: Problema su dichiarazione vettori!

    .
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    La domanda è troppo generica e probabilmente il tuo problema è quello del passaggio dei vettori. Al metodo inizializza (con una z e due z).

    La chiamata va fatta con

    operatore.inizializza(n, c, s, p, ce)
    Non va lo stesso
  • Re: Problema su dichiarazione vettori!

    Se continui con frasi del genere senza dare dettagli (messaggi d'errore o altro) non avrai tante risposte.

    Hai corretto anche le linee precedenti a quella che ti ho indicato io e che ti ha segnalato @migliorabile?
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Se continui con frasi del genere senza dare dettagli (messaggi d'errore o altro) non avrai tante risposte.

    Hai corretto anche le linee precedenti a quella che ti ho indicato io e che ti ha segnalato @migliorabile?

    Ha ragione, scusi, comunque ecco qui gli errori:

    [Error] no matching function for call to 'Libro::inizializza(std::string [10], float [10], int [10], int [10], float [10])'
    [Note] candidate is:
    [Note] float Libro::inizializza(std::string*, float*, int*, int*, std::string*)
    [Note] no known conversion for argument 5 from 'float [10]' to 'std::string* {aka std::basic_string<char>*}'

    Allego anche il codice corretto:
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class Libro {
    	
    	string nome_libro[10];
    	float costo[10];
    	int scaffale[10];
    	int numero_pagine[10];
    	string casa_editrice[10];
    	
    	public:
    		float inizializza(string n[], float c[], int s[], int p[], string ce[])
    		{
    			nome_libro[10] = n[10];
    			costo[10] = c[10];
    			scaffale[10] = s[10];
    			numero_pagine[10] = p[10];
    			casa_editrice[10] = ce[10];
    		}
    		
    		void stampa()
    		{
    			int i;
    			i=0;
    			for(i=0; i<=9; i++)
    			{
    				cout<<"Il nome del libro e\' "<<nome_libro[i]<<" e costa euro "<<costo[i]<<" ,si trova nello scaffale "<<scaffale<<" ,ha pagine n. "<<numero_pagine<<" ed e\' prodotto dalla "<<casa_editrice<<endl;
    			}
    		}
    		
    		void applica_sconto()
    		{
    			int i;
    			i=0;
    			for(i=0; i<=9; 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[10];
    	float c[10];
    	int s[10];
    	int p[10];
    	string ce[10];
    	int i;
    	i=0;
    	for(i=0; i<=9; 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, c)
    	operatore.stampa();
    	operatore.applica_sconto();
    	
    }
  • Re: Problema su dichiarazione vettori!

    Visto quel che hai scritto, forse sarebbe il caso che per prima cosa ti chiedessi se hai ben chiaro qual è l'obiettivo che intendi raggiungere...

    Ad esempio:

    1) hai chiamato Libro la tua classe, ma in effetti ha le caratteristiche di un libro o di qualcos'altro? (per dire, un libro ha dieci nomi? dieci prezzi? ecc.)

    2) perché in main() dichiari una variabile Libro e la chiami "operatore"? secondo me questo "lapsus" ti dovrebbe suggerire qualcosa.
  • Re: Problema su dichiarazione vettori!

    L'errore ti dice di controllare cosa hai scritto come ultimo parametro passato da inizializza
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    L'errore ti dice di controllare cosa hai scritto come ultimo parametro passato da inizializza


    Corretto, non mi segnala errori, ma non va lo stesso
    #include <iostream>
    #include <cstring>
    using namespace std;
    
    class Libro {
    	
    	string nome_libro[2];
    	float costo[2];
    	int scaffale[2];
    	int numero_pagine[];
    	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!

    Se dici ancora non va lo stesso senza altri dettagli non rispondo più
  • Re: Problema su dichiarazione vettori!

    oregon ha scritto:


    Se dici ancora non va lo stesso senza altri dettagli non rispondo più

    Mi fa inserire i dati, ma poi si arresta, quindi si ferma all'input
Devi accedere o registrarti per scrivere nel forum
41 risposte