Domande (e risposte) sull'HomeWork2




Anche in diagonale?

Salve Prof Sterbini, nel nostro programma un giocatore vince anche se mette 4 pedine in diagonale o solo in orizzontale e verticale? Grazie.

-- Comment added by FrancescoColanera on 28 Oct 2003


Output matrice

Salve prof, ma la matrice va stampata con tutti quei trattini (| | |....) oppure va bene solo con i numeri?? (ovviamente ordinati e con degli spazi tra loro). Se è il primo caso, come si fa la printf??? Grazie

-- Comment added by SimoneDAndreta on 28 Oct 2003


per SimoneDAndreta

la printf si fa

printf ("|%d|",griglia[i][j]);

tanto il carattere | "trattino", se messo tra apici, viene preso come prompt e non come comando.

-- Comment added by DanieleComandini on 28 Oct 2003


Controllo Board_Full

Per controllare se la scacchiera è piena dobbiamo fare una funzione particolare oppure basta che facciamo un controllo sulle pedine immesse? Le faccio questa domanda perché all'Homework1 lei nn voleva il controllo diretto sul log dell'intervallo per far fermare il programma Grazie.

-- Comment added by EmanuelePaterna on 28 Oct 2003


Ma con chi si gioca??

Salve prof..io non ho ben capito una cosa..ma il programma deve giocare contro un altro programma, oppure "sono io" entrambi i giocatori?nel senso..sono io che devo dare i due input o no?

-- Comment added by ValerioIannicca on 28 Oct 2003


Sempre per Simone

non prendere il mio suggerimento sul serio. A me da come output solo |1|. e uno soltanto. gli altri numeri se li scorda.

-- Comment added by DanieleComandini on 28 Oct 2003


Un mio errore

Per un mio errore la domanda di SimoneDAndreta era stata attribuita ad AndreaGiannantonio Ho rimesso ok le cose.. almeno spero.. scusate

-- Comment added by MatteoLaBella on 28 Oct 2003


Primo Prompt

Si deve stampare la matrice anche prima del primo input?

-- Comment added by EnricoMariaSantoro on 28 Oct 2003


Re: Anche in diagonale?

Certamente.

Re: Output matrice

Stampate la matrice esattamente come l'ho mostrata nell'esempio, con i trattini, la riga di 'meno' e i numeri che indicano qual'è il numero della colonna.

Re: per SimoneDAndreta

Vi ho detto di non dare suggerimenti di codice.

Re: Controllo Board_Full

Ci sono almeno 2 modi che mi vengono in mente, ma ce ne sono certamente altri.

Il logaritmo vi avevo chiesto di non usarlo perchè non è la funzione esatta che va usata (rileggiti il mio commento sull'argomento).

Re: Ma con chi si gioca??

Si gioca in due giocatori umani che si alternano, il programma 'implementa' la scacchiera e le pedine.

Re: Primo Prompt

Sì.

-- Comment added by AndreaSterbini on 28 Oct 2003


Segnaposto tipo Short

Qual è il segnaposto da mettere nella scanf per il tipo short? (Non so se è una domanda lecita)

-- Comment added by EmanuelePaterna on 28 Oct 2003


Segmentation fault

quando mando in output il mio programma (lo compila correttamente) chiede al giocatore 1 di inserire l'input. Dopo mi dice "Segmentation fault (core dumped)". Cosa significa???

-- Comment added by SimoneDAndreta on 28 Oct 2003


salve prof ma tra una riga e l'altra ci devo mettere una riga vuota? mi spiego meglio: quando la riga finisce e devo andare a capo, metto printf("\n"); oppure metto printf("\n\n");

Quale delle due ipotesi????????? perchè se metto un solo invio io non ci capisco nulla però se ne metto due magari può dare problemi con la correzione automatica.... mi dica lei

-- Comment added by AlessandraRizzuti on 28 Oct 2003


Qualche domanda:

1) Nel controllo dell'input, dobbiamo gestire i valori 'numerici' non corretti o anche un eventuale carattere o segno di punteggiatura?

2) Appena un giocatore vince o la partita termina patta, oltre a stampare la stringa relativa, terminiamo subito il programma o lo lasciamo in attesa in qualche modo? Visto che non ha specificato..

3) Possiamo dividere il programma in funzioni? Mi è venuto bello lunghetto.

Grazie.

-- Comment added by DaniloRossi on 28 Oct 2003


Re: Segnaposto tipo Short (per scanf)

Facendo man scanf si scopre che la sequenza di controllo per gli short è %hd.

Re: Segmentation fault

Hai fatto un accesso ad una zona di memoria sbagliata, ad esempio usando un puntatore o un riferimento errato. Ad esempio se ci si dimentica la & prima degli argomenti della scanf.

Re: Numero di accapi

Cercate di riprodurre l'esempio.

Re: Qualche domanda

  1. no, sarebbe troppo complicato
  2. terminiamo il programma (lo aggiungo subito)
  3. usate le funzioni, viene meglio

-- Comment added by AndreaSterbini on 28 Oct 2003


Funzioni?

Anch io ho fatto un programma con le funzioni, ma fanno come gli pare!!!

-- Comment added by MatteoLaBella on 29 Oct 2003


POCO TEMPO...HELPPPPP

secondo me 6 giorni sono pochini, visto che per il primo ese avevamo 2 settimane e in---+ lo pseudocodice da eseguire alla lettera , mentre per il forza 4 nn abbiamo ancora un idea sull'algoritmo da utilizzare!!!!

-- Comment added by LiberatoFarisco on 29 Oct 2003


Condivido

Sono d'accordo con il mio collega troppo poco tempo......

-- Comment added by Users.691942 on 29 Oct 2003


Troppo poco tempo

Scusi Prof ma non mi pare molto giusta la data di scadenza perchè: 1)Non si possono dare appena 6 giorni per un esercizio che potrebbe ancora cambiare (Lei dice esattamente:"Versione preliminare del testo dell'esercizio "). 2)Non si possono dare appena 6 giorni per implementare le funzioni giuste,visto che,almeno per il canale A-D,le funzioni sono state appena iniziate ieri 28 ottobre,e ci vuole un po' per capirne bene il funzionamento. 3)Non è logico,secondo me,dare 14 giorni per un esercizio semplice con pseudocodice come il primo,e appena 6 giorni per un esercizio---+ complicato come questo di forza 4.

Secondo me la data di consegna giusta per ogni esercizio che faremo è di 1 settimana e mezza (per esempio,se esce giovedì sera,la consegna va fatta entro le 24 di domenica della settimana seguente)!!

-- Comment added by DavidCordella on 29 Oct 2003


Tipo di matrice scusi prof ma per la griglia bisogn usare una matrice di caratteri?

-- Comment added by DiegoCammarano on 29 Oct 2003


Poco tempo

Effettivamente e' vero... poco tempo. Professore per quanto non ci siano particolari difficolta nelle strutture, bisogna fare i conti con le funzioni. Infatti per chi ha appena iniziato a vedere le funzioni, ed io sono uno di quelli, iniziano ad esserci alcuni problemini. Le funzioni sono molto importanti, soprattutto poi per le strutture dati che faremo in seguito. Quindi.... spostiamo? Grazie mille

-- Comment added by MatteoLaBella on 29 Oct 2003


COME FAR VENIRE LO SPAZIO?

Scusi prof. ma a me non riesce a far visualizzare lo spazio all'interno di una matrice di interi. Lo devo dare con un intero secondo la tabella del codice ASCII. C'è una funzione ben precisa che riesce a convertirla?

-- Comment added by DanieleComandini on 29 Oct 2003


ehm un problemino

io ho afferrato perfettamente che non devo chiedere aiuti sul codice, solo che non ho idea di come mettere gli spazi nella matrice.

giuro che lo ho visto e rivisto il libro ma non so proprio dove sbattere la testa! aiuto

-- Comment added by GabrieleTarantino on 29 Oct 2003


Re: per quanto riguarda gli spazi

Senza darvi aiuti, senò il prof s'incazza: provate a risolvere gli esercizi 3.34 e 4.16 del D&D. Non è una questione di vettori ma solo di strutture for e if/else.

-- Comment added by MarcoAmmirata on 29 Oct 2003


Sullo spazio..

Dovete mettere lo spazio lì dove la casella della matrice contiene uno 0...:)

-- Comment added by DavidVulpetti on 29 Oct 2003


Lo spazio

Scusate ma invece di lavorare con un tipo di dato intero perchè non lavorate con un altro tipo di dato?

-- Comment added by MatteoLaBella on 29 Oct 2003


Re: POCO TEMPO...HELPPPPP

