Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema per un progetto C
Forum - C/C++ - Problema per un progetto C - Pagina 5

Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo
Avatar
nonticonosco (Normal User)
Newbie


Messaggi: 14
Iscritto: 02/03/2017

Segnala al moderatore
Postato alle 16:24
Sabato, 04/03/2017
dello switch ne ho tenuto conto e vorrei utilizzarlo qui e si sono le coordinate x ed y delle "auto" ma no non so come usarle per creare lo spostamento visto che i tentativi che ho fatto portavano alla scrittura di un altro numero

la rand l'ho corretta con 30+1 e la x anche perchè il primo valore doveva essere 0

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:35
Sabato, 04/03/2017
Ti do una possibile soluzione:

Auto1_x = 0
Auto1_y = 3

Se ti sposti in basso aumenti di 1 la coordinata x (l'auto è quella al centro nella parte superiore)

Auto1_x = Auto1_x + 1

Avrai quindi

Auto1_x = 1
Auto1_y = 3

Controlli se esci dalla griglia (0<coordinate<7) o se ci sono altre auto (le confronti con le altre coordinate)
Poi "sovrascrivi" la griglia alle coordinate




griglia[Auto1_x][Auto1_y] = "Auto1"

Attento a non scordarti di  azzerare pure la vecchia posizione di Auto1

p.s. non sto postando codice perchè e' bene che provi da solo a crearlo. Le indicazioni ci sono tutte.




Ultima modifica effettuata da il 04/03/2017 alle 16:37
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:52
Sabato, 04/03/2017
:ot: Cerchiamo di rimanere (per quanto sia possibile) intorno al tema originale della discussione...

nonticonosco ha bisogno di aiuto per scrivere il programma completo, questo l'abbiamo capito. Mancano le basi, sono d'accordo. Non consiglio di pubblicare la soluzione completa, piu' che altro perche' non sarebbe d'aiuto per l'apprendimento. Ma cerchiamo di rimanere cordiali...


Il mio blog: https://piero.dev
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:55
Sabato, 04/03/2017
Cordiali sempre, ma anche sinceri e realisti. Non bisogna dire cose false ma sempre cose vere, spero tu sia d'accordo.

Ed è vero che questo thread, senza codice pronto, durerà 1200 post ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 22:56
Sabato, 04/03/2017
Porca miseria, e io che ho il "codice pronto"! E' ben vero che è codice "alla mia maniera" (le solite robe da amatore autodidatta), però funziona. Se Nonticonosco mi somiglia anche solo un poco, a mio avviso potrebbe servirgli qualcosa vedere una soluzione -- io ho imparato quel poco che so proprio guardando e modificando, inizialmente, il codice altrui. Da come è partito non credo che sia sua intenzione fare il classico copia-e-incolla.

il main() l'ho impostato così:

Codice sorgente - presumibilmente C++

  1. #define W_GRL       8 // larghezza della griglia, modificabile
  2. #define H_GRL       8 // altezza della griglia, modificabile
  3. #define TOT_AUTO    4 // quantita' d'auto presenti nella griglia (non superare
  4.                       // le 127 auto; se si modifica questa costante occorre
  5.                       // anche modificare la funzione direzione_casuale())
  6.  
  7. typedef struct COO {
  8.     int x;
  9.     int y;
  10. } COO;
  11.  
  12. int main() {
  13.     COO coo[TOT_AUTO];  // un array con le coordinate di ogni auto
  14.  
  15.     // la griglia entro la quale si muovono le auto
  16.     char mGr[H_GRL*W_GRL]; // lo spazio in memoria dove
  17.                            // risiede "fisicamente" la griglia
  18.     char *gr[H_GRL]; // puntatori alle righe della griglia
  19.  
  20.     inizializza_griglia( mGr, gr, H_GRL, W_GRL );
  21.     inizializza_posizionamento_auto( gr, H_GRL, W_GRL, TOT_AUTO );
  22.     trova_coordinate( gr, H_GRL, W_GRL, coo );
  23.  
  24.     srand( time(NULL) );
  25.  
  26.     do {
  27.         visualizza_tutto( gr, H_GRL, W_GRL, coo, TOT_AUTO );
  28.         attendi_invio( NULL );
  29.         sposta_auto( gr, H_GRL, W_GRL, coo, TOT_AUTO );
  30.     } while( !controlla_collisioni(coo,TOT_AUTO) );
  31.  
  32.     visualizza_tutto( gr, H_GRL, W_GRL, coo, TOT_AUTO );
  33.     attendi_invio( "\aCollisione!\nPremi \"invio\" per uscire" );
  34.  
  35.     return 0;
  36. }



- inizializza_griglia() azzera la memoria puntata da mGr (memoria per la griglia) e imposta i puntatori alle righe in gr (griglia).
- inizializza_posizionamento_auto() colloca le auto nella griglia nella loro posizione iniziale, ovvero a spirale al centro dei quattro lati a partire da quello superiore. Ogni auto e' indicata da un numero progressivo da 1 in su, utilizzabile come indice (NON zero based!) per individuarla in caso di necessita'.
- trova_coordinate() "legge" le posizioni delle auto nella griglia e le immette nell'array coo.
- visualizza_tutto() svuota la console, eliminandone il testo correntemente presente, quindi traccia la griglia, seguita da un elenco delle coordinate di ciascuna delle auto in essa presenti.
- attendi_invio() non fa altro che simulare il classico system("pause") ma con la possibilità di visualizzare un testo personalizzato.
- sposta_auto() gestisce il movimento delle auto nell'ambito della griglia, gestendo con funzioni ausiliarie (qui non rappresentate perché chiamate da sposta_auto() stessa) la gestione delle direzioni casuali "percentualizzate" e i controlli necessari per non uscire dai limiti.
- controlla_collisioni() verifica che non ci siano "sovrapposizioni" tra più auto; se rileva sovrapposizioni provoca l'uscita dal ciclo restituendo 1.

SU RICHIESTA, e se non ci sono rimostranze da parte dei moderatori, non ho problemi a postare il codice completo. Che, per inciso, includendo i commenti è qualcosa come 383 righe. Ora, io non sono certo un esperto, anzi... però, ripensando alle prime cose che facevo, il compito non mi è sembrato proprio "da principiante". Sicuramente ci sono vie più razionali e sintetiche per risolvere il problema.


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:20
Sabato, 04/03/2017
Per me non c'e' problema, mi chiedo solamente se sia piu' utile per scopi didattici fornire la soluzione completa, invece che aiutare la persona a ragionare sulla costruzione dello programma passo per passo...

Ultima modifica effettuata da pierotofy il 04/03/2017 alle 23:21


Il mio blog: https://piero.dev
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 6:38
Domenica, 05/03/2017
CVD ... come ti preannunciavo, ecco la pappa pronta...

No Piero, la disposta è no. Quando lui andrà a fare la prova orale, il professore si accorgerà con due domande e cinque minuti cbe non è roba sua. Per esempio gli chiederà di spiegare in dettaglio tutte le funzioni e lui cadrà dalle nuvole. Bisogna rendersi conto che il copia incolla, la pappa pronta non va bene per gli studenti.

Quello che mi chiedo io poi è perché si neghi a qualcuno e si dia ad altri.

Da ora in poi, dato che la regola è cambiata, a chiunque chiederà, fornirò il codice completo e pronto.

Ultima modifica effettuata da nessuno il 05/03/2017 alle 6:53


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 9:07
Domenica, 05/03/2017
Una via al'apprendimento può essere anche di questo tipo:

1. ti viene fornito un codice che da solo non riesci a realizzare
2. lo analizzi
3. poi fai domande sugli eventuali punti "oscuri"

In definitiva, nei testi funziona così: prima la spiegazione teorica, poi l'esempio, poi il commento all'esempio.

Ovviamente sta a chi studia trarre vantaggio da quel che ha davanti, usando al meglio gli strumenti ed evitando le stupide scorciatoie tipo "copio il compito senza neppure guardarlo, così posso andare in disco a farmi di extasi fino alle sei di mattina". Del resto, chi segue scorciatoie stupide cade agli esami perché, oltre che impreparato, agli esami ci arriva pure "bollito". Peggio per lui/lei, no? In particolare quando, come in questo caso, si parla di adulti.

Nessuno scrive: "Quello che mi chiedo io poi è perché si neghi a qualcuno e si dia ad altri."

Questa domanda, per parte mia, ha una risposta facile facile: in questo campo sono più le cose che non so fare che quelle che so fare. Altre volte semplicemente non ho tempo. Ora, per disgrazia, ho parecchio tempo "obbligato" tra un pannolone e l'altro e se non trovo qualcosa per occuparlo come posso esco pazzo. Non so quando si risolverà la questione.

Ultima modifica effettuata da AldoBaldo il 05/03/2017 alle 9:11


ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
PM Quote
Pagine: [ 1 2 3 4 5 6 ] Precedente | Prossimo