PDA

View Full Version : [C++]Help esame!!


spidy86
15-02-2008, 20:52
salve a tutti, leggo da molto il forum ma ora ho necessità di scrivere sono un perito informatico,ma faccio l'operaio. Mi sono iscritto da poco all'uni,e come primo esame di pogrammazione mi capita questo:
Si vuole sviluppare un algoritmo per il cammino di un robot in un labirinto.
La stanza è pavimentata a tasselli quadrati (caselle) ed è dotata di pareti esterne e
interne come in figura. Il robot si muove a richiesta dell’utente sempre solo di una
casella alla volta, scelta tra una delle quattro caselle vicine.
Il robot è in grado di “vedere”, cioè di stabilire, guardando in una delle quattro
direzioni (avanti, indietro, sinistra, destra), quante sono le caselle libere (in linea
retta) fino alla parete. La legge con cui il robot si muove è la seguente: nel 30% dei
casi il robot si muove a caso in una delle quattro caselle vicine possibili (parete
permettendo); nel 70% dei casi il robot prima “vede” e individua la direzione (avanti,
indietro, sinistra, destra) del movimento (scegliendo quella cui corrisponde il
percorso possibile più lungo; nel caso di più percorsi di massima lunghezza, la
direzione viene scelta a caso tra questi) e poi si muove (sempre di un solo passo) in
quella direzione.
Nella stanza, inoltre, sono presenti dei “buchi neri” che fanno terminare il cammino
prematuramente (5 uscite distribuite in modo casuale).
Inoltre sono presenti 5 “botole” che permettono lo spostamento del robot in una
posizione casuale della stanza.
La simulazione termina quando il robot “esce dalla porta” della stanza (in basso a
sinistra nella figura). L’algoritmo deve visualizzare il percorso del robot dopo ogni
passo, mostrando la stanza e la posizione del robot.L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si
ricorda che, per esempio, se numero_casuale è un int, la chiamata
numero_casuale=rand()%11; genera un numero casuale intero (distribuzione
uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9,10). Usare sempre la srand() per
rendere automatica la scelta iniziale del seed della sequenza di numeri casuali.
Effettuare almeno 5 test, variando la posizione iniziale del robot. Effettuare anche 3
test cambiando ogni volta la disposizione delle pareti nella stanza e cercando di
trovare disposizioni critiche delle pareti


Aiuto io alle superiori ho fatto il pascal!!!!
chi è interessato e vuole la figura me lo dica. grazie

cionci
16-02-2008, 02:05
Mi dispiace, ma qui non si fanno interi esercizi

spidy86
17-02-2008, 15:21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void avanza (int,int,int,int,char);
void main()
{

srand((unsigned int)time(0));
int i,j;
char scacchiera[16][16]= {{'m','m','m','m','m','m','m','m','m','m','m','m','m','m','m','m'},
{ 'm',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m','m','m','m','m','m','m','m','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ','m','m','m',' ','m'},
{ ' ',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ ' ',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ ' ',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm','m','m','m','m','m','m','m','m','m','m','m','m','m','m','m'}};


for (i=0;j=11;j<13){
avanza; } ;

void avanza ();
int nx,ny;
char x;
for (i=1;i<=1;i++){
/* genera a caso la posizione
nella scacchiera (5x5) */
nx=rand()%17;
ny=rand()%17;
scacchiera[nx][ny]='x';
}

for (i=0;i<16;i++){
for (j=0;j<16;j++)
printf(" %c",scacchiera[i][j]);
printf("\n");}
getchar () ;

}


help lo compilo, nn mi da errori ma nn viene visualizzato nulla!!!:muro: dove sbaglio??

cionci
17-02-2008, 15:30
Dove hai definito la funzione avanza ?
Mi sa che devi ripassarti un po' come si strutturano i programmi in C (questo programma di C++ non ha niente) e come si definiscono e si richiamano le funzioni.

spidy86
17-02-2008, 15:35
ve lo detto vengo dal pascal col c è il primo approccio!!:mc: