# Festa di laurea (laurea) 20 / 100

**URL:** <https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360>\
**Category:** Aiuto\
**Created:** [24 Ottobre 2018, 4:32pm UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360 "2018-10-24T16:32:38Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![LorenzoM](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/l/e495f1/32.png) [@LorenzoM](https://forum.olinfo.it/u/LorenzoM)\
**Post date:** [24 Ottobre 2018, 4:32pm UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/1 "2018-10-24T16:32:38Z")

</div>

Ottengo 20/100, non riesco a capire dove sbaglio.  
Se qualcuno mi potesse dare una mano ve ne sarei molto grato.  
Grazie in anticipo.

```
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int confronto (int N,int Nmezzi[4],int Prezzo[4],int capacita[4],int posti,int costo,int pos)
{
	int min,temp;
	min=100001;
	Nmezzi[pos]--;
	if (posti>=N)
	{

		return costo;
	}
	else
	{
		for (int i=0;i<4;i++)
		{
			if (Nmezzi[i]>0)
			{

				temp=confronto(N,Nmezzi,Prezzo,capacita,posti+capacita[i],costo+Prezzo[i],i);
				if (temp<min)
					min=temp;
			}
		}
		return min;
	}
}
int main()
{
	ifstream leggi("input.txt");
	ofstream scrivi("output.txt");
	int N,D,P,i;
	int Nmezzi[4];
	int Prezzo[4];
	int capacita[4]={2,4,5,7};
	leggi>>N;
	for (i=0;i<4;i++)
	{
		leggi>>D>>P;
		Nmezzi[i]=D;
		Prezzo[i]=P;	
	}
	scrivi<<confronto(N,Nmezzi,Prezzo,capacita,0,0,0);
}
```

---

<div class="post-metadata">

**Author:** ![simpatine](https://forum.olinfo.it/user_avatar/forum.olinfo.it/simpatine/32/444_2.png) [@simpatine](https://forum.olinfo.it/u/simpatine)\
**Post date:** [26 Ottobre 2018, 12:26pm UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/2 "2018-10-26T12:26:32Z")

</div>

Ciao, il problema principale è che quando passi alla funzione una variabile non viene creata una copia fisica della stessa ma un puntatore a quella variabile, in altre parole quando fai l’operazione:

> [@LorenzoM](#):
>
> Nmezzi[pos]–;

viene modificato sempre lo stesso vettore.  
Devi quindi semplicemente aggiungere un `Nmezzi[pos]++` prima dei due `return costo`.  
(Se vuoi un consiglio cerca di dichiarare le variabili globali, non solo il codice diventa più pulito ma risparmi anche tempo e memoria quando richiami funzoni fuori dal main ed eviti errori dovuti all’inizializzazione)  
Però manca ancora qualcosa: quando richiami la funzione la prima volta pos è uguale a 0, ma non è detto che tu debba noleggiare sempre lo scooter.  
Spero di aver risolto.

---

<div class="post-metadata">

**Author:** ![filippos](https://forum.olinfo.it/user_avatar/forum.olinfo.it/filippos/32/103_2.png) [@filippos](https://forum.olinfo.it/u/filippos)\
**Post date:** [26 Ottobre 2018, 6:00pm UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/3 "2018-10-26T18:00:16Z")

</div>

> [@simpatine](#):
>
> Ciao, il problema principale è che quando passi alla funzione una variabile non viene creata una copia fisica della stessa ma un puntatore a quella variabile.

Mi permetto di dire che però estrapolato dal contesto quello che hai detto non è corretto: viene creata una copia, ma del puntatore (al primo elemento dell’array). Questi due puntatori puntano però allo stesso indirizzo di memoria e “condividono” quindi i loro dati, in ogni modo il nuovo puntatore/array è a tutti gli effetti un puntatore diverso e può quindi essere riassegnato senza invalidare il puntatore da cui è stato copiato 🙂

---

<div class="post-metadata">

**Author:** ![simpatine](https://forum.olinfo.it/user_avatar/forum.olinfo.it/simpatine/32/444_2.png) [@simpatine](https://forum.olinfo.it/u/simpatine)\
**Post date:** [27 Ottobre 2018, 5:07am UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/4 "2018-10-27T05:07:27Z")

</div>

Beh sì, magari non ho specificato troppo 😅  
Comunque il succo era che non viene creato dal nulla un altro vettore.

---

<div class="post-metadata">

**Author:** ![LorenzoM](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/l/e495f1/32.png) [@LorenzoM](https://forum.olinfo.it/u/LorenzoM)\
**Post date:** [27 Ottobre 2018, 4:20pm UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/5 "2018-10-27T16:20:01Z")

</div>

Grazie mille.  
Si questa era un’informazione che completamente ignoravo, infatti ora sto incominciando a capire perchè tanti codici che creavo non funzionavano…

---

<div class="post-metadata">

**Author:** ![simpatine](https://forum.olinfo.it/user_avatar/forum.olinfo.it/simpatine/32/444_2.png) [@simpatine](https://forum.olinfo.it/u/simpatine)\
**Post date:** [28 Ottobre 2018, 8:10am UTC](https://forum.olinfo.it/t/festa-di-laurea-laurea-20-100/5360/6 "2018-10-28T08:10:51Z")

</div>

Di nulla 👍 felice di esserti stato utile anche su altri problemi.
