Oppure

Loading
23/06/12 16:21
Saik
Vi prego aiutatemi!
Perchè se scrivo in questa maniera il programma funziona correnttamente
void DeckOfCards::Show()
{
	static const char *number[13] = { "Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci","Jolly","Donna","Re" };
	static const char *seme[4] =  { "Picche","Cuori","Quadri", "Fiori"};
	int *position;
	for (int count = 1; count <= 52; count++)
	{
		position  = search(count); 
		cout << number[*(position)];
		cout << " di " << seme[*(++position)] << endl;
	}
}

int * DeckOfCards::search(const int count)
{
	static int position[2];
	for(int i = 0; i < rows; i++)
	{
		for(int a = 0; a < columns; a++)
		{
			if(Deck[i][a] == count)
			{
				position[0] = a;
				position[1] = i;
				return &position[0];
			}
		}
	}
}

Mentre se scrivo cosi'
void DeckOfCards::Show()
{
	static const char *number[13] = { "Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci","Jolly","Donna","Re" };
	static const char *seme[4] =  { "Picche","Cuori","Quadri", "Fiori"};
	int *position;
	for (int count = 1; count <= 52; count++)
	{
		position  = search(count); 
		cout << number[*(position)] << " di " << seme[*(++position)] << endl;
	}
}

int * DeckOfCards::search(const int count)
{
	static int position[2];
	for(int i = 0; i < rows; i++)
	{
		for(int a = 0; a < columns; a++)
		{
			if(Deck[i][a] == count)
			{
				position[0] = a;
				position[1] = i;
				return &position[0];
			}
		}
	}
}
mi da sempre lo stesso number è sempre uguale?? aiuto sto uscendo pazzo
uso visual c++
Ultima modifica effettuata da Saik 23/06/12 16:36
aaa
25/06/12 15:24
teseien
funziona nel primo caso perchè bisogna stare attenti a fare "++position"
perchè lui esegue l'istruzione:
position = position + 1

prima di eseguire tutte le istruzioni in cui è contenuta; ovvero nel secondo codice, quello che non ti funziona, l'istruzione :
cout << number[*(position)] << " di " << seme[*(++position)] << endl;


si può tradurre così:

position += 1;
cout << number[*(position)] << " di " << seme[*(position)] << endl;


invece nel primo pezzo di codice le due istruzioni separate:
cout << number[*(position)];
cout << " di " << seme[*(++position)] << endl;

si possono tradurre nel seguente modo:
cout << number[*(position)];
position += 1;
cout << " di " << seme[*(position)] << endl;

il che è diverso :):) capito? non so se sono stato chiaro...
aaa
26/06/12 14:16
Saik
Ho capito cosa intendi ma il risultato non cambia :) infatti sostituendo nel 2° codice l'istruzione non cambia nnt:hail::hail:
aaa