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
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.
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
- no, sarebbe troppo complicato
- terminiamo il programma (lo aggiungo subito)
- 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 |
-- 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
-- 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.
-- 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
-- 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)
-- 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
-- Comment added by
PaoloCoppi on 30 Oct 2003
Come minimo
-- 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

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!

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

.
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
-- 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
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
-- 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
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
-- 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.
Io invece controllerei solo 2 diagonali ...
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

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
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
-- 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?
-- 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]
-- 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

)
-- Comment added by
AndreaSterbini on 04 Nov 2003
Caso particolare
Se una riga è composta in questo modo:
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

).
-- 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
-- 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
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
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
-- 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)
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

)
-- 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 
)
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
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:
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
-- 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
-- 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
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 (

) 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

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

.
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
-- 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?

c**** ce so stato 3 gg di fila sul quel prog
-- 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

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?
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!
-- 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

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

.
-- Comment added by
AndreaSterbini on 17 Nov 2003
No such template def TMPL:DEF{PROMPT:before}
- Ricordatevi di dare un titolo alla vostra domanda come segue:
<tre spazi>---+++<spazio>Titolo della domanda "non dovete mettere <>"
Testo della domanda