Ho pubblicato il testo lunedì 27, fanno 9 giorni.

Ho accorciato i tempi perchè altrimenti la soluzione ve la devo mostrare dopo 3 settimane, e invece vorrei riuscire a fare esercizi (magari semplici come questi) ogni settimana.

PS ho scritto "versione preliminare" perchè è inevitabile che io chiarisca i vostri dubbi con piccoli aggiustamenti e chiarimenti del testo che non stravolgono il compito da svolgere. In genere se pensate che il compito sia radicalmente cambiato vuol dire che forse non lo avevate compreso completamente o io non mi ero spiegato abbastanza bene.

PPS chi svolge e consegna l'esercizio immediatamente è invitato a controllare la pagina dopo qualche giorno per propria tranquillità.

Re: funzioni

Potete anche non usare le funzioni ... nessuno vi obbliga.

Re: tipo di matrice

Non necessariamente (anche matrici di interi vanno bene).

Re: COME FAR VENIRE LO SPAZIO?

Un carattere si scrive tra apici semplici, per esempio: 'e'

Re: spazi

Se non ti disturba ti rispondo con 3 domande: Per stampare una stringa come fai? Cosa è una stringa? Cosa è uno spazio?

-- Comment added by AndreaSterbini on 29 Oct 2003


Errore nella compilazione

Compilando il programma mi viene questo errore:

warning:passing arg1 of 'stampa_tabella' makes pointer from integer without a cast.

Che significa?

-- Comment added by PaoloCoppi on 29 Oct 2003


input

quando dice "ogni input diverso dai numeri tra 0 e 6 è errato" per "input diverso dai numeri.." intende dire che l'input potrebbe essere anche una lettera o un carattere qualunque DIVERSO da un numero? o si rifersice solamente al fatto che l'input potrebbe essere 7 8 o 9?

adios ocram

-- Comment added by MarcoValerioBarbera on 29 Oct 2003


Re: Errore nella compilazione

Credo che tu abbia passato un intero (invece che il suo riferimento) al posto di un argomento dichiarato come puntatore. Forse hai dimenticato una &.

-- Comment added by AndreaSterbini on 29 Oct 2003


domanda sui trattini

se inserisco |%d| in stampa esce una cosa del genere:
             
invece dovrebbe venire
             
che faccio?

-- Comment added by GabrieleTarantino on 29 Oct 2003


che cosa brutta che è uscita fuori... vabè intendevo dire che nel primo caso escono doppi!

-- Comment added by GabrieleTarantino on 29 Oct 2003


Mossa Errata stampo la griglia?

Professore volevo sapere se quando c'è l'errore di Mossa Errata se dovevamo stampare la griglia e poi prendere l'input oppure stampare Mossa Errata, prendere input e basta?

-- Comment added by MatteoLaBella on 29 Oct 2003


Re:domanda sui trattini

printa |%d e poi alla fine aggiungi una colonna di | smile

-- Comment added by DavidVulpetti on 29 Oct 2003


Re:Mossa Errata Dato ke nel testo dell'esercizio c'è scritto "Se la colonna è già piena si stampa ESATTAMENTE la stringa "Mossa non valida" seguita da accapo e si richiede di nuovo l'input." Io l'ho considerato come l'errore di input errato, ovvero nn ristampo la griglia ma prendo solo l'input. Lo sto facendo senza funzioni e sta venendo un numero abominevole di righe di codice...però funziona smile

-- Comment added by DavidVulpetti on 29 Oct 2003


Re:Mossa Errata

avevo scordato il codice per creare il titolo, guarda qui su

-- Comment added by DavidVulpetti on 29 Oct 2003


Re: input

Nel test darò solo input interi. Non c'e' bisogno di gestire caratteri strani.

Re: Mossa errata

se si indica una colonna piena l'input è corretto ma la mossa non è eseguibile. Fate come ho detto.

Re: Mossa Errata stampo la griglia

Se la mossa è errata non c'e' bisogno di stampare la griglia (nessuna casella è cambiata).

-- Comment added by AndreaSterbini on 29 Oct 2003


Open Source !

Ho molto apprezzato il fatto che il professore abbia reso visibili tutte le soluzioni proposte per il primo esercizio in quanto il confronto con quello che fanno i colleghi credo sia molto utile.

Spero che la cosa si ripeta, ma in tal caso, affinchè il risultato sia il più proficuo possibile ricordo ad alcuni colleghi che indentare il codice e commentarlo non provoca il morbillo. smile

-- Comment added by EmanueleQuattrini on 29 Oct 2003


Correzione

Vorrei chiedere al prof. se ai fini della correzione il programma Forza4 funziona o non funziona oppure se c'è una gradazione. Esempio un programma che fa tutto bene ma non sa riconoscere se un giocatore ha vinto la partita come viene giudicato?

-- Comment added by EmanueleQuattrini on 29 Oct 2003


Re: Open Source !

Li pubblicherò tutti (dopo la consegna).

Re: Correzione

Per ora il test dei compiti è "a scatola nera", quindi un programma supera il test solo se tutto l'output è corretto.

-- Comment added by AndreaSterbini on 29 Oct 2003


Dimensione Input

Non sapendo che l'input era solo intero ho impostato un controllo su tutti i 256 caratteri ovviamente usando un carattere. questo comporta che inputare 6000 è come inputare 6. E' un problema? Ossia devo riscrivere il codice lasciando perdere caratteri alfabetici e prendendo in considerazinoe solo gli interi o va bene lo stesso cioè l'input è compreso tra -9 e---+9? Grazie

-- Comment added by AlessioDiMauro on 30 Oct 2003


Spazio

Come faccio a stamparelo spazio e non 32? Cioè io ho fatto un programmino che riempie la matrice con degli 0 e stampa tutta la griglia. Quando vado a sostituire lo 0 con ' ' mi stampa |32|.

-- Comment added by DaniloDauria on 30 Oct 2003


RE:Spazio

e tu stampa con printf("| ") invece ke (' '), e poi aggiungi una colonna di ("|") finali senno l'ultima resta diciamo aperta smile

-- Comment added by DavidVulpetti on 30 Oct 2003


Spazi

ehm allora io ho riempito la matrice con degli zeri quando faccio la printf e metto |%d al posto della d ci va il valore della matrice la colonna alla fine l'ho messa se non inizializzo la matrice mi stampa tutti i valori della variabile non inizializzata tipo 37814124 ecc La griglia viene cosi:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

-- Comment added by DaniloDauria on 30 Oct 2003


re: spazi

se stampi ' ' come decimale è normale che ti viene scritto 32 (ASCII) prova a stamparlo come carattere (%c) smile

-- Comment added by GabrieleTarantino on 30 Oct 2003


Matrice di interi ed input

Professore, ma nei test potra' esserci il caso in cui in input lei dara' un carattere diverso da un numero?

-- Comment added by EnricoMariaSantoro on 30 Oct 2003


Negli esercizi a meno ke il professore nn lo specifica, come in questo caso per quello ke riguarda input errato e mossa nn valida, nn credo ke dobbiamo considerare altri tipi di errori.

-- Comment added by DavidVulpetti on 30 Oct 2003


Re: Input

Nei test darò solo numeri. (non mi fate cambiare il testo ora!)

-- Comment added by AndreaSterbini on 30 Oct 2003


Warning:...

Facendo questo ciclo: for(i=6;i=0;i--) mi viene questo errore:

warning: suggest parentheses around assignment used as truth value

Qualcuno mi aiuta?

Thanks!!!

-- Comment added by PaoloCoppi on 30 Oct 2003


Re: Warning:...

Non fate caso alla domanda...vado a fare dieci min di penitenza per aver fatto una domanda del genere wink

-- Comment added by PaoloCoppi on 30 Oct 2003


Come minimo smile

-- Comment added by AndreaSterbini on 30 Oct 2003



Ancora una conferma sulla gestione degli input interi

ovviamente dare in input una sequenza di uno o più 0 seguita da un intero valido per la griglia equivale a dare in input l'ultima cifra.Anche questo è un modo di scrivere un input valido, ad esemmpio 00 equivale a 0, cosi come 0001 equivale a 1.Non bisogna come da testo dell'esercizio porre in atto nessun controllo sul formato in cui vengono dati gli interi vero ?

-- Comment added by LucaMarozzini on 30 Oct 2003


RE:Ancora una conferma sulla gestione degli input interi

nada smile credo di aver capito ke se il professore nn ci dice niente vuol dire ke nn dobbiamo porre controlli negli esercizi

-- Comment added by DavidVulpetti on 31 Oct 2003


Spazio dopo il prompt

