Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto!! Non riesco a usare i puntatori!
Forum - C/C++ - Aiuto!! Non riesco a usare i puntatori!

Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 18:21
Sabato, 23/06/2012
Vi prego aiutatemi!
Perchè se scrivo in questa maniera il programma funziona correnttamente
Codice sorgente - presumibilmente C++

  1. void DeckOfCards::Show()
  2. {
  3.         static const char *number[13] = { "Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci","Jolly","Donna","Re" };
  4.         static const char *seme[4] =  { "Picche","Cuori","Quadri", "Fiori"};
  5.         int *position;
  6.         for (int count = 1; count <= 52; count++)
  7.         {
  8.                 position  = search(count);
  9.                 cout << number[*(position)];
  10.                 cout << " di " << seme[*(++position)] << endl;
  11.         }
  12. }
  13.  
  14. int * DeckOfCards::search(const int count)
  15. {
  16.         static int position[2];
  17.         for(int i = 0; i < rows; i++)
  18.         {
  19.                 for(int a = 0; a < columns; a++)
  20.                 {
  21.                         if(Deck[i][a] == count)
  22.                         {
  23.                                 position[0] = a;
  24.                                 position[1] = i;
  25.                                 return &position[0];
  26.                         }
  27.                 }
  28.         }
  29. }


Mentre se scrivo cosi'
Codice sorgente - presumibilmente C++

  1. void DeckOfCards::Show()
  2. {
  3.         static const char *number[13] = { "Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci","Jolly","Donna","Re" };
  4.         static const char *seme[4] =  { "Picche","Cuori","Quadri", "Fiori"};
  5.         int *position;
  6.         for (int count = 1; count <= 52; count++)
  7.         {
  8.                 position  = search(count);
  9.                 cout << number[*(position)] << " di " << seme[*(++position)] << endl;
  10.         }
  11. }
  12.  
  13. int * DeckOfCards::search(const int count)
  14. {
  15.         static int position[2];
  16.         for(int i = 0; i < rows; i++)
  17.         {
  18.                 for(int a = 0; a < columns; a++)
  19.                 {
  20.                         if(Deck[i][a] == count)
  21.                         {
  22.                                 position[0] = a;
  23.                                 position[1] = i;
  24.                                 return &position[0];
  25.                         }
  26.                 }
  27.         }
  28. }

mi da sempre  lo stesso number è sempre uguale?? aiuto sto uscendo pazzo
uso visual c++

Ultima modifica effettuata da Saik il 23/06/2012 alle 18:36
PM Quote
Avatar
teseien (Normal User)
Newbie


Messaggi: 5
Iscritto: 24/06/2012

Segnala al moderatore
Postato alle 17:24
Lunedì, 25/06/2012
funziona nel primo caso perchè bisogna stare attenti a fare "++position"
perchè lui esegue l'istruzione:
Codice sorgente - presumibilmente Plain Text

  1. position = position + 1


prima di eseguire tutte le istruzioni in cui è contenuta; ovvero nel secondo codice, quello che non ti funziona, l'istruzione :
Codice sorgente - presumibilmente Plain Text

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



si può tradurre così:

Codice sorgente - presumibilmente Plain Text

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



invece nel primo pezzo di codice le due istruzioni separate:
Codice sorgente - presumibilmente Plain Text

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


si possono tradurre nel seguente modo:
Codice sorgente - presumibilmente Plain Text

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


il che è diverso :):) capito? non so se sono stato chiaro...

PM Quote
Avatar
Saik (Normal User)
Pro


Messaggi: 117
Iscritto: 07/08/2011

Segnala al moderatore
Postato alle 16:16
Martedì, 26/06/2012
Ho capito cosa intendi ma il risultato non cambia :) infatti sostituendo nel 2° codice l'istruzione non cambia nnt:hail::hail:

PM Quote