Discussione: [C] Matrici e percorsi
Visualizza messaggio singolo
Vecchio 05-04-2016, 16.50.04   #8
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.503
LoryOne  un gioiello raroLoryOne  un gioiello raroLoryOne  un gioiello raro
Rif: [C] Matrici e percorsi

Cosa c'era di sbagliato ?
Prima cosa presentiamo lo script in modo ordinato, indentando il codice in modo che i blocchi siano ben visibili.

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 8
#define K 5

int main(void){
    char a[N][N];
    int i, j, numero, g=0, d=0,
    posx=(N-1)/2,
    posy=(N-1)/2;
    
    srand(time(NULL));

    while (g<K){
            for(i = 0; i < N; i++)
                  for(j = 0; j < N; j++){
                        if(d==0) a[i][j]=' ';
                        a[i][0]='|';
                        a[i][N-2]='|';
                        a[i][N-1]='\n';
                        a[posx][posy]='*';
                  }

            for(d=1; d<N; d++) printf("=");
            printf("\n");
            for(i = 0; i < N; i++){
                  for(j = 0; j < N; j++)
                  printf("%c", a[i][j]);
            }
            for(d=1; d<N; d++) printf("=");
            printf("\n");

            numero=(rand()%4);
            switch (numero) {
            case 0: posx++; break;
            case 1: posx--; break;
            case 2: posy++; break;
            case 3: posy--; break;}
            
            if(posx<=0) posx++;
            if(posx>=(N-1)) posx--;
            if (posy<=0) posy++;
            if (posy>=(N-2)) posy--;

            g++;
   }
   return 0;
}
In secondo luogo, ricordiamoci SEMPRE che le variabili vanno inzializzate, una volta dichiarate.
Guardate il primo while: g potrebbe avere qualunque valore e la condizione specificata potrebbe essere verificata come no.
Passimo poi alla porzione di codice aggiunta: if(d==0) a[i][j]=' ';
Solo la prima volta l'elemento a[i][j] deve contenere quel valore ' ', altrimenti le posizioni successive identificate da posx e posy non saranno riempite da '*'
___________________________________

Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice
LoryOne non  collegato   Rispondi citando