Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C] passaggio per indirizzo?

    ragazzi devo assolutamente passare una variabile per indirizzo, in questo problema nel for di output dopo la chiamata a mosse cavallo, nella condizione del for deve esserci j<i e non j<7 forzato. come faccio a passarla per indirizzo? una mano grazieee
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void mosse_cavallo(int i,int pos_iniz[],int pos_possibili[2][8]);
    int main()
       { int index,i,j,pos_iniz[3],pos_possibili[2][8];
    
         printf("Inserisci le coordinate della posizione iniziale del cavallo:\n");
         scanf("%d %d",&pos_iniz[0],&pos_iniz[1]);
         printf("Le possibili mosse del cavallo sono:\n");
         mosse_cavallo(i,pos_iniz,pos_possibili);
         for(j=0;j<=7;j++)
               {printf("%d",pos_possibili[0][j]);
                printf("%d\n",pos_possibili[1][j]);
                }
               
               
           
           
              
         
    }
     
     
    void mosse_cavallo(int i,int pos_iniz[],int pos_possibili[2][8])
        { int x,y;
          i=0;
        
          x=pos_iniz[0]+1;
          y=pos_iniz[1]+2;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
        }
          x=pos_iniz[0]+1;
          y=pos_iniz[1]-2;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
              }
          x=pos_iniz[0]-1;
          y=pos_iniz[1]+2;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;                                        
                   }
               }    
          x=pos_iniz[0]-1;
          y=pos_iniz[1]-2;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
               } 
          x=pos_iniz[0]+2;
          y=pos_iniz[1]+1;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                    }
              }
          x=pos_iniz[0]+2;
          y=pos_iniz[1]-1;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
               } 
          x=pos_iniz[0]-2;
          y=pos_iniz[1]+1;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7))
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
              } 
          x=pos_iniz[0]-2;
          y=pos_iniz[1]-1;
          if((x>=0)&&(y>=0))
              {if((x<=7)&&(y<=7)) 
                   {pos_possibili[0][i]=x;
                    pos_possibili[1][i]=y;
                    i=i+1;
                   }
              } 
       return;
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C] passaggio per indirizzo?

    Originariamente inviato da johnnny
    ragazzi devo assolutamente passare una variabile per indirizzo, in questo problema nel for di output dopo la chiamata a mosse cavallo, nella condizione del for deve esserci j<i e non j<7 forzato. come faccio a passarla per indirizzo? una mano grazieee
    Devi passare l'indirizzo di i?

    La dichiari come puntatore e poi la passi usando &, così:
    codice:
    void mosse_cavallo(int *i,int pos_iniz[],int pos_possibili[2][8]);
     
    mosse_cavallo(&i,pos_iniz,pos_possibili);
    Ovviamente all'interno di mosse_cavallo non potrai usare i (che ora contiene un indirizzo) ma *i (ovvero il valore puntato da quell'indirizzo). Guardati come funzionano i puntatori...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    grazie mille alex adesso funziona, non sai quanto ti sono grato, mi sa che devo ripeterli, io ho un manuale di c , ma non riesco a capirli tanto bene, purtroppo all'università ho saltato prp la lezione sui puntatori. cioè io non mettevo l'asterisco solo nel sottoprogramma mosse_cavallo perchè io so che puntano ad un certo indirizzo le variabili puntatore, ma se *i non la metto uguale a qualkosa a cosa punterà mai? capito qual'è il mio dubbio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.