Domanda: è corretto il prompt "Giocatore N:" o "Giocatore N: "?! ci va lo spazio dopo i due punti?

-- Comment added by MarcoMarinangeli on 31 Oct 2003


Re: Ancora una conferma sulla gestione degli input interi

Luca credo che se tu dai in input 001 ti da errore almeno il mio lo fa, comunque in caso non ti desse errore credo che ti prenda il primo numero dogotato come input e nn l'ultimo!!

-- Comment added by Users.691942 on 31 Oct 2003


Errore strano!

Allora ho strutturato il programma in funzioni, ho dichiarato prima del main il prototipo e tra () c'è il tipo di parametro. Sotto poi ho scritto la funzione e come parametro gli ho messo la matrice. Quando vado a chiamare la funzione nel main mi da questo errore "passing `int (*)[7]' to argument 1 of `stampaGriglia(int)' lacks a cast" che vuol dire?

-- Comment added by DaniloDauria on 31 Oct 2003


Prof, e' sbagliato chiamare una funzione che e' gia' stata chiamata a sua volta?

-- Comment added by FrancescoColanera on 31 Oct 2003


Funzioni?

Prof, e' sbagliato chiamare una funzione che e' gia' stata chiamata a sua volta? Chiedo perdono per la domanda precedente.

-- Comment added by FrancescoColanera on 31 Oct 2003


Re: Ancora una conferma sulla gestione degli input interi

Io daro' come input degli interi (ad esempio generati a caso). Voi dovete solo controllare che il valore sia corretto (tra 0 e 6).

Re: Spazio dopo il prompt

Ci vuole lo spazio.

Re: Errore strano!

Devi aver sbagliato a dichiarare o a chiamare la funzione. Prova a spostare le funzioni prima della funzione main. Se te lo rifa hai chiamato la funzione male.

Re: Funzioni

Una funzione la puoi chiamare quante volte vuoi (questa e' la loro forza!)

-- Comment added by AndreaSterbini on 31 Oct 2003


Allungamento dei termini di consegna

Ho notato che molti non sanno ne' le funzioni ne' le matrici. Vi do' 4 giorni in piu' per la consegna (domenica 9 notte). Il prossimo homework verra' pubblicato lo stesso giovedi' per darvi il tempo di cominciare a pensarci.

-- Comment added by AndreaSterbini on 31 Oct 2003


Errore

Prof. sto ricontrollando il programma ma non riesco a trovare l'errore. Caso mai potrei inviarglielo per e-mail? Grazie

-- Comment added by DaniloDauria on 31 Oct 2003


no

-- Comment added on 31 Oct 2003


controlloVittoria esce dalla matrice

professore secondo lei potrebbe dare problemi il fatto che la funzione che controlla se una pedina è "vincente" vada a controllare anche i valori immediatamente fuori dalla matrice?? cmq nn saranno mai 1 o 2...o sbaglio..?!

-- Comment added by MarcoMarinangeli on 31 Oct 2003


Versione + difficile dell'esercizio 2

In aula ho sentito ke dicevano ke il professore aveva aggiunto una versione---+ difficile nella quale dovevamo noi dare in input le righe, le colonne e con quanto si voleva vincere. Ora ke rileggo il testo veramente nn vedo nessuna aggiunta del genere...professore?

-- Comment added by DavidVulpetti on 31 Oct 2003


Errore

Io non so proprio come si può risolvere questo errore! frown passing `int (*)[7]' to argument 1 of `stampaGriglia(int)' lacks a cast Vi prego aiutatemi!

-- Comment added by DaniloDauria on 31 Oct 2003


Ancora sulla versione + difficile

Ci sto pensando su...l'inizio dell'esercizio è facile, ma poi mi sembra un po' troppo difficile. Una cosa è indovinare quando 4 pedine danno la vittoria...ma se si ha per esempio mille righe e mille colonne e si vince con 170 pedine attaccate come cavolo si fa...e poi come si stampano 1000 righe e 1000 colonne...cioè a stampare è facile ma viene una cosa gigantesca...siete sicuri ke il professore ha detto ke aggiunge una parte difficile?

-- Comment added by DavidVulpetti on 31 Oct 2003


Re: controlloVittoria esce dalla matrice

Secondo me crea problemi, in quanto in una locazione di memoria non inizializzata ci può essere di tutto, inoltre presumo che una funzione che controlla al di fuori della matrice cerchi anche in posizioni tipo martrice[-1][3] che mi sembra un pò strana come situazione. Chiedo cmq anch'io conferma al prof.

-- Comment added by EmanueleQuattrini on 31 Oct 2003


Versione più difficile

Secondo me sono solo voci di corridoio. Non credo che sia vero, anche perche il prof. ha aggiornato tutte le pagine (Es. Avvisi importanti) ma non dell' programmazione1.HomeWork2 , se avesse aggiunto qualcosa, sicuramente avrebbe modificato anche quella pagina., Cmq attendiamo conferma dal prof

-- Comment added by MatteoLaBella on 01 Nov 2003


Vers. difficile

Già, secondo me dicono così perkè si aspettano ke il professore dia una versione più difficile avendola data per l'Homework 1. In effetti nn saprei dove metterci le mani per quello ke riguarda la gestione della vittoria...

-- Comment added by DavidVulpetti on 01 Nov 2003


Funzione controllo

Scusi Prof ho un dubbio:ho creato una funzione specifica per il controllo del valore inserito (input errato e mossa non valida);è del tipo "controllo(&colonna,gioco[][colonna])", dove colonna è la colonna dove voglio mettere il numero 1(o 2), e gioco è la matrice.Siccome all'interno della funzione nel caso il controllo fosse positivo(cioè il valore inserito è errato o la mossa non è valida),faccio fare una scanf che richiede il valore (e voglio che la modifica avvenga nella variabile originale del main),dorò fare una chiamata per riferimento del valore colonna.Il problema nasce qui:se faccio la chiamata così "&colonna", quando nella intestazione della funzione uso la sintassi "gioco[][colonna]",dovrò scrivere [colonna],oppure [*colonna]???Me lo chiedo perchè lei ha detto che i vettori vengono automaticamente passati per riferimento già di default,quindi penso anche le matrici.Quindi com'è la sintassi giusta???Grazie.

-- Comment added by DavidCordella on 01 Nov 2003


:Funzione controllo(2)

E se usassi la variabile controllo sia per valore che per riferimento, in questo modo: controllo(&colonna,colonna,gioco[ ][colonna]),sarebbe giusto?Grazie.

-- Comment added by DavidCordella on 01 Nov 2003


Re: controlloVittoria esce dalla matrice

E' chiaro che è un errore. Se esci dalla matrice mi dici che significato ha il controllo?

Re: Versione + difficile dell'esercizio 2

C'era ma vi ho graziato. Se guardate il sorgente della pagina la scoprite smile .

Re: Errore

Stai passando alla funzione tutta la matrice invece che l'elemento. La definizione della funzione richiede un intero. Quindi o è sbagliata la definizione o la chiamata.

Re: Funzione controllo

Immagino che tu abbia definito la funzione così: controllo(int *colonna ...) . La variabile locale colonna è un puntatore ad un intero, se volete leggere o scrive quell'intero dovete scrivere
  • *colonna = valore (assegnazione)
  • variabile = *colonna (espressione che ne usa il valore)

Alla scanf basta che passi colonna, visto che è già un riferimento alla variabile intera.

-- Comment added by AndreaSterbini on 01 Nov 2003


Ho risolto

Praticamente nel prototipo della funzione dovevo scrivere int funzione(int[][valore]). Bisogna dirgli quante colonne ha la matrici, ha lezione avevo capito che dovevamo scrivero cosi solo nella funzione vera e propriia e non nel prototipo smile

-- Comment added by DaniloDauria on 01 Nov 2003


Matrice int o char?

La griglia deve essere fatta con una matrice int o char? Grazie.

-- Comment added by MaurizioTrano on 01 Nov 2003


Risposta a MaurizioTrano

Secondo me è indifferente usare una matrice di caratteri da una di interi sono tutte e due facilmente usabili basta che ti ricordi di mettere %c(char) e non %d(int) dentro la scanf e la printf. Capito ciò non dovresti avere problemi smile

-- Comment added by DarioFiorenza on 01 Nov 2003


comandi da aggiungere per la compilazione automatica

é necessario aggiungere comandi particolari (tipo setvbuf... come nel esercizio precedente) per far si che il programma venga compilato e funzioni nella correzione automatica? Grazie

-- Comment added by StefanoCocco on 01 Nov 2003


Prompt

