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

    [C] Cosa causa il loop?

    ragazzi vi posto questo problema, che da un loop nell'output fino a che non esce la scritta : segmentation fault. secondo voi da cosa è causato? Grazie.

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void mosse_cavallo(int pos_iniz[],int pos_possibili[][8]);
    void controllo(int x,int y,int pos_possibili[][8]);
    
    int main()
    { int k,i,j,pos_iniz[2],pos_possibili[2][8];
         
      printf("Inserisci la riga della posizione iniziale del cavallo:\n");
      scanf("%d",&pos_iniz[0]);
      printf("Inserisci la colonna della posizione iniziale del cavallo:\n");
      scanf("%d",&pos_iniz[1]);
      mosse_cavallo(pos_iniz,pos_possibili);
      printf("Le possibili mosse del cavallo sono:\n");
      for(j=0;j<i;j++)
        
          {printf("%d",pos_possibili[0][j]);
           printf("%d",pos_possibili[1][j]);
           printf("\n");
           
       
          } 
      
      
    }
      
      
      
    void mosse_cavallo(int pos_iniz[],int pos_possibili[][8])
      { int x,y;
       x=pos_iniz[0]+1;
       y=pos_iniz[1]+2;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]+1;                                                                     /* rigo 31 */
       y=pos_iniz[1]-2;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]-1;
       y=pos_iniz[1]+2;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]-1;
       y=pos_iniz[1]-2;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]+2;
       y=pos_iniz[1]+1;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]+2;
       y=pos_iniz[1]-1;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]-2;
       y=pos_iniz[1]+1;
       controllo(x,y,pos_possibili);
       x=pos_iniz[0]-2;
       y=pos_iniz[1]-1;
       controllo(x,y,pos_possibili);
       return;
    }
      
    void controllo(int x,int y,int pos_possibili[][8])
      {int i;
       i=0;
       if((x>=0)&&(y>=0))
          { if((x<8)&&(y<8))
               {pos_possibili[0][i]=x;
                pos_possibili[1][i]=y;
                i=i+1;}
          } 
      return;
      }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Alla variabile i, in main, non assegni alcun valore. Quando vai ad eseguire questo ciclo

    codice:
      for(j=0;j<i;j++)
        
          {printf("%d",pos_possibili[0][j]);
           printf("%d",pos_possibili[1][j]);
           printf("\n");
           
       
          }
    in i hai un valore casuale, probabilmente molto alto, e questo ti fa crashare il programma. Assegna ad i un valore "sensato" secondo quello che devi/vuoi fare e non avrai problemi (cioé: non crasha il programma, poi non so cosa volessi ottenere).
    every day above ground is a good one

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.