Programma sulle struct, problema di caricamento

di il
3 risposte

Programma sulle struct, problema di caricamento

Ragazzi sto affrontando questo problema:

Si vuole gestire la situazione della barche presenti in un porticciolo.
I dati relativi alle barche sono memorizzate in una tabella contenente per ogni elemento:
-codice natante
-proprietario
-lunghezza
-provenienza
(FIN QUI TUTTO BENE DA ORA IN POI NON CAPISCO QUESTA PARTE)
considera il fatto che nella prima metà dei posti possono essere ancorate solo barche lunghe al più di 4 metri, mentre gli altri posti non c'è vincolo.
(avevo pensato ad un do while allego il codice ma non capisco dove sbaglio)
ed in infine in un'altra parte dell'esercizio mi chiede di fare quest'operazione
registrazione dell'arrivo con immissione dei dati relativi nella prima posizione vuota adeguata alle sue dimensioni. (Questo non so dove mettere mano) grazie in anticipo

#include <iostream>
#include <string>
using namespace std;
struct porto
{
	int codice;
	string cognome;
	string nome;
	int lunghezza;
	string provenienza;
};
const int maxp=100;
porto p[maxp];
int n;
void carica ()
{
	int i;
	cout<<"inserisci numero barche nel porto"<<endl;
	cin>>n;
	for(i=0;i<n;i++)
	{	
		do
		{
		cout<<"inserisci la lunghezza della "<<i+1<<" barca"<<endl;
		cin>>p[i].lunghezza;
		cout<<"inserisci il nome del "<<i+1<<" del proprietario"<<endl;
		cin>>p[i].nome;
		cout<<"inserisci il cognome del "<<i+1<<" del proprietario"<<endl;
		cin>>p[i].cognome;
		cout<<"inserisci il codice per la  "<<i+1<<" barca"<<endl;
		cin>>p[i].codice;
		cout<<"inserisci la provenienza delle "<<i+1<<" barca"<<endl;
		cin>>p[i].provenienza;
		}while(p[i].lunghezza<4 && i<(n/2));
	
	}
}

3 Risposte

  • Re: Programma sulle struct, problema di caricamento

    Quel ciclo do non va bene ...

    Devi impostare due variabili con il massimo numero di posti di lunghezza limitata e massimo numero di posti di lunghezza libera.

    Ad esempio

    int postimax4 = n/2;
    int postinovincoli = n-postimax4;

    In seguito, quando chiederai i dati della prossima barca, controllerai opportunamente che una delle due variabili (quella che ti serve ovviamente) non sia arrivata a 0. In quel caso potrai assegnare il posto diminuendo il suo valore.
  • Re: Programma sulle struct, problema di caricamento

    Ho letto alla svelta il tuo codice, magari mi sbaglio, ma secondo me sbagli approccio.
    Io farei due vettori di puntatori ad una classe 'natante': il primo vettore contiene i posti max 4 metri, il secondo tutti gli altri.
    Quando arriva una barca, fai la lettura dei dati e se è <= 4 metri fai una ricerca nel vettore posti piccoli, se è pieno passi la ricerca al vettore posti grandi, ecc.
    Se non sai usare le classi, puoi usare le struct, se non sai allocare/usare puntatori puoi fare degli array di struct, basta che aggiungi un campo 'occupato' per semplificare la ricerca di posti liberi.
  • Re: Programma sulle struct, problema di caricamento

    Ok grazie, riscrivo il codice e lo linko di nuovo
Devi accedere o registrarti per scrivere nel forum
3 risposte