Scusi Prof ma il prompt che Lei richiede è questo "Giocatore_N:_n" (indicando con la barretta uno spazio) o questo "Giocatore_N:n"???Grazie.

-- Comment added by DavidCordella on 01 Nov 2003


Re: Prompt

con lo spazio

-- Comment added by AndreaSterbini on 01 Nov 2003


Exit 0

Ma l'istruzione "exit 0" fà parte della libreria standard o no???Perchè compilando con Lcc32(per windows) ho aperto il file stdio.h, e non è presente.Ora provo sulla RedHat9...cmq leggevo da qualche parte che si usa exit(EXIT_SUCCESS)...chi mi illumina sul tutto???Grazie.

-- Comment added by DavidCordella on 01 Nov 2003


Re: Exit 0

hai provato mettendo "exit (0)"? a me funziona solo così..

-- Comment added by MarcoMarinangeli on 02 Nov 2003


Diagonale

Qualche suggerimento per iniziare a lavorare sulla diagonale? Il problema che trovo è il fatto che non so come dire al programma di controllare fino agli estremi.

-- Comment added by MatteoLaBella on 02 Nov 2003


sulla setvbuf

Prof, può confermare se è necessario chiamare la setvbuf nel programma come per l'esercizio precedente? C'era già il thread ma non è stata data risposta.

-- Comment added by DanieleBernardi on 02 Nov 2003


X MatteoLaBella

E' la cosa più semplice dire al programma di controllare fino agli estremi. Tu sai quante colonne e righe ci sono no? Fatti un disegnino e calcolati dove può starci una diagonale e dove per forza di cose nn può starci. A quel punto fai due cicli, uno per le colonne, uno per le righe, tenendo conto del tuo calcolo smile

-- Comment added by DavidVulpetti on 02 Nov 2003


Domanda stupida sulla griglia

Così, per sicurezza...per stampare la griglia uso il trattino verticale, quello ke si trova sopra lo slash accanto al numero 1 sopra il tab sulla tastiera. Dato ke quando stampa su cygwin in finestra "dos" appare una griglia fatta di trattini nn attaccati, cioè c'è un piccolissimo spazio nn tra un trattino e l'altro, ma proprio in mezzo ai trattini...è giusto il tasto ke ho usato?

-- Comment added by DavidVulpetti on 02 Nov 2003


Re: sulla setvbuf

Per stavolta non serve.

Re: X MatteoLaBella

Io invece controllerei solo 2 diagonali ... smile

Re: Domanda stupida sulla griglia

Il trattino verticale (pipe in Unix) in alcuni set di caratteri ha un buchino in mezzo. Nelle tastiere italiane è <shift>

-- Comment added by AndreaSterbini on 02 Nov 2003


Locazione del setvbuf

Mi scusi prof, ma ho un piccolo dubbio... Io dichiaro due costanti (int const) prima del main, in modo da averle globalmente. Il setvbuf dove lo devo mettere? Dopo quelle globali o sempre all'interno della main? E per quanto riguarda le funzioni lo devo mettere anche li?

-- Comment added by EmanuelePaterna on 02 Nov 2003


Lei controllerebbe solo 2 diagonali?

prof. Sterbini non riesco a capire cosa sta a significare il consiglio di controllare solo 2 delle (a me sembra) 12 diagonali del rettangolo che offrono la possibilità di vittoria

-- Comment added by AndreaDiTommaso on 02 Nov 2003


tutto risolto da me:)

grazie lo stesso era ovvio come al solito

-- Comment added by AndreaDiTommaso on 02 Nov 2003


Diagonale

Sinceramente ancora non riesco a capire come controllare le diagonali, mi mancano solo quelle frown speriamo che ci riesco :P

-- Comment added by DaniloDauria on 02 Nov 2003


Ancora diagonali

Volevo chiedere un altro aiutino. Quando devo fare il controllo in diagonale secondo voi, devo controllare tutte le diagonali, oppure solo quelle che vengono fuori dalla pedina immessa? Cioè se la pedina è immenssa nella coordinata 00 devo controllare solo la diagonale 12, 22 e cosi via, oppure mi conviene controllare tutte le diagonali anche quelle non interessate?

-- Comment added by MatteoLaBella on 02 Nov 2003


RE: Ancora diagonale

Secondo me solo quelle della pedina immessa

-- Comment added by DaniloDauria on 02 Nov 2003


Scambio File input e output

Salve professore, mi chiedevo se in una pagina specifica di twiki potremmo creare una sezione in cui noi inviamo i file di testo con degli input e output, in modo da testare il programma in svariati modi. Grazie

-- Comment added by MatteoLaBella on 02 Nov 2003


X DaniloDauria

Ho scritto poco più su come controllare le diagonali...nel reply al quale il professore ha replicato dicendo ke lui farebbe un controllo più semplice solo su due diagonali smile

-- Comment added by DavidVulpetti on 03 Nov 2003


Input errato

Se un giocatore invece di digitare 1 digita 01, il programma deve dare input errato oppure mettere la pedina nella colonna 1?

-- Comment added by PaoloCoppi on 03 Nov 2003


Re: Locazione del setvbuf

In questo esercizio non ve l'ho chiesto.

Va messa nella funzione main ovunque ma prima del primo output.

Re: Diagonale

Forza Danilo!

Re: Lei controllerebbe solo 2 diagonali?

Certo, le sole da controllare sono quelle 2 (tra le 12 possibili) che passano per la posizione appena giocata.

Re: Scambio File input e output

Poi non ce la faccio a controllarli ... non vi basta il mio esempio?

Re: Input errato

Io do' in input numeri interi a caso. (ad esempio 30,---+457, 2, -25)

-- Comment added by AndreaSterbini on 03 Nov 2003


Ancora su input errato

Prof forse mi sono spiegato male, ci riprovo:

Se un giocatore digita il numero 01, è giusto che la pedina venga messa nella colonna 1?

Oppure dovrebbe visualizzare la stringa "Input errato" e chiedere nuovamente di digitare un numero?

-- Comment added by PaoloCoppi on 03 Nov 2003


Curiosita'

Come si possono cambiare i colori dei nostri 1 e 2???????????????????? C'e' qualche funzione speciale in C???? Grazie

-- Comment added by Users.691942 on 03 Nov 2003


Re: Ancora su input errato

01 è un numero intero corretto.

Re: Curiosita'

Si fa con le sequenze di escape ANSI ... ma non fatelo senno' fallite i test.

-- Comment added by AndreaSterbini on 03 Nov 2003


SETBUF

Ehm..scusate ma credo di non aver capito..va messa o no questa riga? Il professore ha scritto poco sopra:

Re: Locazione del setvbuf In questo esercizio non ve l'ho chiesto. Va messa nella funzione main ovunque ma prima del primo output.

Mi ha confuso le idee..io ho consegnato l'esercizio giorni fa senza la setbuf..che devo fare? smile

-- Comment added by DaniloRossi on 03 Nov 2003


Re: SETBUF

  • Stavolta no
  • se ce la mettete (nel modo corretto) non fate danni

-- Comment added by AndreaSterbini on 03 Nov 2003


esercizi facili?

meno male che gli esercizi quest'anno erano più facili dell'anno scorso...

-- Comment added by SimoneSabbatini on 03 Nov 2003


Sempre diagonale :P

ma voi l'avete controllata con uno switch?

-- Comment added by DaniloDauria on 04 Nov 2003

No la ho controllata con un for.....

-- Comment added by Users.691942 on 03 Nov 2003


Re: Sempre diagonale

Si lo so che bisogna usare il for, io intendevo il case per vedere dove veniva inserita la pedina. Un altra cosa, è giussto o sbagliato, non dal punto di vista dell'esercizio ma in generale, usare un while per conrollare le colonne e le righe.

-- Comment added by DaniloDauria on 04 Nov 2003


Re: Re: Sempre diagonale

E' giusto se lo fai correttamente ... [Lapalisse dixit] smile

-- Comment added by AndreaSterbini on 04 Nov 2003


Precisazione sul testo dell'esercizio

Il testo dell'esercizio dice:

"Dopo ogni mossa il programma deve stampare lo stato della griglia.Non appena viene scoperta la presenza di 4 o più pedine allineate il programma deve stampare la situazione finale, la stringa "Ha vinto il giocatore N" ed uscire"

Il mio dubbio è questo:

Dopo aver fatto l'ultima mossa (cioè quella che fa vincere il giocatore N) il programma deve stampare per due volte lo stato della griglia?

-- Comment added by PaoloCoppi on 04 Nov 2003


re: diagonali

