Programma c++ help!!

di il
7 risposte

Programma c++ help!!

Ragazzi vi sottopongo il programma che devo fare:
Allora il programma chiede di creare un interfaccia di una classe Macchina, che prevede come campi dati: tipo, marca, anno di produzione e un array di puntatori a macchine dello stesso tipo; Devo creare i costruttori e le funzioni d'accesso. Poi una funzione che aggiunge una nuova macchina dello stesso tipo e una funzione print che prevede la stampa della marca delle macchine dello stesso tipo.
Questo è quello che ho cominciato a scrivere, trovo difficoltà nell'uso dell'array di puntatori a macchine dello stesso tipo e quindi nella creazione della funzione aggiugi nuova auto dello stesso tipo. Qualche idea??


#include <iostream>
#include <string>

using namespace std;


class Macchina {

public:
Macchina(string t, string m, string a);
void set_new_car(string, string, string);
void print();

private:
string tipo;
string marca;
string anno_produzione;
Macchina* type[];

};

// definizioni

Macchina::Macchina(string t, string m, string a){
tipo=t;
marca=m;
anno_produzione=a;
}


void Macchina::set_new_car(string _t, string _m, string _a){
string car_type;

tipo=_t;
marca=_m;
anno_produzione=_a;


}

void Macchina::print(){

cout<<"marca: "<<marca<<"\n";
}


int main()
{


Macchina e = Macchina("","","");

return 0;
}

7 Risposte

  • Re: Programma c++ help!!

    Ciao, io più che un array userei una matrice o un sistema con liste complesse.
  • Re: Programma c++ help!!

    Purtroppo devo farlo proprio in quel modo!!!
  • Re: Programma c++ help!!

    Scusa non mi riesco a spiegare una cosa, se ho n macchine di tipo di verso, ne consegue che avrò n array diversi. Quindi sarebbe meglio un array di puntatori al primo indirizzo di un altro array. In modo tale da avere

    |_|_|_|_|_|_|_|_|_| array1 con i diversi tipi
    |
    |
    |
    |---|_|_|_|_|_|_|_| array1.1 con le macchine dello stesso tipo.

    Questo per tutti i tipi. Una cosa cosi...??? Scusama non riesco a capire la traccia.
    Se inserisco AlfaRomeo 156 per esempio, poi inserisco di nuovo AlfaRomeo 156 e la metto nell'array. Poi inserisco AlfaRomeo 166 visto che non è dello stesso tipo, che si deve fare?
  • Re: Programma c++ help!!

    Da quello che ho capito il programma dovrebbe inserire in un array macchine di diverso tipo, ad esempio spider, berlina, station wagon eccc
    Quindi quando io devo inserire una nuova macchine dello stesso tipo, credo che se io voglio inserire una macchina berlina la devo inserire nell'array con il tipo berlina
  • Re: Programma c++ help!!

    Ciao, io ho pensato allora ad una cosa del genere:

    classe
    
    
    #ifndef __CMACCHINA__
    #define __CMACCHINA__
    
    #include <string>
    #include <iostream>
    using namespace std;
    #define MAX 10
    
    class Macchina
    {
    private:
    	string tipo;
    	string anno_produzione;
    	string marca;
        Macchina* berlina[MAX];
    	Macchina* statwagon[MAX];
    	Macchina* spider[MAX];
    public:
    	Macchina(string Tipo, string Anno_Produzione, string Marca);
    	~Macchina();
    
    	int Set_New_Car(string Tipo,string Anno_Produzione,string Marca);
    	void print();
    };
    
    #endif
    
    
    
    #include "csample.h"
    
    int i=0,y=0,z=0, contatore=0; //i è l'indice dell'array berlina, yè l'indice dell'array spider, z è l'indice dell'array station_wagon
    string ToUpper(string s);
    Macchina::~Macchina()
    {
    	
    }
    
    Macchina::Macchina(std::string Tipo, std::string Anno_Produzione, std::string Marca)
    {
    	
    	tipo = ToUpper(Tipo);
    	marca=Marca;
    	anno_produzione=Anno_Produzione;
    	/* 
    	la prima volta insrisce l'oggetto nell'array
    	*/
    	if (contatore==0)
    	{
    		contatore++;
    		Set_New_Car(tipo,anno_produzione,marca);
    	}
    }
    int Macchina::Set_New_Car(std::string Tipo, std::string Anno_Produzione, std::string Marca)
    {
    	/*
    	Inserisce la macchina nell'array basandosi sul tipo di macchina.	
    	*/
    	Tipo=ToUpper(Tipo);
    
    	if (i>=MAX) return -1;
    
    	if(Tipo=="BERLINA")
    		berlina[i++]=new Macchina(Tipo,Anno_Produzione,Marca); 
    	else if(Tipo=="SPIDER")
    		spider[y++]=new Macchina(Tipo,Anno_Produzione,Marca);
    	else if(Tipo=="STATION_WAGON")
    		statwagon[z++]=new Macchina(Tipo,Anno_Produzione,Marca);
    }
    
    string ToUpper(string s)
    {
    	/*
    	restituisce la stringa di input convertita in minuscolo
    	*/
    	for(unsigned int j=0;j<s.length();j++)
    		s[j]= toupper (s[j]);
    	return s;
    }
    
    void Macchina::print()
    {
    
    	/*
    	stampa le marche delle macchine dei rispettivi array
    	*/
     cout <<"Le macchine del gruppo berlina"<< endl;
     for(int j=0;j<i;j++)
    	 cout <<berlina[j]->marca<<endl; 
    
     cout <<"Le macchine del gruppo Station Wagon"<< endl;
     for(int j=0;j<z;j++)
    	 cout <<statwagon[j]->marca<<endl; 
    
     cout <<"Le macchine del gruppo Spider"<< endl;
     for(int j=0;j<y;j++)
    	 cout <<spider[j]->marca<<endl; 
    }
    
    la funzione print() stampa le marche di tutte le auto ordinandole per tipo.
    Set_New_Car inserisce una nuova macchina nell'array del tipo corrispodente.
  • Re: Programma c++ help!!

    Ti ringrazio veramente per l'aiuto!!! Perfetto come lo hai realizzato!!
  • Re: Programma c++ help!!

    Di niente, mi sono accorto che nella funzione ToUpper ti ho commentato che ritorna la stringa in input convertita in minuscolo, invece è convertita in MAIUSCOLO da come avrai potuto notare dal codice successivo.
Devi accedere o registrarti per scrivere nel forum
7 risposte