Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    9

    [C] Programma per far correre delle macchinine su una pista

    Salve a tutti, ho questo esercizio da svolgere per il mio esame di programmazione. Non saprei da dove cominciare quindi se qualcuno può darmi una dritta ne sarei veramente grato
    Grazie.


    Corsa auto.
    Si vuole implementare un programma che simula la corsa di 3 auto su un percorso automobilistico rettangolare. Inizialmente ogni auto viene rifornita da 3 a 5 litri di benzina. Ogni macchina a turno può avanzare da 2 a 6 posizioni. La sequenza della macchine ad ogni turno viene scelta casualmente. Se una macchina si trova dietro ad un’altra e si trova in prossimità di una curva l’avanzamento delle posizioni viene scalato di uno. Inoltre, ad ogni giro le macchine perdono 1 litro di benzina. Quando la benzina è terminata si fermano per fare il rifornimento: da 3 a 5 litri di benzina e fermo un turno. Simulare una gara che si svolge su 20 giri, visualizzando le auto ad ogni turno e il relativo percorso.

    Vorrei sapere come strutturarlo, devo stampare un circuito rettangolare con 3 macchine e devo dargli della benzina in modo casuale con la rand. Inoltre devo sempre usare la srand per rendere automatica la scelta iniziale del seed della sequenza di numeri casuali.
    Grazie ancora ragazzi : )

  2. #2
    Che aiuto vorresti scusa? XD

    Boh provo a dire cosa farei:

    Chiamare le auto come int tipo (1,2,3) per semplificarti la vita;

    La pista è banalmente una "matrice" 3x5, 7x9 quello che vuoi.

    Devi indicare una casella come "via" (0,0???).

    Devi scrivere del codice che aumenti la posizione orrizzontalmente se è dentro l'array e se esce di scorrerlo verticalmente.

    Devi cancellare ogni volta la casella dove parte l'auto e scriverla nella casella dove arriva.

    Devi fare in modo che quando l'auto arrivi in una casella occupata non la sovrascriva, ma tenga conto delle due.

    E' un bel lavoro e penso che ti darà soddisfazioni una volta finito.

    Se hai bisogno in PARTI di codice che ti creano PROBLEMI, volentieri ti possiamo (credo) dare una mano. Per ora in bocca al lupo e buon lavoro!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    9
    Non è mica così semplice. Per me è molto complesso, no so nemmeno come iniziare a cosa dichiarare!
    La matrice là so fare, e pure dichiarare le macchinine, che stamperò con una "X"
    Non ne ho idea di cosa fare quando dici: "Devi scrivere del codice che aumenti la posizione orrizzontalmente se è dentro l'array e se esce di scorrerlo verticalmente."
    Grazie mille per l'aiuto : )

  4. #4
    Chiamare le tre macchinine "X" non è una buona idea XD, almeno direi un "X" "Y" "Z".

    Vuol dire tipo questo

    Hai trovato facendo la funzione randomica che n=5. Hai un array 5*7 e sei alla posizione 3,0. Se incrementassi semplicemente la x (il 3) di 5 caselle arriveresti alla 8,0 che chiaramente nel tuo array non esiste. Quindi dovresti fare una roba del tipo

    codice:
                   if(caselle+x<=limite)    /*dove x è la posizione in cui sei e limite è la lunghezza dell'array e caselle è di quanto devi spostarti*/
    Stessa cosa per il conteggio verticale.

    (chiaramente deve verificare la condizione solo se vuole muoversi orizzontalmente o verticalmente)

    Se questi due if non sono soddisfatti dovresti fare una roba del tipo

    codice:
    while(caselle>0)
    {
         if(x+1<=limite)      x++;
         else           y++;
    }
    stessa cosa per il verticale

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    9
    Ok, grazie mille : )!

    Dovrei cominciare con una cosa tipo questa quindi:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void visualizza_pista(char a[3][8]);
    int main(int argc, char *argv[])
    {
    
    	char profondita[3]={'|',' ','|'};
    	char pista[3][8]={
            {'_',' ',' ',' ',' ',' ',' ','_|'},
    		{'|',' ',' ',' ',' ',' ',' ','|'},
    		{'_',' ',' ',' ',' ',' ',' ','|'}};
    E' ancora uno schizzo ma diciamo che più o meno è così che deve essere, o no?

  6. #6
    Si certo questo è l'inizio della gara (avere la pista) Ora devi scrivere la gara

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    9
    Ho un problema, non riesco a far stampare il circuito, non me lo fa visualizzare, mi dà errori. Come posso visualizzarlo?

  8. #8
    Originariamente inviato da drezzu
    Ho un problema, non riesco a far stampare il circuito, non me lo fa visualizzare, mi dà errori. Come posso visualizzarlo?
    Scrivi il codice che hai scritto e l'errore che ti dà, così vediamo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    9
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void visualizza_pista(char a[3][8]);
    srand(0)
    rand()
    int main ()
    {
    	printf("char profondita[3]={'-','-','-'}");
    	printf("char pista[3][8]={{'|',' ',' ',' ',' ',' ',' ','|'},
    		   {'|',' ',' ',' ',' ',' ',' ','|'},
    		   {'|_',' ',' ',' ',' ',' ',' ','_|'}}");
    	int numero_casuale
    	numero_casuale=rand()%11;
    	char benzina;
    	int X, int Y, int Z
    	if ( ) {
    	<#statements#>
    }
    else {
    	<#statements#>
    
    }
    }
    Gli errori che mi dà sono questi:

  10. #10
    Originariamente inviato da drezzu
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void visualizza_pista(char a[3][8]);
    srand(0)                /*manca ; meglio scrivere srand(time(NULL));
    rand()                    /*manca ;*/
    int main ()
    {
    	printf("char profondita[3]={'-','-','-'}");
    	printf("char pista[3][8]={{'|',' ',' ',' ',' ',' ',' ','|'},
    		   {'|',' ',' ',' ',' ',' ',' ','|'},
    		   {'|_',' ',' ',' ',' ',' ',' ','_|'}}");
    	int numero_casuale             /*manca ;*/
    	numero_casuale=rand()%11;
    	char benzina;
    	int X, int Y, int Z            /*manca ;*/
    	if ( ) {
    	<#statements#>
    }
    else {
    	<#statements#>
    
    }
    }
    Gli errori che mi dà sono questi:

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 © 2025 vBulletin Solutions, Inc. All rights reserved.