io ho usato un for...(anzi due) e poi un if che controlla il valore di tutte le diag. nel rettangolo! magari sono più cicli nn lo metto in dubbio ma è anche più facile da implementare no? invece di controllare le 2 che passano dall'ultima pedina le guardi tutte ogni volta!

-- Comment added by GabrieleTarantino on 04 Nov 2003


Controllo delle diagonali

Qualcuno ha implementato il modello del controllo sulle diagonali richiesto dal professore

-- Comment added by DarioFiorenza on 04 Nov 2003


Re: Precisazione sul testo dell'esercizio

No (guarda l'esempio di output)

Re: re: diagonali

Certo!

Re: Controllo delle diagonali

Io sì. (ma non te lo mando per email smile )

-- Comment added by AndreaSterbini on 04 Nov 2003


Caso particolare

Se una riga è composta in questo modo:

1 1   1 1 2 2

e il giocatore 1 piazza il segnalino fra le coppie di 1, se il programma assegna la vittoria solo se trova "esattamente" 4 segnalini in fila non assegnerà la vittoria al giocatore 1.

Quindi il programma deve assegnare la vittoria anche se trova più di 4 segnalini.

(Naturalmente tutto ciò dipende da come è stata implementata la funzione che assegna la vittoria).

(Anche sulle diagonali si può verificare un caso simile).

-- Comment added by EmanueleQuattrini on 04 Nov 2003


Professore ma nn corre un po' troppo?

Dà un esercizio giovedì questo e uno giovedì della prossima settimana. Per chi è la prima volta ke mette le mani sulla programmazione...nn le sembra di correre un po' troppo? Più ke altro per il fatto ke ki si scervella su un esercizio e, quando ancora nn l'ha finito, se ne vede pubblicare un altro, e poi un altro ecc...entra un po' in panico. Almeno assistendo alle lezioni in tutti e 3 i canali la mia sensazione è questa.

-- Comment added by DavidVulpetti on 05 Nov 2003


va bene lo stesso se la griglia la stampo ogni volta nello stesso punto invece di farla scorrere.e va bene se i gettoni 1 e 2 li coloro

-- Comment added by ManueleAbbruzzetti on 05 Nov 2003


Utilizzo variabili globali

Volevo sapere se è possibile utilizzare le variabili globali; io le ho utilizzate per i valori di riga, colonna e numero di pedine da mettere in fila per vincere, per l'eventuale inserimento da tastiera (anche se non è più richiesto).

-- Comment added by AndreaDOrazio on 05 Nov 2003


Re: Caso particolare

Ma che £"!%$%""%££"! di domande fai? Rileggiti il testo dell' HomeWork2 !

Re: Professore ma nn corre un po' troppo?

L'esercizio 4 è facile, avete già mezzo codice scritto.

Re: griglia che non scorre e gettoni coloreti

Se fai diversamente da come ho detto non ti passa i test.

Re: Utilizzo variabili globali

Va bene (anche se secondo me è così poco elegante da fare schifo frown ).

-- Comment added by AndreaSterbini on 05 Nov 2003


Re: Re: Caso particolare

Non era una domanda era una constatazione. Una funzione che conta il numero di segnalini, nel caso proposto, con un ciclo e fuori dal ciclo ha un'istruzione di questo tipo:

if(trovato==4) vittoria=true;

non compie il proprio dovere. L'utilità della segnalazione consisteva nel fatto che qualche collega avrebbe potuto controllare se la sua funzione, in questo caso, si comportava correttamente oppure no, come la mia prima che la correggessi.

-- Comment added by EmanueleQuattrini on 05 Nov 2003


Re: Re: Re: Caso particolare

OK smile

-- Comment added by AndreaSterbini on 05 Nov 2003


Variabili globali

io ho usato due variabili globali perchè non sono riuscito a passarle per riferimento :P cmq ancora non riesco a fa le diagonali :P

-- Comment added by DaniloDauria on 05 Nov 2003


Re: Variabili globali

Ne ottieni il riferimento tramite l'operatore '&' (come quando si usa la scanf)

-- Comment added by AndreaSterbini on 05 Nov 2003


Passare vettore a funzione

Volevo sapere come si fa a passare un vettore o matrice a una funzione se io infatti faccio main funz (vett[i][j]) fine main int funz (vett_passato[i][j]) mi da errore PERCHè

Magari è una domanda stupida ma vorrei un risp grazie!!!!

-- Comment added by Users.691942 on 05 Nov 2003


Re: Passare vettore a funzione

Passi un vettore usandone il semplice nome. Vedi Tris.

funzione(vettore[1][2]) passa l'elemento a coordinate 1,2

-- Comment added by AndreaSterbini on 05 Nov 2003


Ancora variabili globali

Io ho utilizzato le variabili globali per la skakkiera e anche per il giocatore. So che non sono eleganti, ma dopo aver perso 2 giorni e messo sul passaggio delle variabili tra funzioni mediante puntatori, e vedere sempre c.a 50 linee di errore sul terminale ho optato per queste.

-- Comment added by MatteoLaBella on 05 Nov 2003


Debug

Scusi professore ma non dovevamo fare una lezione sul Debug? Sarebbe utile organizzarci con il Video Proiettore, in questo modo possiamo realmente vedere come si fa...

-- Comment added by MatteoLaBella on 05 Nov 2003


Re: Ancora variabili globali

Come vedete basta chiedere ... avresti risparmiato 2 giorni smile

Re: Debug

Hai ragione, intanto prova a eseguire: (se il tuo file si chiama programma.c)
gcc -g -o programma programma.c
kdbg programma
Ti si apre la finestra del debugger col il sorgente del programma. Puoi inserire breakpoints (punti in cui l'esecuzione si deve fermare), eseguire le istruzioni un passo per volta e vedere il contenuto delle variabili.

PS devi aver installato i pacchetti kdbg e gdb

-- Comment added by AndreaSterbini on 05 Nov 2003


Esempio su TWiki

Professore cortesemente potrebbe mettere l'esempio che è presente sull HomeWork2 in formato txt. mi raccomando non il taglia e incolla da twiki, ma dal output del programma, naturalmente sempre se il programma è gia disponibile.

Per iniziare, prima dello 0 che indica la colonna c'è uno spazio? Grazie mille

Inoltre su una funzione ricorsiva del tipo :

int main
scanf ("%d\n",&colonna)
riga(colonna)



int riga (int colonna)
{
...........
............
..........
if (colonna ......)
{
   scanf("%d", &colonna) --> 1
   riga(colonna)
   printf("%d\n", colonna)  --> 2
   printf("%d\n",colonna)   --> 3
}
return colonna;
}
E' possibile che nella prima printf (2) mi stampa il valore preso nella scanf (1) e nella seconda printf (3) mi stampi il valore inizialmente preso, prima della chiamata ricorsiva? Sono stato chiaro lo spero!!!!!

-- Comment added by MatteoLaBella on 06 Nov 2003

Re: Esempio su TWiki

si c'è uno spazio prima dello zero se no non verrebbe allineato sotto la prima colonna
-- EnricoLiguori - 06 Nov 2003


Re: Esempio su TWiki

per copiare gli esempi basta cliccare sul link "Raw view" in basso e poi fare cut/paste

Mi sembra strano, hai provato a debuggare il programma seguendolo passo-passo con kdbg?

-- Comment added by AndreaSterbini on 06 Nov 2003


Suggerimento per il controllo della vittoria

Osservate che è necessario controllare solo le 2 diagonali, la riga e la colonna che passano per il punto in cui si è posata la pedina.

Suggerimento per le 4 pedine uguali

Osservate che se la pedina ha completato un gruppo da 4 pedine uguali le altre pedine si trovano, (lungo la diagonale/riga/colonna) "ai due lati della pedina"

-- Comment added by AndreaSterbini on 06 Nov 2003


Finalmente smile

Ho finito, so riuscito a fare anche le diagonali m'hanno dato il tormento per un po :P ma alla fine ce l'ho fatta. Cmq per fortuna che il debbugger gia lo sapevo usare, mi ha aiutato parecchio. Cmq il suggerimento per le 4 pedine uguali non l'ho capito o forse si boh.

Ah dimenticavo, anche io ho avuto problemi coi puntatori. Praticamente quando inserivo la prima pedina del giocatore 1 ad esempio la metteva in 5,0 la prima del giocatore 2 la mettevo in 5,1 la seconda del giocatore 1 gli davo come colonna la zero e invece di metterla in 4,0 la metteva in 0,0. Col debbugger non sono riuscito a vedere cosa succedeva perche al posto di x invece del valore mi usciva ( int) e un numero strano.

Ancora un altra cosa :P Rileggendo il testo c'era scritto che bisogna uscire dal programma. Per caso mi sono imbattuto in una domanda in cui si parlava di exit(0). Non basta che il main ritorni 0 per uscire dal programma? Bisogna usare qualche altro comando? Tnx!

-- Comment added by DaniloDauria on 06 Nov 2003


che diavolo è il debbugger?

Qualcuno me lo spieghi!

-- Comment added by MorenoDeVincenzi on 06 Nov 2003


Re: che diavolo è il debbugger?

Il debbugger ti permette di impostare di punti dove l'esecuzione del programma deve essere interrotta per poi essere rieseguita linea per linea in modo tale da poter controllare ad esempio il valore di una variabile oppure quante volte itera un ciclo ecc. Non so se ho detto bene o sono stato chiaro, spero si capisca smile

-- Comment added by DaniloDauria on 06 Nov 2003


Professore una domanda sulle funzioni di libreria.

Qual è la funzione che mi consente di pulire lo schermo e quale mi permette di spostare il prompt in una determinata posizione? In che librerie si trovano? Io conosco la clrscr() e la gotoxy(x,y) ma sul dev-cpp non me le riconosce.

-- Comment added by JacopoBusso on 06 Nov 2003


Debbugger?

Meglio dire debugger (rimovitore di bachi) smile

Re: uscire dal programma

Se usi return esci dalla funzione corrente. Se si tratta proprio della funzione 'main' allora esci anche dal programma.

Re: una domanda sulle funzioni di libreria.

Non lo fare altrimenti i test falliscono. (non te lo dico per evitare che qualcuno le usi e poi mi maledica smile )

-- Comment added by AndreaSterbini on 06 Nov 2003


Uscita

Si io il return 0 l'ho messo nel main, quindi è corretto uscire con il return 0 in questo caso.

-- Comment added by DaniloDauria on 06 Nov 2003


Re: Uscita

Esatto, nella funzione main le due istruzioni return(0) e exit(0) sono equivalenti (ma solo nel main).

-- Comment added by AndreaSterbini on 07 Nov 2003


incompatibilità? ma perkè?

ho completato il programma ke funziona correttamente su windows con il devcpp.. ma il gcc non lo compila a me sembra di non aver utilizzato nulla di particolare e non capisco... sapete indicarmi dei problemi frequenti riguardanti la compatibilità? (non cose avanzate perkè non le ho usate)

-- Comment added by AndreaDiTommaso on 07 Nov 2003


sapete perchè si dice BUG?

una sciccheria che ho sentito...

sembra che i bug si chiamino così perchè in uno dei primi calcolatori, grande quanto una stanza e con 1000 e 1000 schede stampate, l'errore fu causato da un insetto nei circuiti, da qui la parola "bug" per indicare un errore! eheheheh

-- Comment added by GabrieleTarantino on 08 Nov 2003


Formattazione del carattere |

Perkè cavolo l'esercizio mi presenta il carattere | come una linea verticale con un buchino in mezzo (invece ke essere continua) sia su Cygwin sia in ambiene windows? Professore l'altra volta ha risposto ke il carattere giusto sarebbe "shift"...nn ho capito cosa voleva dire...come faccio a far printare il carattere | senza buchino in mezzo?

-- Comment added by DavidVulpetti on 08 Nov 2003


disposizione pedine

come faccio a far scendere le pedine sulla base del forza4.Dopo che do la posizione per il giocatore 1 ,se voglio mettere la pedina del giocatore 2 su quella dell'1 mi da input errato e solo al secondo tentativo lo dispone in modo corretto,e cosi via per il resto dell'incolonnamento...come devo fare

-- Comment added by AndreaCaparrotta on 09 Nov 2003


Funzione che ne richiama un'altra

Prof ho un problema dell'ultim'ora:ho una funzione printarray ed un altra per il controllo della vittoria...quando all'interno della funzione vittoria richiamo la funzione printarray,ad esempio ..........printf("Ha vinto Giocatore 1") printarray(m[][7]), quando vado a compilare non mi riconosce la funzione,ma se gli metto davanti il void e all'interno della chiamata il tipo di dato usato (nel caso int m[][])me la riconosce,ma non la fa funzionare.... Qual'è il modo giusto di chiamare una funzione all'interno di un'altra funzione???

-- Comment added by DavidCordella on 09 Nov 2003


Non l'ho consegnato

Sapete xkè nn l'ho consegnato???perchè ieri sera fino alle 23.59 mi dava un errore assurdo nel controllo delle diagonali,allora non l'ho neanche spedito... ora mi accorgo che mi dava quell'errore xkè in una struttua do...while(),nel while avevo fatto un assegnamento invece di un'uguaglianza while(x=0)invece di while(x==0)...scusate sò che non ve ne potrebbe fregà de meno,ma stò avvelenato.

-- Comment added by DavidCordella on 10 Nov 2003


Re: sapete perchè si dice BUG?

... e se cerchi sulla rete trovi la foto della scheda e del bug!

Re: Formattazione del carattere '|'

Ma che stai dicendo! Non serve! Il carattere è sempre quello sia che il font lo mostri col buchino sia che lo mostri come una lineetta continua! (insomma ... don't panik smile )

Re: disposizione pedine

Basta(va) contare il numero di pedine presenti in ciascuna colonna.

Re: Funzione che ne richiama un'altra

La funzione va definita ad esempio così (la dimensione delle righe è necessaria sennò non compila):
  • void funzione(int M[][7])
e va chiamata scrivendo
  • funzione(M)

Re: Non l'ho consegnato

Mi dispiace ...

-- Comment added by AndreaSterbini on 10 Nov 2003


Re:Re:Funzione che ne richiama un altra

si lo so come si definisce e come si richiama...la mia domanda era come si richiama una funzione (ad esempio printarray) all'interno un altra funzione appena definita(ad esempio vittoria).

-- Comment added by DavidCordella on 10 Nov 2003


Re: Re:Re:Funzione che ne richiama un altra

Non ho capito la domanda. Una funzione la si chiama in un solo modo, scrivendone il nome seguito dalla lista degli argomenti.

-- Comment added by AndreaSterbini on 10 Nov 2003


Re:Re:Re:Re:

Mi spiego:io avevo la funzione int vittoria(int m[][7],int player)e la funzione void printarray(int m[][t]).Quando il fondo al mio file pippo.c creavo la funzione int vittoria,al suo interno ad un certo punto richiamavo la funzione printarray in questo modo: printarray(m[][7]).Però se la richiamavo così mi dava errore nella compilazione,se invece la richiamavo così:void printarray (int m[][]),allora non mi dava errore,ma non funzionava al momento della chiamata.Ecco il problema!

-- Comment added by DavidCordella on 11 Nov 2003


Cmq...

Cmq alla fine avevo risolto mettendo all'interno del programma in questo modo: if(vittoria(matrice, player)){printarray(gioco);ecc...},Cioè facendo return 1 alla funzione vittoria se c'era una vittoria,return 0 se non c'era!

-- Comment added by DavidCordella on 11 Nov 2003


Re: chiamare le funzioni

Secondo le tue definizioni la funzione printarray va chiamata scrivendo semplicemente:
  • printarray(m)
m[][7] non è nè un elemento di matrice nè una matrice, è una dichiarazione di matrice e si usa solo nelle dichiarazioni.

Se vuoi chiamare una funzione passando una matrice (per essere precisi, il riferimento al suo primo elemento) devi usare solo il nome della matrice.

Se invece vuoi passare un elemento devi dare tutti gli indici necessari ad individuarlo. Quindi ha senso scrivere m[3][5] per ottenere l'elemento a riga 3 e colonna 5 ma non ha senso scrivere m[][5].

Ripeto: m[][5] ha senso solo nelle dichiarazioni di tipo di un argomento o di una variabile.

-- Comment added by AndreaSterbini on 11 Nov 2003


MA I RISULTATI?

Prof, scusi eh! ma la curiosita` e` donna....

-- Comment added by ClaudiaCorsaletti on 13 Nov 2003


Re: MA I RISULTATI?

Escono questo finesettimana.

-- Comment added by AndreaSterbini on 13 Nov 2003


Test 2

Ho notato ke un po di persone hanno tutti i test SI tranne il secondo su NO. Il secondo test cosa fa in pratica?

-- Comment added by DavidVulpetti on 15 Nov 2003


Spero che...

riesca a trovare il tempo per controllare gli esercizi di coloro che non hanno passato neanche un test..... vorrei sapere cosa c'è che non va... grazie smile

-- Comment added by EnricoLiguori on 15 Nov 2003


Risultati Homework2

Ho scaricato i files di test, ma purtroppo non ho Linux per provare gli in-out. Ho però controllato gli input per i test 1-2-5 (ossia quelli che mi vengono indicati come errati nella pagina dei risultati)e mi producono gli output corrispondenti ai suoi, nel senso che il programma risponde allo stesso modo. Vorrei sapere, se possibile, dove ho commesso gli errori. P.S. Professore, mi scusi se le ho inviato anche l'e-mail, non ci avevo pensato a postarlo qui! Grazie smile

-- Comment added by DavideVitiello on 15 Nov 2003


???

Prof scusi, ma a me a casa il prog in compilazione non mi dava neanche un errore, come è possibile che adesso ne ho 16? L'unica cosa che mi viene in mente è che potrei averle mandato il prog sbagliato...sigh, sigh!

-- Comment added by ClaudiaCorsaletti on 15 Nov 2003


risultati dei test

ho ricontrollato il mio programma "forza4" con i test scaricati e ho notato che a parte il test 0, i restanti 1, 2, 3, 4, 5 hanno lo stesso output del prof! volevo quindi sapere perchè lei mi ha messo tutti NO. ricontrolla per favore? grazie

-- Comment added by MassimilianoCerio on 15 Nov 2003


Test 1.in

Mi sembra che il mio prog. funzioni correttamente anche con gli input del test 1.in

Ho notato che questo test si differenzia dagli altri in quanto richiede che il prog. risponda "Mossa non valida" per più di una volta di seguito, ma mi pare che il mio prog. gestisca correttamente la situazione.

-- Comment added by EmanueleQuattrini on 15 Nov 2003


Test 4

Ricontrollando l'output da lei fornito del test in oggetto ho rilevato che esso coincide con quello prodotto dal mio prog. Perchè le risulta il contrario?

-- Comment added by RobertoRichichi on 15 Nov 2003


come provo i file di test?

come posso provare il mio programma con i file da lei inseriti non avendo linux? anche io sarei grato al professore se ricontrollasse il mio programma visto che l'ho provato parecchio e mi e' sembrato funzionare tutto alla grande..

-- Comment added by MarcoRuffelli on 15 Nov 2003


provati file di test...

sono riuscito ad aprire il primo file di test e a provarlo da tastiera... confrontato con l'output risulta uguale ora mi chiedo dove sia l'errore una cosa che ho notato se puo' essere rilevante e' che sull'output dei file di test quando stampa "mossa non valida" o "input errato" li stampa dopo il nome del giocatore senza accapo come invece riportato nell'esempio di presentazione dell'esercizio...

-- Comment added by MarcoRuffelli on 15 Nov 2003


Io linux sul pc ce l'ho ho la mandrake 9.qualcosa :P solo che non lo so usare, dove posso trovare una procedura che mi spieghi come testare il mio programma?

Premetto che io linux non l'ho mai proprio visto non sono riuscito nemmeno a leggere un cd :P

-- Comment added by DaniloDauria on 15 Nov 2003


Re: per favore controlli i test

Controllerò i test di nuovo.

Re: ho installato linux ieri

Usa cygwin.

-- Comment added by AndreaSterbini on 15 Nov 2003


Ho trovato l'errore frown

Ho trovato l'errore che fa fallire il mio test 1.in
Pubblico l'errore tante volte qualcuno avesse fatto una cosa simile e anche
perchè magari il prof. si commuove e da una ritoccatina alla if incriminata.

Nota: 
1- la variabile "in" contiene l'input del giocatore
2- l'indice di riga 0 è quello della prima riga in alto
3- all'inizio dell'esecuzione la matrice è tutta inizializzata a 0
      
      /* Controlla che la giocata sia valida */
      if(in>=0 && tb[0][in]!=0)
      {
         printf("Mossa non valida\n");
         bad=1;
         break;
      }
      if(in<0 || in>6)
      {
         printf("Input errato\n");
         bad=1;
         break;
      }

In questo modo se per qualsiasi motivo tb[0][in>=7]!=0 il mio prog. 
stampa "Mossa non valida" invece di "Input non valido". 
Bastava scrivere la if in questo modo per evitare qualsiasi problema:

if(in>=0 && tb[0][in]!=0 && in<=6)

Meno male che questo errore non ha creato problemi negli altri test.

-- Comment added by EmanueleQuattrini on 15 Nov 2003


Ancora su risultati Homework 2

Anche ora che lei ha pubblicato i files con le differenze, non riesco a trovare(o capire) gli errori. Mi interesserebbe conoscerli per non commetterli ancora. Grazie

-- Comment added by DavideVitiello on 16 Nov 2003


Come interpretare i risultati e i file delle differenze

Guardando i risultati si vede che
  • alcuni passano solo alcuni test ma non tutti
    • o perchè hanno sbagliato a scrivere un messaggio che si presenta solo in quei test
    • o perchè non hanno implementato correttamente uno dei controlli di diagonale/riga/colonna vincente e questo è capitato solo in quei test
  • alcuni non passano nessun test
    • perchè sbagliano i messaggi o il formato dell'output
    • perchè sbagliano sempre il controllo di vittoria

Se poi guardate i file delle differenze linkati alle risposte NO ( cool! ) vedrete che:

  • alcuni mostrano minime differenze dovute ad errori del formato dei messaggi
    • mi dispiace, lo so che vi fa incavolare, ma faceva parte dell'esercizio anche il seguire con cura il formato dell'output specificato.
  • altri mostrano un pezzo di gioco mancante (che c'e' nel mio file ma non nel vostro) oppure di troppo (viceversa)
    • questo indica che c'e' un errore nel controllo della vittoria

-- Comment added by AndreaSterbini on 16 Nov 2003


perchè?

Prof per quale motivo la variabile booleana, a me, non dava nessun errore in compilazione?

-- Comment added by ClaudiaCorsaletti on 16 Nov 2003


considerazioni...

"prof ha scritto: alcuni mostrano minime differenze dovute ad errori del formato dei messaggi mi dispiace, lo so che vi fa incavolare, ma faceva parte dell'esercizio anche il seguire con cura il formato dell'output specificato."

Credo di appartenere a questa categoria, ma ancora non riesco a capire dove e' l'errore di formattazione.

Dopo ore ed ore di controlli mi sembra di aver capito che l'errore sta nel non aver lasciato uno spazio dopo i due punti (spazio che d'altra parte non era rimarcato in nessun punto che dovesse essre lasciato).(Spero sia cosi'!!!).

"prof ha scritto: /programma < N.in > output

* o confrontare il vostro output col mio ( N.out ) o il test passa se (a parte gli spazi) i due file degli output sono uguali"

Ma allora lo spazio e' un errore o no ????

Se cosi' fosse mi sento moralmente riuscito a completare correttamente l'esercizio, anche se non ritengo giusto considerare alla stessa stregua un esercizio che funzionalmente non e' corretto con uno che non ha riportato una stringa di caratteri di presentazione non perfettamete uguale. Ho visto anche altri esercizi di altri colleghi ed in uno l'unico errore in tutti i test e' stato quello di scrivere, in caso di vittoria, giocatore con la G maiuscola invece di minuscola.. parola giocatore che in altri casi e' scritta in minuscolo. Ora ho il terrore di presentare il 3 esercizio che ho gia' terminato perche' ho paura di aver lasciato uno spazio un CR o chiassa' che cosa in piu' o in meno.

Certo che come incoraggiamento quasto e' il massimo!!!!!.

-- Comment added by MarcoRuffelli on 16 Nov 2003


Superficialita' e fretta cattive consigliere che non siete altro :P

Beh lo ammetto stavolta 1 a 0 per loro frown nella fretta ho ignorato che il mio programma pur funzionante non aveva posto le "barriere" al conteggio di sequenze vincenti per input fuori dai limiti fisici della griglia (0 e 6) per intenderci. Nello specifico si e' vero che per input errati la cosa viene segnalata, ma una mia dimenticanza fa si che venga cmq fatto il conteggio della stringa vincente quindi vincita segnalata anche nel caso 3 pedine in 4 5 e 6 ed una in 7 sgrunt.

Vabbe mi sara' di lezione e staro' piu' attenta sulle condizioni, per i prossimi lavori. Volevo cmq chiedere qto pesa questo errore e in quali termini (sempre che si sottintenda una discussione all'esame degli esercizi consegnati e non un semplice "test passato", "test non passato"...

Grazie

-- Comment added by LuisaDiDionisio on 16 Nov 2003


Re: considerazioni...

OK, accetto i commenti. Rifarò i test di questi 2 esercizi ignorando gli spazi e la differenza tra maiuscole e minuscole.

Chi otterrà risultati diversi da quanto già calcolato verrà penalizzato per l'errore del formato di output.

Chi ha fatto errori di battitura si rassegni smile .

Questa però è l'ultima volta, i prossimi esercizi dovranno scrivere ESATTAMENTE (vi ricorda nulla, questa parola?) quello che è specificato.

-- Comment added by AndreaSterbini on 16 Nov 2003


Re: perchè?

Credo che tu stia usando un compilatore C che accetta il tipo bool. (gcc non lo fa).

Non lo considero un errore, in questo caso io aggiungo le tre righe che seguono e riprovo.

#define bool int
#define true 1
#define false 0

-- Comment added by AndreaSterbini on 16 Nov 2003


non capisco una cosa!

Se non considera un errore usare una variabile booleana, allora perchè secondo il suo compilatore il mio compito non è giusto mentre secondo il mio fila tutto giusto? io cmq uso il compilatore "Dev-C---++".

-- Comment added by ClaudiaCorsaletti on 16 Nov 2003


Errore trovato

Ho trovato l'errore, ho stampato una new line di troppo nel caso di "Mossa errata" ecco perchè non passa solo i test in cui viene messa una pedina su una colonna piena frown

-- Comment added by AlessioDiMauro on 16 Nov 2003


Informazione su chi fa l'Esame con TRONCI

Attenti ragazzi, anche i programmi per l'esame con Prof. Tronci saranno corretti automaticamente, quindi attenzione alla formattazione. E' molto importante anche uno spazio, un tab, un punto, virgola etc, anche maiuscole e minuscole,diversi dal SUO output, fanno saltare il test, e quindi punti. Ciao Ciao

-- Comment added by MatteoLaBella on 16 Nov 2003


Risultati

Boh io ho riprovato per adesso soltanto il test 0.in inserendo tutti i numeri a mano e poi ricontrollando l'output con quello del prof e scoprendo che è identico, ho visto che ci sono dei link dove c'è scritto no e c'è l'outupt ma lo leggo tutto spezzato e formattato male.

-- Comment added by DaniloDauria on 16 Nov 2003


Re: Risultati

Danilo mi dispiace, ma c'è un errore di stringa. Tu scrivi: Mossa Errata quando il prof voleva Mossa errata , cioè il test non passa perche tu hai scritto con la E maiuscola quando l'output del programma del prof era con la minuscola. Ho controllato e questo vale per i test che hanno fallito. -- Comment added by MatteoLaBella on 16 Nov 2003


Re:Risultati

Cioè soltanto perche scrivo Input Errato invece di errato? frown c**** ce so stato 3 gg di fila sul quel prog frown

-- Comment added by DaniloDauria on 16 Nov 2003


Re: non capisco una cosa!

Il compilatore di riferimento per i nostri esercizi è il gcc, che ti piaccia o no.

Il tipo 'bool' è deprecato, DevC---++ lo riconosce e gcc no.

Io non lo considero un errore.

-- Comment added by AndreaSterbini on 16 Nov 2003


Rosiko

Quella E era l'utlima cosa a cui pensavo frown vabbe servira da lezione

-- Comment added by DaniloDauria on 17 Nov 2003


Formato errato

Mi spiega questo formato errato:
- 0 1 2 3 4 5 6
---+ 0 1 2 3 4 5 6
che credo scaturisca da
printf(" 0 1 2 3 4 5 6 \n");
printf(" 0 1 2 3 4 5 6\n");
aggiungendo anche il motivo per cui per favorire, giustamente, chi ha sbagliato una maiuscola con una minuscola e simili, io ora mi ritrovo con un errore di formato per un'innocente spazietto che non aveva creato problemi nei test precedenti.

-- Comment added by EmanueleQuattrini on 17 Nov 2003


Tutti i test falliti

Scusi,prof,ho testato il mio programma sotto linux provando tutte le combinazioni possibili e funzionava ,ora non capisco perche sono falliti tutti i test,potrebbe farmi capire dove ho sbagliato,grazie

-- Comment added by DiegoCammarano on 17 Nov 2003


Re: Formato errato

E hai il coraggio di lamentarti? smile

Pensa a chi ha inserito un ':' di troppo o ha sbagliato a scrivere che ti direbbe!

Re: Tutti i test falliti

-_______________
---+---------------
Hai usato la lineetta bassa invece che il carattere '-' (meno)

-- Comment added by AndreaSterbini on 17 Nov 2003


Chiarimento

Scusi ma quindi l'esercizio viene valutato corretto o meno??? anche perche io mi sono rifatto all'esempio di output dell'esercizio

-- Comment added by DiegoCammarano on 17 Nov 2003


Re: Chiarimento

E ti sei rifatto male, perchè lì ho usato il carattere '-' (meno)

-- Comment added by AndreaSterbini on 17 Nov 2003


Quello delle considerazioni

Mi spiace di averle procurato un lavoro straordinario...che purtroppo a me non e' servito (forse mi ringrazieranno i colleghi e forse come ho visto qualcuno mi maledira'). Ma il mio errore persiste ed almeno devo riuscire a capire dove ho sbagliato. In compenso sono riuscito ad installare linux ed ho potuto provare i files di input ed output. La prova del resto riporta quello che gia' era mostrato nella correzione. Nel momento in cui viene proposto il prompt Giocatore N:(senza accapo) Nel mio output viene scritto Giocatore N: e poi viene presentata la griglia correttamente. Da un punto di vista estetico sembra essere tutto perfetto perche' io vedo Giocatore N:

             

La versione corretta invece era Giocatore N: | | | | | | | | anche se da un punto di vista di presentazione sembra errata.

Ora credo che l'errore sia in questa differanza di codici:

corretto int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) {printf("\n"); for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

errato (il mio caso)

int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) {printf("\n"); for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

dal punto di vista dell'output non vi e' alcuna differenza a video vedo le stesse cose non posso accorgermi dell'errore ed inoltre e' simile all'esempio, ma dal punto di vista della correzione in realta' viene immesso un "\n" prima di iniziare a stampare la griglia.

Non so se sono stato chiaro ma credo che questo sia il mio errore.

Potrebbe gentilmente darmi una conferma? E mi scusi ancora per lo straordinario.

-- Comment added by MarcoRuffelli on 17 Nov 2003


Errore

Scivo di nuovo i codici ho sbagliato il copia /incolla

int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) {printf("\n"); for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

giusto

int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) {for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|"); printf("\n");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

-- Comment added by MarcoRuffelli on 17 Nov 2003


Errore

scrivo di nuovo il codice c'e' stato un errore di copia/incolla

errato int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) {printf("\n"); for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

giusto

int stampa (char array [6][7]) {

int i, j; for (i=0;i<6;i---++) { for (j=0; j<7;j---++) printf("|%c",array[i][j]); printf("|"); printf("\n");} printf ("\n---------------\n"); printf (" 0 1 2 3 4 5 6 \n"); return 0; }

-- Comment added by MarcoRuffelli on 17 Nov 2003


Re: Quello delle considerazioni

Hai scritto "forse come ho visto qualcuno mi maledirà" forse in riferimento al mio intervento intitolato Formato errato.

Esagerato, figurati se mi arrabbio o maledico qualcuno per una cosa del genere! smile

-- Comment added by EmanueleQuattrini on 17 Nov 2003


Re: errore

La differenza è che c'e' un accapo in più.

Nell'esempio di input/output l'accapo che si vede subito dopo l'inserimento del numero è l'echo dell'accapo che batti nell'input, per cui la prima riga della tabella la vedi accapo ma se guardi il file output la vedi di seguito al messaggio Giocatore N:. Se ci fai caso, giocando la tua versione dovrebbe apparire diversa dall'esempio di input/output, infatti o hai una riga vuota in più oppure il numero viene inserito a capo.

Basta lamentele, plis

Ora per favore smettete di reclamare per i vostri errori di formato, avevo scritto di seguire ESATTAMENTE le specifiche e vi avevo dato un esempio chiarissimo. Non sapevate che i programmi vengono testati automaticamente? Pensate che il mio PC sia più intelligente di voi smile ?

Tra l'altro devo finire di implementare Pacman e Formula1 entro giovedì per darvi gli esempi di input/output smile .

-- Comment added by AndreaSterbini on 17 Nov 2003

No such template def TMPL:DEF{PROMPT:before}

<tre spazi>---+++<spazio>Titolo della domanda   "non dovete mettere <>" 
Testo della domanda


This topic: Programmazione1/AA0506/PZ > 
RisultatiHomework2 > DomandeHomework2
Topic revision: r191 - 2003-11-17 - AndreaSterbini
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback