fbpx
Skip to main content

Fondamenti inf 2

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15496 da COM_EASYSOCIAL_GUEST_NAME
Fondamenti inf 2 è stato creato da COM_EASYSOCIAL_GUEST_NAME
Mi servirebbe un'aiuto:
qualcuno mi puo' spiegare come si fa questo esercizio?
in particolar modo la parte evidenziata
1) Definire l’interfaccia di una classe Operaio che preveda come campi dati: nome, stipendio mensile, nome dell’azienda per cui lavora, e un vettore di puntatori a operai con lo stesso stipendio mensile ; un costruttore (o più di uno) e le relative funzioni di accesso.
Prevedere inoltre un funzione che permetta l’aggiunta di un nuovo Operaio con lo stesso stipendio e una che preveda la stampa del nome, dello stipendio annuale e del nome dell’azienda per cui lavorano gli operai che hanno lo stesso stipendio mensile.
Fornire l’implementazione del costruttore (non di default), della funzione che aggiunge un nuovo Operaio e della funzione di stampa.
grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15567 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Fondamenti inf 2
potresti specificare il linguaggio di programmazione che intendi usare?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15602 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Fondamenti inf 2
C++, scusate

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15662 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Fondamenti inf 2
Purtroppo nn ho molto tempo per scriverti l'intero programma..cmq ho fatto al volo una bozza di codice.Premetto che nn sono un programmatore puro, di conseguenza nelle righe di codice ci potrebbero essere diversi errori "scolastici".inoltre, avendo fatto tutto con una mezzoretta buona, ho omesso di trattare tutti i vari errori. L'idea è quella di creare prima un array di strutture contenente i dati degli operai, poi immagazzinare i puntatori di quest'ultime in un altro array. Infine creare l'ultimo matrice di array di puntatori in modo che ogni riga possa selezionare tutti i puntatori agli opeai con lo stesso stipendio...è un po' contorta come idea,ma spero almeno di darti uno spunto su come risolvere il problema ;)

#include <iostream>
#include <vector>
#include <string>

using namespace std;

struct S_Dati_Operaio
{
string s_nome;
string s_nome_azienda;
float f_stipendio;
};

typedef vector<S_Dati_Operaio>::iterator pIteratori;
typedef vector<pIteratori> lista_puntatori; // prevede la lista per tutti gli operai con lo stesso stipendio
// per il primo operaio, o il primo opraio con stipendio diverso
// si inizializzerà questo vettore.
class C_Operaio
{
private:
// si definisce un vettore di operai in modo da poter aggiungere
// una quantità indefinita di opearai alla classe C_Operaio
vector<S_Dati_Operaio> v_Operaio;
pIteratori iteratore_operaio; // crea il puntatore per il vettore visto sopra

// questi due vettori mi serviranno per ordinare gli operai
lista_puntatori v_lista;
lista_puntatori::iterator iteratore_lista;

vector<lista_puntatori> v_matrice_puntatori; // matrice contenente tutti gli operai ordinati per stipendio
vector<lista_puntatori>::iterator iteratore_matrice;
public:
C_Operaio();
void Add_Operaio( string nome, string nome_azienda, float stipendio );
void Ordina_Operaio( );
bool Print_Operaio();
};

C_Operaio::C_Operaio()
{
}

void C_Operaio::Add_Operaio( string nome, string nome_azienda, float stipendio )
{
S_Dati_Operaio *operaio;
operaio = new S_Dati_Operaio;

operaio->s_nome = nome;
operaio->s_nome_azienda = nome_azienda;
operaio->f_stipendio = stipendio;

// prima di tutto copio la nuova struttura nel vettore così quando finisce la funzione
// le informazioni nn vengono distrutte insieme ad essa
v_Operaio.push_back( *operaio );

// se la matrice risulta vuota bisogna inizializzare la prima lista
if( iteratore_matrice == v_matrice_puntatori.end() ) {
// una volta creata la prima lista la si inizializza con il primo iteratore
iteratore_operaio = v_Operaio.end() - 1;
v_lista.push_back( iteratore_operaio );
v_matrice_puntatori.push_back( v_lista );
}
else
Ordina_Operaio( );

pIteratori iteratore;
iteratore_lista = v_lista.end() - 1; // si indirizza l'iteratore ad una locazione prima,
// in quanto, dopo inserito un elemento, questo
// viene fatto puntare alla locazione successiva
iteratore = *iteratore_lista;
// a questo punto l'iteratore_operaio punta propro sull'ultima struttura immagazzinata
cout << "Creato nuovo operaio" << endl;
cout << "Nome: " << iteratore->s_nome << endl;
cout << "Nome azienda: " << iteratore->s_nome_azienda << endl;
cout << "Stipendio mensile: "<< iteratore->f_stipendio << "€" << endl;
cout << "

" << endl;

}

// estrapolo le informazioni dal primo membro di ogni lista e verifico se gli operai
// hanno lo stesso stipendio di quello da inserire
void C_Operaio::Ordina_Operaio( )
{
}

int main(int argc, char *argv[])
{
C_Operaio *COperaio;
COperaio = new C_Operaio();

COperaio->Add_Operaio( "Luca", "Sitin", 12 );
system("PAUSE");
return EXIT_SUCCESS;
}

come puoi vedere ho usato i vettori invece dei normali array..infatti nel tuo problema nn erano posti limiti di operaio, quindi questa mi è sembrata la scelta + giusta (naturalmente è anke la più sconveniente per la sua pesantezza,ma nn ci dovrebbero essere troppi problemi).Inoltre nn ho avuto tempo di creare la classe che permette di ordinare gli operai per stipendio...in poche parole,quando un operaio viene generato questo dovrà essere sistemato tra il vettore che contiene tutti gli operai con il suo stesso stipendio. Infine nn ho creato nemmeno la funzione che stampi tutti gli operai con lo stesso stipendio,ma per quella nn ci dovrebbero essere grossi problemi.

come ti ho già detto il programma nn è molto funzionale,ma ho voluto postarlo almeno per cercare di darti uno spunto su cui lavorare

spero di esserti stato d'aiuto.per ogni domanda o correzione aspetto una risposta sul forum

3nigma

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15666 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Fondamenti inf 2
Per adesso ti ringrazio tantissimo, mi è davvero di aiuto.
Mi metto subito al lavoro per completarlo.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15684 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Fondamenti inf 2
ok,se ti serve una mano in qualcos'altro mi farà piacere aiutarti ancora ;)

3nigma

Si prega Accedi o Crea un account a partecipare alla conversazione.