Hollala
20-03-2016, 17.20.57
Buongiorno a tutti!
Invoco il vostro aiuto perché non riesco proprio a cavare un ragno dal buco nella realizzazione di un programma in C.
Mi si richiede di stampare passo passo il moto casuale di una particella che parte dal centro di una tabella NxN (e ci rimane per tutti i suoi spostamenti).
In pratica devo stampare tante tabelle quanti sono gli spostamenti denotando la posizione della particella con * e tutte le posizioni precedenti con +.
Non dovrei avere problemi con la generazione di valori casuali, uso le funzioni srand(time(NULL)) e rand()%4, che associo alle 4 possibilità di uno switch di modificare il valore delle posizioni di una matrice matrix[N][N].
Le mie difficoltà consistono sostanzialmente nel capire come assegnare caratteri char alla matrice nelle varie posizioni (spazi della tabella compresi), come far "memorizzare" le posizioni precedenti al programma, in modo che stampi i + al loro posto e come stampare la tabella ottenuta.
La grafica dovrebbe risultare all'incirca così (primo passo, con gli spazi al posto dei puntini):
========
|...............|
|...............|
|......*.......|
|...............|
|...............|
========
Ringrazio chiunque mi dia qualche idea e qualche dritta a livello della sintassi, questo è quello che ho tentato di scrivere fin'ora:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 9
#define K 3
int main(void){
char a[N][N];
int i, j, RIG=N, COL=N, nord=0, est=0, sud=0, ovest=0, numero, g, d, *p;
srand(time(NULL));
while (g<K){
numero=(rand()%4);
switch (numero) {
case 0: nord++; break;
case 1: est++; break;
case 2: sud++; break;
case 3: ovest++; break;}
for(i = 0; i < RIG; i++)
for(j = 0; j < COL; j++)
{a[i][j]=' ';
a[i][0]='|';
a[i][N-2]='|';
a[i][N-1]='\n';
a[N/2][N/2]='*';}
for(d=1; d<N; d++) printf("=");
printf("\n");
for(i = 0; i < RIG; i++){
for(j = 0; j < COL; j++)
printf("%c", a[i][j]);}
for(d=1; d<N; d++) printf("=");
printf("\n");
g++;}
return 0;}
Invoco il vostro aiuto perché non riesco proprio a cavare un ragno dal buco nella realizzazione di un programma in C.
Mi si richiede di stampare passo passo il moto casuale di una particella che parte dal centro di una tabella NxN (e ci rimane per tutti i suoi spostamenti).
In pratica devo stampare tante tabelle quanti sono gli spostamenti denotando la posizione della particella con * e tutte le posizioni precedenti con +.
Non dovrei avere problemi con la generazione di valori casuali, uso le funzioni srand(time(NULL)) e rand()%4, che associo alle 4 possibilità di uno switch di modificare il valore delle posizioni di una matrice matrix[N][N].
Le mie difficoltà consistono sostanzialmente nel capire come assegnare caratteri char alla matrice nelle varie posizioni (spazi della tabella compresi), come far "memorizzare" le posizioni precedenti al programma, in modo che stampi i + al loro posto e come stampare la tabella ottenuta.
La grafica dovrebbe risultare all'incirca così (primo passo, con gli spazi al posto dei puntini):
========
|...............|
|...............|
|......*.......|
|...............|
|...............|
========
Ringrazio chiunque mi dia qualche idea e qualche dritta a livello della sintassi, questo è quello che ho tentato di scrivere fin'ora:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 9
#define K 3
int main(void){
char a[N][N];
int i, j, RIG=N, COL=N, nord=0, est=0, sud=0, ovest=0, numero, g, d, *p;
srand(time(NULL));
while (g<K){
numero=(rand()%4);
switch (numero) {
case 0: nord++; break;
case 1: est++; break;
case 2: sud++; break;
case 3: ovest++; break;}
for(i = 0; i < RIG; i++)
for(j = 0; j < COL; j++)
{a[i][j]=' ';
a[i][0]='|';
a[i][N-2]='|';
a[i][N-1]='\n';
a[N/2][N/2]='*';}
for(d=1; d<N; d++) printf("=");
printf("\n");
for(i = 0; i < RIG; i++){
for(j = 0; j < COL; j++)
printf("%c", a[i][j]);}
for(d=1; d<N; d++) printf("=");
printf("\n");
g++;}
return 0;}