Domande (e risposte) sull'HomeWork1
Papabile?
ripetere fintanto che l'intervallo di valori "papabili" contiene più di 1 elemento <----- che significa????
-- Comment added by
AlessandraRizzuti on 10 Oct 2003
Considerate la parola "papabile" = "possibile"
--
AndreaSterbini - 11 Oct 2003
variabile tentativo
si deve usare la variabile tentativo per il numero da noi scelto
-- Comment added by
AhmedGaberHaiba on 10 Oct 2003
Le variabili potete chiamarle come vi pare
--
AndreaSterbini - 11 Oct 2003
Non sono perfetto (nè mi piacerebbe esserlo
)Non sono perfetto (nè mi piacerebbe esserlo
)Non sono perfetto (nè mi piacerebbe esserlo
)
Professore una domanda:
Lei ha scritto: "Se eseguite il programma e pensate il numero 311 l'input e l'output saranno (in rosso l'input battuto da voi)" ma non è il nero l'input? Da quello ke ha scritto lei -1 0 e---+1 dobbiamo darli noi in input...noi dobbiamo dare in input il valore medio volta per volta o dobbiamo fare in modo ke il programma faccia tutto da solo il calcolo?
-- Comment added by
DavidVulpetti on 10 Oct 2003
Il vostro programma
produce i tentativi (e quindi questi sono il suo
output).
Il suo
input sono le risposte
---+1/0/-1 che indicano se il tentativo è basso/azzeccato/alto.
Rileggi il testo dell'esercizio. Il programma deve trovare il numero pensato da voi (o da me quando testo se il funzionamento è corretto).
--
AndreaSterbini - 11 Oct 2003
Altra domanda:
Se faccio 500 come valore medio tra 0 e 1000, poi devo calcolare la media tra 501 e 1000 (con---+1 in output) o tra 0 e 499 (con -1 in output), giusto o ho detto una caxxata?
-- Comment added by
DavidVulpetti on 10 Oct 2003
Esatto
--
AndreaSterbini - 11 Oct 2003
Ancora n'altra domanda:
"ripetere fintanto che l'intervallo di valori "papabili" contiene più di 1 elemento"
vuol dire ke ogni volta ke facciamo una media incrementiamo una variabile "tentativo" e appena supera 9 sgraviamo perkè il max di tentativi è 9 come ha detto Lei a lezione?
-- Comment added by
DavidVulpetti on 10 Oct 2003
No, significa che se l'intervallo contiene più di un elemento allora si continua.
Altrimenti contiene un solo elemento, si esce dal ciclo, dev'essere l'unico valore giusto e lo si propone.
Con un intervallo da 0 a 1000 ci vogliono al massimo 9 tentativi, ma il programma può essere esteso per cercare numeri anche in intervalli più ampi (per esempio tra -1000000 e---+2000000)
--
AndreaSterbini - 11 Oct 2003
Mi sono rifatto i conti, per essere pignoli ci vogliono 10 tentativi (il numero intero successivo)
--
AndreaSterbini - 16 Oct 2003
Errata c.
No spe mi sa ke ho scritto una boiata...ho confuso "fintanto"...vabe professore ci spieghi Lei
-- Comment added by
DavidVulpetti on 10 Oct 2003
Forse:
spe forse ho capito
una while ke fa tutto quello ke viene dopo finkè gli estremi dell'intervallo sono cmq 2, perkè quando ne resta solo uno vuol dire ke abbiamo indovinato il numero...giusto?
-- Comment added by
DavidVulpetti on 11 Oct 2003
Vedo che ci sei arrivato.
Per favore non date suggerimenti sul codice (altrimenti togliete il gusto ai compagni
)
ma fate soltanto domande sul metodo e/o richieste di chiarimenti
--
AndreaSterbini - 11 Oct 2003
Problema di autenticazione:
Quando provo ad inviare l'homework1 nella pagina di consegna mi dice che non sono autorizzato, eppure rientro tra gli studenti del gruppo prog1.
help me.
-- Comment added by
AndreaPrincipi on 11 Oct 2003
Ora è a posto, riprova.
--
AndreaSterbini - 11 Oct 2003
Errore del setvbuf
Il programma funziona, ma durante la compilazione mi da un solo errore
"warning: passing arg 4 of 'setvbuf' makes integer from pointer without a cast"
??? è normale?
-- Comment added by
DavidVulpetti on 11 Oct 2003
Hai ragione, bisogna scrivere:
setvbuf(stdout, NULL, _IONBF , 0);
Ho corretto il testo.
--
AndreaSterbini - 11 Oct 2003
Papabile
X alessandra ""papabile"" significa valore candidato ad essere eletto!!
Quindi il valore che proponi!
-- Comment added by Users.691942 on 11 Oct 2003
Papabile
si fa un ciclo finkè i tentativi nn superano il numero 9, io l'ho interpretato così...perkè cmq se l'esercizio è corretto i tentativi massimi ke uno puo fare per trovare un qualsiasi numero pensato sono 9 come ha detto il Professore a lezione
-- Comment added by
DavidVulpetti on 11 Oct 2003
Non vi fissate sul numero 9 ... altrimenti vi faccio leggere da input gli estremi dell'intervallo.
--
AndreaSterbini - 11 Oct 2003
(correggo, per l'intervallo 0-1000 ci vogliono 10 tentativi.
--
AndreaSterbini - 16 Oct 2003
Uso corretto del titolo
Ragazzi ... ma che razza di titoli date alle vostre domande?
Usate un titolo chiaro e sintetico che fa capire di cosa si tratta.
-- Comment added by
AndreaSterbini on 11 Oct 2003
casi limite 0 e 1000
quindi se per esempio il numero da indovinare è mille, l'ultimo input sarà un 1...dopodichè il programma esce...giusto?! il mio prog. fa così..
-- Comment added by
MarcoMarinangeli on 11 Oct 2003
Certo, ma prima stampa 1000
--
AndreaSterbini - 13 Oct 2003
casi limite 0,1000 e non solo
ho notato che lo fa anche in altri casi, quali 200 e 300 per esempio. la domanda è: è giusto che il programma esca o l'ultimo input deve essere cmq uno 0?!?!
-- Comment added by
MarcoMarinangeli on 11 Oct 2003
Se l'input è 0 il numero è azzeccato e si esce.
Se l'ultimo numero possibile non da' 0 ha sbagliato a rispondere chi sa il numero segreto.
--
AndreaSterbini - 13 Oct 2003
Ma non gestiamo nessun errore.
--
AndreaSterbini - 16 Oct 2003
consegna versione "un pelino più difficile"
chi vuole consegnare la versione un pelino---+ difficile deve consegnare solo quella?!
-- Comment added by
MarcoMarinangeli on 11 Oct 2003
Certo, visto che si può consegnare un solo tipo di esercizio.
--
AndreaSterbini - 13 Oct 2003
Modalita' consegna pelino difficile, variabile numero da indovinare, log(1000)
Professore vorrei chiedere una cosa...
Per implementare la versione "pelino" difficile come possiamo fare?
Cioè, se lei usa test che inviano come primo input---+1 o -1 o 0 come farà a testare i programmi che vogliono inizialmente i range di valore?
Naturalmente anche viceversa?
Inoltre il programma da indovinare (come nell esempio il 311) non deve essere inserito in nessuna variabile guiusto? Cioè il numero da trovare va solo pensato....
Inoltre scusate la mia ignoranza ma se facccio log(1000) il risultato è =3 cosa sbaglio? non dovrebbe venire 9?
-- Comment added by
MatteoLaBella on 12 Oct 2003
La implementate, passerà solo il secondo test.
il numero 311 lo so io ... quando faccio i test non è detto che sia 311.
Hai fatto il logaritmo in base 10. Stiamo parlando del logaritmo in base 2.
--
AndreaSterbini - 13 Oct 2003
X Matteo e il Professore
Matteo: credo ke il professore per la versione un pelino---+ difficile modifiki il suo programma di risposta
Il numero da trovare va solo pensato come hai detto tu
Per il log lascia perdere il calcolo, pensaci tu un attimo e fai le divisioni per 2 di 1000 e vedi quanti tentativi ti servono per arrivare ad 1 ovviamente levando gli estremi
Professore: ha scritto su Homework 2 ke dato ke ora ha dato un progr facile ne da subito un altro per la settimana prox. Volevo dire una cosa: già un po' di gente mi ha contattato per ricevere aiuto sul primo esercizio, secondo me per ki non ha mai programmato in vita sua già si corre un po' troppo all'uni (essendo diventato un triennio) e già mi dicono ke il primo esercizio risulta difficilotto...boh, non so, faccia lei
-- Comment added by
DavidVulpetti on 12 Oct 2003
L'esercizio è semplice, (ho dato io lo pseudocodice ... basta tradurre in C una riga per volta).
Non ho detto che accorcio la data di consegna ...
Se volete faccio una intera lezione su come si compila e si debugga un programma, così diamo una bella spinta a chi non sa molto ...
--
AndreaSterbini - 13 Oct 2003
Float per la versione un pelino + difficile
Professore visto ke nella versione un pelino---+ difficile gli estremi diventano random, può anke darsi ke la media iniziale sia un numero decimale. Ho visto ke se lasciamo int approssima per difetto, lasciamo int o usiamo float?
-- Comment added by
DavidVulpetti on 12 Oct 2003
Anche con 0-1000 la media diventa un numero decimale (per esempio quando gli estremi sono 0-499)
--
AndreaSterbini - 13 Oct 2003
Sempre sul Float
Ho svolto anke la versione un pelino più difficile e mi sono accorto di una cosa. Se uso float per quello ke riguarda i tentativi, mi viene sì un valore più preciso (ovvero se gli estremi sono 3 e 4 mi viene 3,5 mentre se uso int viene 3) ma è anke vero ke dopo un certo valore il programma va in loop. Se ad esempio metto come estremi 0 e 20 e penso il numero 13, il programma arrivato al tentativo 12,5 se gli dico di andare "più su" mettendo 1 come input, ripete all'infinito 12.5 e non sale. Se invece levo il float nn dà medie precise ma copre tutti i valori interi ke uno pensa. In definitiva, uso float o no?
-- Comment added by
DavidVulpetti on 12 Oct 2003
E' un po' difficile controllare se due float sono uguali ... usa gli interi
--
AndreaSterbini - 13 Oct 2003
Termine scadenza secondo esercizio.
Per qualunque persona che abbia bisogno di me mi interpelli
X il prof. Ma il secondo esercizio la consegna quando avverrà?
Non potrebbe darmi un accenno sull'Homework 2, visto che il primo lo ho già finito? La ringrazio anticipatamente.
-- Comment added by
DarioFiorenza on 12 Oct 2003
Che ti interpella a fare? Gli dai il tuo codice? E allora che impara?
Come vedete c'e' chi ha fretta di sapere ...
--
AndreaSterbini - 13 Oct 2003
X Davide Vulpetti : scusami forse posso darti una mano , poi vedi tu.
.Se fossi in tè il float non lo utilizzerei perchè il professore il primo esercizio non lo ha differenziato per difficoltà (come dice lui per smanettoni) perciò rischi che il tuo programma non passa alcuni test.
X sicurezza chiedi al professore.
-- Comment added by
DarioFiorenza on 12 Oct 2003
X il Prof.
- Volevo sapere se facevo anche il programma che testa HomeWork1 posso avere più punti o è indifferente?
- come si lanciano duè programmi simultaneamente in c?
- nell'altro programma va la stessa stringa che va inserità dopo la def. delle variabili?
- O il programma è solamente lo pseudo codice che ha fatto a lezione?
- Nel primo programma posso utilizzare strutture di controllo non fatte a lezione?
- La ringrazio per tanta disponibilità grazie per il cd di Linux
-- Comment added by
DarioFiorenza on 12 Oct 2003
- Puoi consegnare solo una versione.
- Lascia perdere lanciare programmi multipli ... lo farai a Sistemi Operativi.
- Quale altro programma?
- esatto
- nessuno ti lega
- a disposizione
--
AndreaSterbini - 13 Oct 2003
X Dario Fiorenza
Puoi spiegarmi quali altre strutture vorresti utilizzare per fare questo prog? Pensi che quelle spiegate a lezione non vadano bene? ti ringrazio in anticipo per la risposta
-- Comment added by
AndreaPrincipi on 12 Oct 2003
Giusto
--
AndreaSterbini - 13 Oct 2003
Niente Fretta
Come mai tutta questa fretta???
Le cose secondo me vanno fatte con calma per capirle meglio!!
-- Comment added by Users.691942 on 12 Oct 2003
Già ...
--
AndreaSterbini - 13 Oct 2003
Ma quest'anno cosa avete?
Ma quest'anno avete fretta di finire? Chi sa se amerete ancora il C quando faremo le Strutture (alberi e liste) oppure puntatori? Inoltre per Dario Fiorenza, i punti non cambiano!! Insomma per spiegarti il prof, testa il programma con dei file, Ora se tu crei un programma con 300 righe di codice, o con solo 2 righe di codice, il punteggio sarà sempre lo stesso. QUello che ti consiglio di fare è consegnare il programma nel modo piu semplice, aspettare che il prof pubbluchi i test, e poi modificarlo come piace a te. Poi fai come ti pare.. ma ricorda "le cose semplici sono le migliori"
Inoltre concordo con 691942, andate a vedere quanti hanno consegnato l'altr'anno il primo homework (
RisultatiHomework1aa0203 ) e poi l'ottavo (
RisultatiHomework8aa0203 )?
-- Answer added by
MatteoLaBella on 12 Oct 2003
... quest'anno li faccio meno complicati
--
AndreaSterbini - 13 Oct 2003
Logica di Funzionamento programma piu' difficile
So di fare una domanda idiota, ma non ho capito il funzionamento delle versione "un pelino piu' difficile" dell'esercitazione di programmazione 1.
Intende che i valori da leggere all'inizio sono quelli del numero max e min all'interno dei quali ci sara' il range dei numeri da considerare (cioe' ad esempio invece di 0-1000 possiamo arbitrariamente dirgli di pensare un numero tra 5 e 1200000)?
E questa versione piu' difficile si puo' realizzare al posto della "standard" o bisogna farle entrambe?
Stefano Giachetti
-- Comment added by
StefanoGiachetti on 12 Oct 2003
Si è come hai detto tu! invece di considerare numeri tra 0 e 1000 inseriamo noi i range!! Ma attenzione ad una cosa: alle varibili.. "Buon Intenditore poche parole". Inoltre l'altranno si realizzava solo una versione. Quindi poi sarà compito del prof (non so in che modo) capire quali test deve passare.
-- Answer added by
MatteoLaBella on 12 Oct 2003
O passi il primo test o il secondo test o nessuno dei due.
--
AndreaSterbini - 13 Oct 2003
Inserimento range nella versione "un pelino piu' difficile"
Anche in questo caso vale l'avvertenza di non scrivere a video nulla che non sia un numero?
Oppure è possibile scrivere ad es:
Inserisci il minimo
Inserisci il massimo
E visto che ci sono:
Il programma deve uscire dopo un numero massimo di tentativi?
grazie
-- Comment added by
CarloStefani on 12 Oct 2003
No mi raccomando non dovete inserire nessuna scritta, i programmi sono testati in automatico. I risultati devono essere esattamente come quelli del professore. Quindi attenetevi a quello che dice il prof.
Sarà cmq il prof. ha dirci cosa dovra comparire oppure no. Attendiamo.....
Per quanto riguarda "il programma deve uscire dopo un numero di tentativi" non lo so! Credo che ci penserà il prof. in fase di test. Niente di piu..
-- Answer added by
MatteoLaBella on 12 Oct 2003
No prompts, please.
Il programma (se corretto) esce dopo al massimo dopo
circa 1---+parte_intera(log2(max-min+1)) tentativi.
--
AndreaSterbini - 13 Oct 2003
Secondo programma?
Scusate ma quale secondo programma.. Noi non dobbiamo attenerci all'esempio fatto nel
HomeWork1 ?
-- Comment added by
MatteoLaBella on 12 Oct 2003
Puoi scegliere di implementare la versione "un pelino più difficile"
--
AndreaSterbini - 13 Oct 2003
Tipo variabili nella versione piu difficile?
Il tipo delle variabili nella versione più diffile deve rimanere sempre int?
-- Comment added by
EmanuelePaterna on 12 Oct 2003
Gia il fatto che te lo sei chiesto è una buona cosa. Prova ad immaginare?
-- Answer added by
MatteoLaBella on 12 Oct 2003
Già
--
AndreaSterbini - 13 Oct 2003
Domanda scontata ma nn troppo...
Nell'esempio di output il professore ha stampato solo il ciclo, ma una volta uscito dal ciclo il nostro prog. nn dovrebbe stampare anche il risultato (sempre senza prompt)?
-- Comment added by
CesareDelVecchio on 13 Oct 2003
Infatti lo stampa! Guarda l-esempio del prof, il programma stampa il numero 311, cioe' precedentemente pensato!
-- Answer added by
MatteoLaBella on 12 Oct 2003
Tipo variabili nella versione difficile
Io ho lasciato Int, perkè con float mi va in loop dopo un certo numero, cioè per esempio da 0 a 20 se penso il numero 13, quando arriva a 12,5 di media mi va in loop. Con int invece anke se dà medie meno precise copre tutti i numeri interi ke uno può pensare.
-- Comment added by
DavidVulpetti on 13 Oct 2003
Credo che il problema sia la parte decimale. Infatti se mettiamo FLOAT dovrebbe veniere anche numeri con la virgola es: 73.5 e se dividiamo nuovamente per 2 ci verra 36.75 e cosi via.. in questo modo forse il procedimento (cioè max 9 tentativi ) non funziona!! Poi non so...
-- Answer added by
MatteoLaBella on 12 Oct 2003
... lasciate stare i float ...
--
AndreaSterbini - 13 Oct 2003
Difficile?
Ma la seconda versione veramente me la chiamate "difficile"?
-- Comment added by
AndreaSterbini on 13 Oct 2003
Professore lei l ha chiamata "un pelino più difficile", e poi naturalmente sulla domande per essere più veloci l abbiamo chiamata difficile!!! Ma non lo è, almeno per me... (sta a vedere che non passo nemmeno un test)
-- Answer added by
MatteoLaBella on 12 Oct 2003
Per testarlo...
Se uso un range da 0-1000 e faccio sempre---+1 alla fine mi arriva a 999 poi gli do +1 e mi stampa 1000 ed esco.. è giusto?
-- Comment add by
MatteoLaBella on 13 oct 2003
se stampa 1000 (che è il numero da indovinare) non devi ricevere 0 prima di uscire?
--
CleoniceMansillo
Sovrascrivere la consegna...
Si può consegnare una seconda versione del programma dopo averne gia' data una vero prof.?
-- Comment added by
CesareDelVecchio on 13 Oct 2003
Si si, vai tranqullo puoi inviare quante volte vuoi. Ma ricorda.. l'ultima è quella che vale!
-- Answer addes by
MatteoLaBella on 13 Oct 2003
Programma testato sul 13
Provate a testare il prog sul numero 13 a voi che output da??
A me si ferma a 12 e non mi da il 13 (ma non perchè non metto la printf infondo)
Forse ho sbalgiato qualcosa nel while????
-- Comment added by Users.691942 on 13 Oct 2003
Marco a me stampa il 12, gli do---+1 e lui stampa 13 ed esce!!! (ma cosi va bene?)
-- Answer added by
MatteoLaBella on 13 Oct 2003
Secondo programma
Sicuramente ragazzi avete capito male! Il secondo programma non è altro che i file di test. Infatti una cosa carina che fa linux è quella di poter prendere l input da un file di testo. Cio potete scrivere questo
./programma < input.txt
e la cosa ancora piu carina è che puo darvi l output in un altro file. cioè questo
./programma >output.txt
quindi in finale possiamo fare
./programma <input.txt >output.txt
-- Comment added by
MatteoLaBella on 13 Oct 2003
Per Matteo Labella
ma per input.txt e output.txt intende il programma input.c output.c? Devono essere lanciati simultaneamente? E come si fa in c? , e come nell'esempio? E un altra cosa questo domanda è rivolta a coloro che ne parlano. Ma per log(1000) per esempio che cosa intendete?Ringrazio chi mi saprà dare una risposta
e ringrazio Matteo Labella per quello che mi dirà :-).
-- Comment added by
DarioFiorenza on 13 Oct 2003
Allora Dario iniziamo con il LOG. L'altra volta ho provato a fare il log (1000), in quanto nel testo dell
HomeWork1 si diceva che "Esiste una strategia ottima che permette di indovinare il numero con un massimo di log(N) tentativi (dove N è il numero di possibili valori). Quindi ho fatto log(1000)ma mi veniva come risultato 3, quando invece miei amici hanno detto che il prof ha detto che i max tentativi erano solo 9!! Infatti io ho sempre fatto log
10(1000) invece per il calcolo bisogna fare log
2(1000) in questo caso vedrai che viene 9,.......
Ed ora passiamo a INPUT ed OUTPUT. I file che vengono passati al programma sono dei semplici file di testo, quelli che si scrivono in NOTEPAD per Windows oppure con VI o GEDIT per Linux.
Facciamo un esempio: Se scrivo un programma C che faccia la somma di due numeri creo un file di testo denominato in.txt (il nome ed estensione puo essere casuale, va bene anche pluto.in) con i seguenti valori
2
3
lancio il programma in questa modalità
./somma <in.txt
e magicamente ottengo sul terminale di Linux il risultato 5.
E' possibile lanciare il programma anche in un'altra modalità, cioè far salvere l'output del nostro programma, esempio:
./somma >risultato.txt
In questo caso il programma ci chiederà di immettere noi da tastiera l input, es: 2 e 3 e il risultato 5 sarà direttamente salvato nel file risultato.txt (anche qui il nome è casuale).
Se invece siamo dei tipi veramente pigri :O possiamo lanciare al programma l'input e dirgli di stamparlo sul file in questo modo:
./somma < in.txt >risultato.txt
Esempio del programma corrente
HomeWork1
Crea un file txt esempio in.txt con questi valori
-1
1
-1
0
poi creati un file txt esempio out.txt con questi valori
500
249
374
311
e lancia il programma in questo modo
./somma < in.txt >risultato.txt
poi digiti il comando
diff risultato.txt out.txt
in questo modo ti fai fare anche il confronto dei due file! Stai attento il diff ti considera anche spazi, newline.. i file devono essere perfettamente uguali. Naturalmente diff ti dirà anche in che colonna e riga si è verificato l'errore. Insomma se ci fai un po di tecnica è veramente facile. Ed è molto divertente...
Divertente se si hanno molti file C da testare, peccato che non sei del nostro canale, infatti questa tecnica l ho scoperta quando ho dovuto testare 20 programmi in C in vista dell'esame di Prog 1 che non ho passato
Ps: Per il Prof. é questa la tecnica che usate oppure avete "creato" particolari programmi?
-- Answer added by
MatteoLaBella on 13 Oct 2003
X il Prof Sterbini
Quando la trovo a laboratorio di Programmazione1(Informatica)?
-- Comment added by
DarioFiorenza on 13 Oct 2003
E menomale che...
che gli esercizi erano---+ facili di quelli dell'anno scorso... questo è sì semplice, ma andate a confrontarlo con il primo hw dell'anno scorso...
-- Comment added by
SimoneDAndreta on 13 Oct 2003
Simone dai anche questo non è difficile!! E poi il prof ci ha dato lo pseudocodice.. E' molto facile. Non serve niente!! Per fare il programma serve sapere
#include <stdio.h>
printf
scanf
while
la sommatoria
la divisione
e gli operatori AND (&&) OR (||) oppure != (diverso) niente di piu.
vai a vedere gli altri homework.. vai a vedere la soluzione
SoluzioneHomework6aa0203 guarda quante pagine...
-- Answer added by
MatteoLaBella on 13 Oct 2003
Mi sa che sei bravo in Programmazione, ma non nella lingua italiana...:) ho detto infatti che l'esercizio è semplice, ma rispetto al primo dell'anno scorso è a mio avviso---+ complesso, soprattutto nella comprensione del testo. Vuoi mettere la simulazione di un giokino (seppur stupido) a confronto con la media di tre numeri??
-- Comment added by
SimoneDAndreta on 13 Oct 2003
ATTENZIONE QUANDO EDITATE
Attenzione quando editate questa pagina. Infatti avete eliminato il form di inserimento della domanda. Ora l ho ripristinato!! Attenzione..
Professore controlli se è tutto OK!!! Grazie
-- Comment added by
MatteoLaBella on 13 Oct 2003
Come faccio i test
O uso la tecnica descritta sopra da Matteo, oppure (grazie alla riga che vi ho fatto inserire e che disattiva la bufferizzazione dell'output) uso un programma che risponde alle richieste del vostro. In questo caso uso due pipes per far comunicare i due programmi.
Re: In laboratorio? purtroppo no
Non mi trovate in laboratorio ... mi dispiace ma quest'anno non abbiamo la possibilità di seguirvi anche lì. Vi seguo su twiki.
Altrimenti mi trovate a lezione e in orario di ricevimento.
Non vi spaventate
Chi è alle sue prime armi non si spaventi, il programma da implementare è abbastanza semplice, se volete provate prima a copiare la
SoluzioneHomework1aa0203, a compilarla e a farla girare in modo da prendere un po' di dimestichezza.
Nella prossima lezione passerò un bel po' di tempo a spiegarvi come si compila e si debugga un programma.
Programmatori vs. Newbies
Ragazzi, in questo corso ci sono 3 gruppi di studenti:
- chi parte da zero (Newbies)
- chi ne sa abbastanza (Programmatori)
- chi crede di sapere già tutto (quelli che non frequentano ma poi non passano l'esame )
Il terzo gruppo non c'e' speranza di recuperarlo, per quanto riguarda Newbies e Programmatori è difficile fare un corso contemporaneamente interessante per entrambi.
- se faccio esercizi difficili mi perdo i Newbies
- se faccio esercizi facili mi perdo i Programmatori
Quindi devo cercare di fare esercizi a due livelli, così sia i Newbies che i Programmatori potranno trovare pane per i propri denti.
Ad un certo punto spero che anche i Newbies avranno abbastanza esperienza da affrontare le versioni "difficili" dei giochi ed alla fine avremo un unico gruppo di Programmatori (con i Newbies che saranno cresciuti).
A quel punto (sarà Natale) ci sfideremo in un torneo tostissimo e avrete la soddisfazione di stroncarmi ...
-- Comment added by
AndreaSterbini on 13 Oct 2003
Opinione
Mah io sono al secondo anno e posso dirvi ke cmq questo esercizio è più facile del primo dell'anno scorso. Mi trovo ancora qui proprio perkè l'anno scorso era la prima volta ke mettevo le mani nella programmazione, e già dal primo esercizio mi ero trovato in difficoltà per nn parlare dei vettori e matrici
Spero ke quest'anno si vada un poco più "lenti" ke con la storia del triennio invece di 5 anni secondo me programmazione per ki non c'ha mai messo le mani è difficilotta.
Per quello ke riguarda la versione difficile di questo primo esercizio...raga nn c'è niente di difficile, dovete solo aggiungere un paio di "cosette"...anzi ke non ce l'ha detto fin dall'inizio, ma è una cavolata...secondo me il professore ha implementato la versione un poco più difficile dopo ke ha letto ke avevo fatto il ciclo basandomi sul numero 9
-- Comment added by
DavidVulpetti on 14 Oct 2003
ANCH'IO!!! Proprio come te, e ora sto ripetendo. Però x adesso sta andando bene!
-- Comment added by
CleoniceMansillo on 15 Oct 2003
Come deve funzionare il "pelino" più....?
Diciamo che io lo lancio, al prompt (senza nessuna scritta), inserisco il valore min (es. 10 e invio)al secondo prompt vado col max (es 31 invio).
Subito dopo l'invio mi restituisce 20 e si aspetta 1 o 0 o -1. E' giusto cosi'?
Grazie.
Ps Veramente si puo' inviare più di una risposta?
PPs Il "pelino" sostituisce l'homework base o vanno consegnati entrambi?
PPPs Nel vim di cygwin non trovo le parentesi graffe, help please
-- Comment added by
SalvatoreBerti on 14 Oct 2003
Consegna????
anche io vorrei sapere come consegnare la "pelino più difficile" (dato che c'è un solo form di consegna e un solo programma di test che con la versione un pelino più fallirebbe)e se conporta più punti!!
Grazie!!!
Identificazione dell'anno scorso (Le varie printf)
Prof, ma quest'anno nel codice non vanno inserite le printf con il nome, cognome, data di nascita ecc ecc ecc? Come fa a mettere le soluzioni dei test?
--
EnricoMariaSantoro - 14 Oct 2003
-- omment added by Users.691942 on 14 Oct 2003
Re: Graffe
In windows le graffe si fanno battendo
AltGr---+Shift+[ e
AltGr+Shift+] (quelle sui tasti con 'è' e con '+')
Re: Consegna
Come già detto qualche domanda fa, la consegna è unica, scegliete voi la versione che volete.
Il vostro programma verrà testato prima con numeri tra 0 e 1000, poi dando sue estremi a caso e un numero da indovinare a caso tra i due estremi. O passa il primo test, o il secondo o nessuno.
Punteggi
Punteggi ... non vi preoccupate dei punteggi ... normalmente li decido in fondo al corso tenendo conto della difficoltà relativa tra i diversi homework.
-- Comment added by
AndreaSterbini on 14 Oct 2003
Re: Identificazione
Il vostro nome lo date quando consegnate. (serviva ad abituarsi agli esami di Tronci)
-- Comment added by
AndreaSterbini on 14 Oct 2003
Scusa professore perche ha scritto "serviva ad abituarsi agli esami di Tronci" perche quest'anno non si fanno piu' gli esami con Tronci????
Inoltre volevo chiedere una cosa: e' possibile far stampare l output in un file solo da una determinata riga? Esempio la 7^
oppure utilizzare il comando diff e controllare un documento solo dalla 7^ riga???
Grazie mille
-- Comment added by
MatteoLaBella on 14 Oct 2003
Usa il comando
tail per prendere la parte finale del file.
-- Comment added by
AndreaSterbini on 14 Oct 2003
Problema autenticazione...come mai mi dice che non posso consegnare l'esercizio??????
Io sono registrato dall'anno scorso!!!!
E quindi il documento lo ho già dato l'anno scorso!!
Prof. che devo fare?????
-- Comment added by Users.691942 on 14 Oct 2003
Autenticazione studenti anni scorsi
Gli studenti degli anni scorsi che già hanno un account su twiki mi devono solo far sapere il nome wiki che li riabilito.
-- Comment added by
AndreaSterbini on 14 Oct 2003
Be il mio nome lo ha già sotto occhi
Wiki name is: 691942
Grazie
-- Comment added by Users.691942 on 14 Oct 2003
Gestione Errori
Professore bisogna gestire qualche errore?
1. Possiamo supporre che non saranno inseriri altri caratteri oltre che a---+1,-1,0?
2. Inoltre se prendiamo come range 0-1000 e facciamo sempre -1, finche non arriviamo a 0 e l'utente mette -1 (impossibile perche non esiste un numero inferiore a 0 nel nostro caso) dobbiamo gestirlo come errore?
-- Comment added by
MatteoLaBella on 14 Oct 2003
E per la gestione errori ha detto il prof che nn serve, lui come input da solo -1 0 e---+1
-- Comment added by
ManueleManni on 14 Oct 2003
INPUT-OUTPUT del caso 1000
se testo il mio programma per trovare il numero 1000 l'input e l'output (mischiati) appaiono così:
0
1000
500
1
750
1
875
1
938
1
969
1
985
1
993
1
997
1
999
1
1000
ed esce dal programma... è giusto o devo premere 0 dopo il mille?!?!thx
-- Comment added by
MarcoMarinangeli on 14 Oct 2003
Deve prima stampare il 1000 suppongo...
-- Comment added by
ManueleManni on 14 Oct 2003
Credo anch io che ti deve stampare 1000 anche perche il valore che hai pensato è mille e quindi deve stampare. Ti do un avvertimento non far stampare il 1000 aggiungendo---+1 !!!!
-- Answer added by
LaBella on 14 Oct 2003
Gestione del Log
Ma e' obbligatorio inserire il risultato del log(Valore Dei Numeri Possibili) come "valore sentinella" del ciclo? Mi spiego: nell'esercizio normale ci vogliono massimo 10 tentativi; lo devo inserire per forza come numero di tentativi massimo?
-- Comment added by
EnricoMariaSantoro on 14 Oct 2003
Professore mi suggerisce
Volevo sapere una cosa.. lei crea un altro programma che invia---+1, -1 , 0. Quindi se ho capito bene e vogliamo giocare un po, i due programmi si lanciano, ma cambiando l'input, cioè dirgli di prendere in stdin da terminale! E stdout da terminale.. cosi dovrebbe funzionare giusto?
Il problema è come si fanno girare due programmi, oppure un programma chiama se stesso? Ma cosi è impossibile. Se vendo da lei, me lo spiga?
-- Comment added by
MatteoLaBella on 14 Oct 2003
domanda da newbie
Forse è una domanda inutile, ma la faccio lo stesso.
Come fa il compilatore a riconoscere 1 da -1? io ho provato ma il -1 non lo accetta come risposta ç___ç
-- Comment added by
GiuseppeCrialese on 14 Oct 2003
Secondo me sbagli qualcosa.. Come fa a non riconoscerti -1? E' praticamente IMPOSSIBILE? Ma quale compilatore usi?
COntrolla bene il soergente
-- Answer added by
MatteoLaBella on 14 Oct 2003
X GIUSEPPE CRIALESE
Puo dipendere che struttura di controllo che hai usato? controllala bene perchè il numeri positivi e negativi li riconosce il compilatore di più non posso dirti perchè non sò come hai impostato il ciclo.HAI CONTROLLATO LA scanf c'è
int pippo;
scanf("%d",&pippo);se vuoi pippo lo puoi inizializzare.
Fammi sapere come va spero di esserti stato d'aiuto se no chiedi chiarimenti a lezione che è il miglior modo di capire le cose e usa il manuale di C.Se sei neofita della programmazione ti consiglio un libro molto prolisso Deitel & Deitel Apogeo utile per costruirsi delle buone basi.Ok ciao
-- Comment added by
DarioFiorenza on 14 Oct 2003
X il prof dove riceve lei?
Volevo sapere a che piano riceve di via Salaria e in quale stanza?
Lei riceve di Giovedi dalle 14:00 alle 15:30 c'è bisogno di prenotazione?
Avevo delle domande sul compito di programmazione 1 e una su architettura 1
-- Comment added by
DarioFiorenza on 14 Oct 2003
Uso "int","long int" o "short int" ?
Professore scusi,nella versione "un pelino---+ difficile", le due variabili dell'intervallo le devo dichiarare come short int/int(quindi ci darà un range da -32767 a +32767), o come long int (quindi con un range da -2147483647 a +2147483647)?Grazie.
-- Comment added by
DavidCordella on 14 Oct 2003
Re: Gestione errori
Per ora non gestite alcun errore.
Re: INPUT-OUTPUT del caso 1000
Secondo me dopo l'ultima proposta (1000) devi leggere la risposta 0.
Re: X il prof dove riceve lei?
Il mio ufficio è in Via Salaria 113, 3° piano, stanza 309 (di fronte alla scala)
Re: Uso "int","long int" o "short int" ?
Tienti sul sicuro ... (pensaci
)
Re: Gestione del Log
La descrizione in pseudocodice non usa il logaritmo (e poi non sapete ancora linkare la libreria matematica), non ce n'è bisogno. Il ciclo descritto fa tutto da sè.
Re: due programmi che si parlano
Per chi è curioso: si possono far girare due programmi in modo che l'imput di uno sia ottenuto dall'output dell'altro e viceversa. Ci vuole almeno una
pipe, (meglio ancora due) creata con
mkfifo ed entrambi i programmi devono disattivare la bufferizzazione dell'output (la riga che vi ho chiesto di inserire).
In poche parole si deve scrivere più o meno:
mkfifo in
mkfifo out
./indovina < in > out & ./rispondi < out > in
Per maggiori informazioni seguite il corso di sistemi operativi.
-- Comment added by
AndreaSterbini on 14 Oct 2003
Sbaglio o quella utilizzata per risolvere questo gioco viene chiamata "ricerca dicotomica"? Se ricordo bene è usata per la ricerca di un elemento all'interno di un vettore ordinato ma non vorrei prendere una cantonata
sbagliarmi, o confondermi con qualcos'altro...
Luca
PS: qualcuno è riuscito a trovare "Corso completo di programmazione" di C? - non ricordo la casa editrice ma la sapete - Io l'ho cercato in 3 librerie ma dicono ke è in ristampa e non sanno quando torna...
-- Comment added by
LucaLollobrigida on 14 Oct 2003
Ma di quale libro parli?
del Deitel & Deitel dell'Apogeo? A termini lo dovresti trovare tranquillamente!!
-- Answer added by
MatteoLaBella on 15 Oct 2003
Professore ma è sicuro?
Scusi professore se io eseguo il programma con valori da 0 a 1000 ed eseguo il programma e arrivo a
...
...
999
1
è sottointeso che il mio numero era 1000. Cioè il range doveva andare da 0 a 1000. quindi quando faccio---+1 mi deve stampare 1000 ed uscire, perche quello è il numero che ho pensato. Se non era quello, allora ho sbagliato prima o sono uno scemo perche ho pensato ad un numero che non era richiesto <0 o >1000.
Infatti nello pseudocodice lei scrive
5.se si arriva qui vuol dire che l'intervallo contiene ora un solo valore, che va proposto
6.esci!!!!
-- Comment added by
MatteoLaBella on 15 Oct 2003
X Matteo
Penso sia come dice il professore...io ad esempio quando arrivo a 999 do un 1 in risposta e mi stampa 1000...se poi do una qualsiasi altra risposta tra 1 e -1 mi esce dal programma ristampandomi 1000, come al punto "5" dello pseudocodice. Giusto?
-- Comment added by
DavidVulpetti on 15 Oct 2003
Per il Professore, sul punto "5" dello pseudocodice
Professore io ho risolto il programma diciamo in 2 modi, per quanto riguarda il punto "5" dello pseudocodice. Con il primo modo (quello ke ho inviato)devo far capire al programma ke l'intervallo contiene solo un valore inserendo un altro input dopo l'ultimo tentativo, ovvero viene kiesto prima un input di risposta e se l'intervallo contiene un solo valore, allora il tentativo viene riscritto e il programma esce. Con il secondo modo invece, appena l'intervallo contiene un solo valore, il programma se ne accorge subito ed esce subito senza kiedere un nuovo input. Qual'è quello giusto? Se è il secondo me lo dica ke invio quello
-- Comment added by
DavidVulpetti on 15 Oct 2003
Per essere chiari su 2 punti
Una volta per tutte: il programma risponde il numero "pensato" e NON esce se non gli si da 0, anche se è l'ultimo valore possibile (es 1000). GIUSTO?
Secondo: Come deve comportarsi il programma se inserisco valori diversi da -1, 1 e 0? Deve uscire (come fa se si inserisce una lettera anzichè un numero) o deve ripetere il valore proposto?
Grazie per la chiara risposta.
-- Comment added by
SalvatoreBerti on 15 Oct 2003
Intanto grazie Salvatore perche' mi hai risolto il mio problema per quanto riguarda l'ultimo valore!!!
Inoltre per risponderti, il prof. ha detto che non non bisogna controllare i valori inseriti. Il prof. inserirá sempre---+1 -1 0 Ciao Ciao
-- Answer added by
MatteoLaBella on 15 Oct 2003
x
SalvatoreBerti
Scusa ma se il valore proposto è l'ultimo disponibile,DEVE essere per forza quello pensato;anche xkè il prof non ci ha dato il controllo degli errori,quindi se "la proposta" è l'ultimo valore disponibile,sarà quello pensato,e quindi tu gli dovrai dare xforza il valore 0.giusto?
--Comment added by
DavidCordella on 15 Oct 2003
Re: ultimo valore
Ho corretto l'esercizio, il programmma legge la risposta anche per il caso in cui si propone l'ultimo valore possibile.
Re: NO gestione degli errori
Non fate nessuna gestione degli errori, questo è solo il primo esercizio!
-- Comment added by
AndreaSterbini on 15 Oct 2003
ESEGUIRE PROGRAMMA CON LINUX
ho chiamato il mio programma indovina.c , ma non riesco a mandarlo in output.
Se da consolle digito gcc -g -o indovina indovina.c mi dice
gcc: indovina.c no such file or directory
gcc: no input files
Ho controllato bene, ma la directory esiste (l'ho creata io) e il file è salvato correttamente!!!
Che devo fare???
-- Comment added by
SimoneDAndreta on 15 Oct 2003
Re: ESEGUIRE PROGRAMMA CON LINUX
Non hai installato il gcc.
-- Comment added by
AndreaSterbini on 15 Oct 2003
Mi sono sbagliato, il gcc ce l'hai ...
--
AndreaSterbini - 16 Oct 2003
L'ho installato ora ma mi dà lo stesso errore.....ho installato la versione 3.0 da software manager... è la soluzione giusta? che devo fare?
-- Comment added by
SimoneDAndreta on 15 Oct 2003
Ho risolto ma ora ho un altro dubbio...
Grazie per l'aiuto...
Mentre stavo per spedire la soluzione mi è venuto un dubbio..il comando setvbuf(stdout, NULL, _IONBF, 0); va messo dopo l'inizializzazione o tra la definizione e l'inizializzazione?
-- Comment added by
GiuseppeCrialese on 15 Oct 2003
Re: Ho risolto ma ora ho un altro dubbio...
Dopo ke hai inizializzato le variabili, te lo dice anke lo pseudocodice
-- Comment added by
DavidVulpetti on 15 Oct 2003
Re: gcc
Forse si tratta del nome del file, in Unix (Linux) c'e' differenza tra maiuscole e minuscole. Per cui Indovina.c e indovina.c sono files diversi ...
Controlla anche di essere nella stessa directory del file da compilare (usa
ls per vedere i files nella directory corrente)
-- Comment added by
AndreaSterbini on 15 Oct 2003
Dubbio sui tentativi
uhm la domanda di prima è sparita boh vabbè la riscrivo.
- Questo comando [setvbuf(stdout, NULL, _IONBF, 0)]; l'ho messo dopo la dichiarazione/inizializzazione delle variabili [int tentativo, risp = 2;] va bene cosi?
- Il programma al massimo usa 10 tentativi per indovinare il numero. Va bene cosi o deve usare meno tentativi?
-- Comment added by
DaniloDauria on 15 Oct 2003
Se non vado errato dovrebbe essere esepio:
main()
{
variabile=0;
setvbuf ......
Io almeno ho fatto cosi, però non so se è corretto.. aspetto anch io conferma!!
Inoltre va bene uguale se faccio:
main()
{
variabile;
variabile=0;
setvbuf ......
Anche qui non ne sono sicuro, ma credo che per essere OK il programma di dovrebbe stampare al massimo 9 numeri (il decimo deve essere il tuo numero... credo) cmq non arenarti sul numero dei tentativi!!!
E' pur vero che gli homework servo per prendere dei punti, che poi serviranno all'esame (credo che anche quest'anno servano a questo), ma soprattutto serve per imparare a programmare. Quindi se nel caso va male (e stai sicuro che il mio fallirà, intanto succede sempre cosi) non ti preoccupare, cerca l'errore e corregilo. L'importante è non fermarti al primo, secondo, terzo homework come ho fatto io l'altr'anno!!!!
-- Answer added by
MatteoLaBella
Chi ha gia' consegnato ?????????
scusi professore ma se ho gia' consegnato ed ho fatto il programma in modo che se arriva ad esempio a 999 e io intendo 1000 gli do---+1 e mi scrive 1000 e poi termina, e vedo che lei ha corretto l'esercizio dicendo di dover scrivere 0 per terminare. ALLORA COSA FACCIO!!!
Va bene comunque quello che ho consegnato o riconsegno con la nuova versione
-- Comment added by
AhmedGaberHaiba on 16 Oct 2003
RE: chi ha già consegnato
il programma termina solamente quando il numero che propone corrisponde a quello che tu hai pensato. Questo lo puoi sapere solo tu. La macchina attende una risposta di conferma che nel nostro caso è stato stabilito sia lo zero. SOLO dopo aver digitato lo zero il programma termina.
-- Comment added by
RossanoEmanueleSalidu on 16 Oct 2003
Re: setvbuf
Basta che setvbuf sia prima del primo output.
Re: chi ha già consegnato
Chi ha già consegnato ha ancora 10 giorni di tempo per correggere e ri-consegnare l'esercizio.
Non vi preoccupate troppo, testerò sia la presenza di 0 finale che la sua assenza.
-- Comment added by
AndreaSterbini on 16 Oct 2003
Re: numero di tentativi
Il programma fa nel caso peggiore un numero di tentativi
circa uguale al numero intero successivo al logaritmo in base due del numero di valori iniziali.
Per essere più precisi ad ogni tentativo il numero di valori "possibili" passa da N a (N-1)/2 ... che è minore.
Se passasse da N a N/2 il numero (chiamiamolo X) sarebbe esattamente il numero intero immediatamente superiore al logaritmo in base 2 di N.
Nel caso di 0-1000 vengono fatti al massimo 10 tentativi. 10 è il numero intero successivo al logaritmo in base 2 di 1001 (che è il numero di valori tra 0 e 1000
compresi gli estremi )
In questo caso la formula viene più complessa ma è comunque minore o uguale a X.
NON usate questo numero per comandare il ciclo! E' sufficiente un test che usa gli estremi min e max dell'intervallo corrente.
-- Comment added by
AndreaSterbini on 16 Oct 2003
Una volta per tutte vorrei capire!
Nell'esempio di output il professore ha stampato solo il ciclo, ma una volta uscito dal ciclo il nostro prog. nn dovrebbe stampare anche il risultato (sempre senza prompt)?
-- Comment added by
CesareDelVecchio on 16 Oct 2003
Re: Una volta per tutte vorrei capire!
L'ultimo valore stampato è sempre il valore indovinato, no?
Non è necessario stamparlo ancora. (non mi far cambiare ancora le specifiche che sennò i tuoi colleghi hanno ragione a incavolarsi)
-- Comment added by
AndreaSterbini on 16 Oct 2003
Intervalli modificati
Secondo me si possono saltare le parti 5 e 6 dello pseudocodice con questo sistema:
1 - dare come condizione di uscita dal ciclo che governa le parti precedenti che la risposta
ottenuta sia 0 cioè che si è indovinato il numero e il programma può terminare
2 - fare si che dato un intervallo per esempio da 0 a 1000 il programma si comporti come se l'intervallo vada da -1 a 1001, nel caso del programma un pelino---+ difficile che dato un intervallo da n1 a n2 consideri un intervallo da n1-1 a n2+1
Nota fuori tema: provate la Slackware 9.1 come distro linux che è eccezionale!
-- Comment added by
EmanueleQuattrini on 16 Oct 2003
Domanda sull' I/O del programma
Per il professore: ha già spiegato come lei "testa" i nostri programmi, dandogli degli intervalli come argomenti, ma siccome sono ancora in dubbio se ho impostato bene o no le printf/scanf -lei ha detto che nn dobbiamo implementare alcun tipo di'prompt'-, le chiedo: il mio programma (la versione 'un pelino più difficile') quando viene lanciato nn scrive niente, aspetta che gli venga dato il primo valore (ovvero il limite inferiore dell'intervallo) seguito da invio, poi il secondo valore (ovvero il limite superiore dell'intervallo) seguito da invio, dopo di che 'parte' (con 500 ecc ecc come ha spiegato lei, fino alla fine). Va bene così?
Grazie
-- Comment added by
DaniloRossi on 16 Oct 2003
COSA VUOL DIRE???
che il compilatore dice "no newline at the end of file"??? sto gcc lo odio profondamente!!!
-- Comment added by
SimoneDAndreta on 16 Oct 2003
Re: cosa vuol dire???
Basta ke editi il sorgente, metti il cursore subito dopo l'ultima parentesi graffa del programma (ovvero quella che chiude il main) e premi invio. Insomma, come ultima riga lascia una riga vuota. Così non dovrebbe più dartelo. Il senso di ciò, non chiederlo a me
-- Comment added by
DaniloRossi on 16 Oct 2003
Mo ci provo, certo ke non ha senso sta cosa... grazie cmq!!!
-- Comment added by
SimoneDAndreta on 16 Oct 2003
Tentativi
Per quanto riguarda i tentativi l'utlimo numero che sarebbe il 10 tentativo è quello giusto quindi da quanto ho letto sopra va bene cosi.
-- Comment added by
DaniloDauria on 16 Oct 2003
Re: newline at end of file
Il compilatore preferisce che dopo l'ultima parente(si) ci sia un accapo.
Accontentatelo.
-- Comment added by
AndreaSterbini on 16 Oct 2003
Re: Intervalli modificati
- Io vi ho dato una traccia che specifica accuratamente la strategia che il vostro programma deve seguire nel proporre i tentativi. Potete implementare il programma come vi pare purchè l'input/output sia corretto.
- fate come vi pare ma state attenti a seguire la specifica.
Slackware ... devo provarla.
PS: Nicoletta (my
SO) dice: "... ci manca solo un'altra distribuzione di Linux ... ce ne sono già 3 installate sul PC di casa!"
-- Comment added by
AndreaSterbini on 16 Oct 2003
Re: Domanda sull' I/O del programma
Esatto
-- Comment added by
AndreaSterbini on 16 Oct 2003
Ok problema risolto, ma ora ne ho un ennesimo... x mandarlo in output devo digitare ./indovina.c giusto? sapete ke mi dice?? permission denied!!! non ci posso credere!! ma se sono entrato come root!!!! non ne posso---+!!!
-- Comment added by
SimoneDAndreta on 16 Oct 2003
Ok problema risolto, ma ora ne ho un ennesimo... x mandarlo in output devo digitare ./indovina.c giusto? sapete ke mi dice?? permission denied!!! non ci posso credere!! ma se sono entrato come root!!!! non ne posso---+!!!
-- Comment added by
SimoneDAndreta on 16 Oct 2003
Pseudocodice
Nonostante nel codice sorgente debba comparire anche lo pseudocodice, in questo particolare esercizio ho evitato di aggiungerlo in quanto fornito con lo stesso. Questo può costarmi la perdita di punti?
-- Comment added by
OliverTran on 16 Oct 2003
Non mi sembra che sia richiesto lo pseudocodice nel sorgente... tu devi solo scrivere il programma e assicurarti ke faccia quello ke deve fare!!!
-- Comment added by
SimoneDAndreta on 16 Oct 2003
Pseudocodice / ./indovina.c / Nicoletta
Pseudocodice: ce lo puoi mettere con /* "pseudocodice*/, anzi i professori lo vogliono sembra ke ti aiuti cmq
./indovina.c: ./indovina senza il .c
Nicoletta: lol
-- Comment added by
DavidVulpetti on 16 Oct 2003
Correttezza!
Perche' cambiare l'Homework in corsa??????
Oggi per caso ho visto la pagina del progetto e ho visto che era cambiato MA COME SI PUO' CAMBIARE IL PROGETTO QUANDO SI E' GIA' IN CORSA?????????
SEI IO NON AVESSI VISTO LA PAGINA, DATO CHE AVEVO GIA' CONSEGNATO, COSA SAREBBE ACCADUTO????
SAREBBE ACCADUTO CHE TUTTI I TEST SAREBBERO FALLITI PER UNA POSTILLA AGGIUNTA DOPO!!!!
QUESTO NON E' GIUSTO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Credo non sia giusto aggingere o togliere delle cose dato che la gente HA GIA' CONSEGNATO!
-- Comment added by Users.691942 on 17 Oct 2003
Grazie...
... a tutti xkè finalmente sono riuscito a compilare ed eseguire il programma con gcc... c'ho messo---+ tempo a capire come si usa il compilatore, che a fare il programma!!!!
-- Comment added by
SimoneDAndreta on 17 Oct 2003
Re: pseudocodice
Inserite lo pseudocodice come commenti nel programma. I commenti si racchiudono tra /* e */ oppure se sono di una sola riga li potete precedere con // .
Re: Correttezza
Talvolta la discussione che nasce su queste pagine evidenzia qualche inesattezza della specifica oppure qualche (mio) errore.
Quando una specifica non è chiara è giusto correggerla anche in corsa, altrimenti alcuni la implementeranno in un modo ed altri in un altro.
Comunque capisco che la "modifica in corsa" sia molto fastidiosa per chi ha già consegnato.
Vi consiglio di tener d'occhio la pagina dell'homework e di ri-sottomettere l'esercizio se c'e' stata una modifica sostanziale.
PS. non c'e' bisogno di gridare.
-- Comment added by
AndreaSterbini on 17 Oct 2003
un paio di domande...
1)indipendentemente dal valore che inserisco dopo il decimo tentativo(0,1,-1)il mio programma esce... va bene cosi?
2)ho seguito passo passo lo pseudocodice che lei ha pubblicato prof....... devo metterlo comunque come commento?
-- Comment added by
EnricoLiguori on 17 Oct 2003
Sempre questo pseudocodice...
Ok per lo pseudocodice aggiunto come commento al codice sorgente del programma, ma in questo particolare esercizio scriverlo anche se è stato fornito assieme all'esercizio stesso da più punti? Se si, allora lo aggiungo e invio nuovamente, altrimenti attendo la fucilata (i test).
-- Comment added by
OliverTran on 17 Oct 2003
setvbuf (???)
allora: il setvbuf va messo subito dopo la dichiarazione delle variabili, ma le variabili possono essere dichiarate sia prima che dopo il main() {} . questo influisce sul buon esito del test? (mi roderebbe perdere dei punti per un errore cosi' scemo).
grazie.
ocram (powered by crux)
-- Comment added by
MarcoValerioBarbera on 17 Oct 2003
Funzione logaritmica, cambio in corsa
Scusate volevo sapere se qualcuno di voi ha fatto un ciclo che funge da controllo sul logaritmo.
Cioè invece di implementare la funzione logartima in C si è creato un ciclo che facesse (circa) la stessa cosa...
Inoltre per i programmi in corsa. Concordo con Users.691942 del fatto che sia "antipatico" cambiarlo in corsa. Però errori ci possono essere. L'altranno ricordo che il compito cambio 2-3 volte. Speriamo che quest'anno non succeda.
-- Comment added by
MatteoLaBella on 17 Oct 2003
Re: Pseudocodice
E' sempre meglio commentare il codice.
Io però non vi penalizzo se non lo fate ... certo che se ci sono i commenti posso capire bene che cosa avete fatto.
Re: setvbuf
basta che sia eseguito
una sola volta, prima del primo output
Re: logaritmo
NON usate il logaritmo per controllare il ciclo.
-- Comment added by
AndreaSterbini on 17 Oct 2003
scanf("%d\n%d\n", &x, &y) Non funziona
Scus Prof, perchè se nella versione un "pelino"---+ difficile faccio fare la scanf in questo modo ("%d\n%d\n, &x, &y) quando faccio partire il programma mi prende si i due valori,ma poi se ne aspetta un altro, mentre funziona correttamente solo se metto scanf("%d\n%d", &x, &y), ossia senza lo \n finale?
-- Comment added by
DavidCordella on 18 Oct 2003
Re: scanf("%d\n%d\n", &x, &y) Non funziona
Dato che '%d' salta spazi, tab e accapi finchè non trova un numero, non c'e' bisogno di mettere i \n (soprattutto quello finale) usa "%d%d".
-- Comment added by
AndreaSterbini on 18 Oct 2003
Casi "ambigui"
Prof scusi ancora...nei seguenti casi (nella versione un pelino---+ difficile)come ci dobbiamo comportare?
1)Il range inserito è del tipo (per esempio) 50-51, ed il numero pensato è 50 o 51;come si deve comportare il programma?
2)Il range da Lei inserito sarà tale che max-min è almeno maggiore di 1,quindi (max-min)>=2, oppure c'è anche il caso del punto uno ed il caso in cui il range è del tipo (per esempio) 50-50 ed il numero pensato è,appunto,50?
Grazie.
-- Comment added by
DavidCordella on 18 Oct 2003
Re: Casi "ambigui" (ambigui?)
Abbiamo detto che non dovete gestire errori, quindi ogni intervallo che abbia almeno un valore è OK. (ad esempio 50,50).
Se inserisci 50-51 la primaproposta è (50---+51)/2 = 50 (divisione intera).
-- Comment added by
AndreaSterbini on 18 Oct 2003
Meglio usare "return 0" o "break"?
Nel caso la nostra risposta sia 0, cosa è meglio usare per uscire dal programma?
Grazie
-- Comment added by
SalvatoreBerti on 20 Oct 2003
Tutto con una o con due scanf?
Nel caso della versione un pelino---+ difficile i valori del minimo e del massimo vanno inseriti uno vicino all'altro(es. scanf("%d%d", &nome variabile); )oppure uno sotto l'altro(es. scanf("%d", &variabile1); scanf("%d", &variabile1); ).
Aspetto sua risposta
Grazie
-- Comment added by
NicolaMarioMarcucci on 20 Oct 2003
printf("inserisci...) ?
Ma nella "versione un pelino piu' difficile", che legge da input il minimo e il massimo, posso inserire una printf("inserisci il minimo ...ecc.) ?
O non devo scrivere proprio niente oltre al tentativo?
-- Comment added on 20 Oct 2003
Perdoni la sintassi
Perdoni la sintassi della domanda: tutto con una o con due scanf?
-- Comment added by
NicolaMarioMarcucci on 20 Oct 2003
Re: Meglio usare "return 0" o "break"?
Dipende dalla vostra implementazione:
- return 0 esce dalla funzione
- break esce dal ciclo
- exit 0 esce dal programma
Re: Tutto con una o con due scanf?
Puoi usare sia una sola scanf che due ... basta che stai attento alla stringa di formato e agli argomenti.
Re: printf("inserisci...) ?
NO prompts! (ma quante volte ve lo devo dire?
-- Comment added by
AndreaSterbini on 20 Oct 2003
vsetbuf aiuto!
il mio prog funziona perfettamente ma se aggiungo setvbuf etc... mi dice
setvbuf undeclared
NULL undeclared
_IONBF undeclared
che devo fare?
-- Comment added by
GabrieleTarantino on 21 Oct 2003
Re: vsetbuf aiuto!
hai incluso stdio.h ?
-- Comment added by
AndreaSterbini on 21 Oct 2003
Problemi invio HM
il programma l'ho fatto però non riesco ad inviarlo. mi sono iscritto però ho letto che per essere attivato devo far vedere un documento??????
help please
-- Comment added by
MatteoCiricillo on 21 Oct 2003
Re: documento
Mandamene una scansione via email oppure ci vediamo domani a lezione (venerdì no che sciopero).
-- Comment added by
AndreaSterbini on 21 Oct 2003
PROBLEMA DI IDENTIFICAZIONE:
Quando vado nella pagina per consegnare l'esercizio, dopo aver immesso tutti i miei dati(correttamente) mi dice:
ATTENZIONE: non sei autorizzato, hai dato il tuo documento al docente? Hai scritto bene il wikiname? Sei del secondo anno e non mi hai informato che ritenti?
cosa fare? grazie
-- Comment added by
LorenzoCiapetti on 21 Oct 2003
Re: PROBLEMA DI IDENTIFICAZIONE
Quasi quasi te lo scrivo in pseudocodice ...
A parte gli scherzi, mostrami un documento alla lezione di giovedì oppure mandami una scansione del documento per email che ti abilito.
-- Comment added by
AndreaSterbini on 21 Oct 2003
Uno strano errore
Salve prof, volevo chiederle una cosa: che errore è questo?
stray '\240' in program
Infatti mi sono fatto un copia e incolla del programma che è contenuto nella sua "ricevuta" di ritorno al momento dell'invio del programma.
Copio il codice in kate compilo ed ecco li l'errore.
Da quello che ho notato l'errore è nella indentatura del programma. Infatti se si fa un copia e incolla dalla ricevuta, non vengono messi i TAB come tabulazione bensi degli spazie e questi creano problemi in fase di compilazione. Ora mi domando... non è che anche quando lei compila il programma ci sarà lo stesso errore?
Inoltre lei domani ci sarà al ricevimento? Grazie
-- Comment added by
MatteoLaBella on 22 Oct 2003
io alla fine del ciclo non ho messo nessun return ecc, anche se fino a poco fa non sapevo nemmeno a che servivano o_O sono importanti per far funzionare questo prog oppure posso anche non metterlo? Tnx
-- Comment added by
DaniloDauria on 22 Oct 2003
Re: Uno strano errore
Hai mica usato il Word per copiare e incollare nella form?
Word fa cose strane ai caratteri ...
Il tuo prog compila correttamente.
Re: return
Il programma funziona anche senza return
-- Comment added by
AndreaSterbini on 22 Oct 2003
Quale documento?
Ho resettato la mia password, perché l'ho dimenticata. Ho provato a consegnare il compito, ma risulto non autorizzato, ed inoltre mi chiede se ho consegnato il documento al docente; Quale documento?
Sono un non frequentante (causa lavoro, e non causa superbia :), quindi non potrei nemmeno consegnare un documento se non via fax. Aiuto! Riuscirò a consegnare il compito prima della scadenza?
-- Comment added by
AntonioAgrestini on 23 Oct 2003
Antonio per il documento non dovresti avere problemi, si puo' anche inviare il documento via email, ma non so se via fax si, ma credo proprio che sia la stessa cosa. Inoltre per la password, non so se viene memorizzata automaticamnete oppure se deve essere fatta in manuale.
-- Answer added by
MatteoLaBella on 23 Oct 2003
Re: Quale documento?
Un qualsiasi documento di identita' va bene. Lo puoi anche scannerizzare e mandare per email (non per fax). Io abilito solo account di persone esistenti.
Se fai
ResetPassword mi devi mandare la pagina che ne risulta in modo che io la possa installare.
-- Comment added by
AndreaSterbini on 23 Oct 2003
Versione pelino più difficile
Nel mio programma (quello un pelino più difficile) se per esempio inserisco come minimo 10 e do come risposta -1 (ripetutamente) mi da come risultato 9, mentre il massimo è giusto, cioè se metto come massimo ad esempio 100 e inserisco come risposta ripetutamente 1 mi dà sempre 100. Il programma, però è giusto, funziona correttamente. Nel test questo sarà contato come errore?
-- Comment added by
GianmarcoCannella on 24 Oct 2003
Re: Versione pelino più difficile
Certamente si tratta di un errore.
-- Comment added by
AndreaSterbini on 24 Oct 2003
Re: Versione pelino piu' difficile
Ciao Gianmarco hai considerato un controllo sugli estremi dell'intervallo? nello specifico le due situazioni:
- risposta inserita "num e' minore", tentativo proposto "inizio intervallo"
- risposta "num e' maggiore", tentativo proposto "fine - 1"
penso che la soluzione del tuo pbma sia li...
(sempre che abbia capito bene qto esponi
)
penso che tu debba in qche modo fermare il ciclo per non rischiare di uscire dall'intervallo tutto dipende dalla condizione che fa da guardia al while, se arrivi a uno dei casi "delicati" ovviamente stampi il giusto tentativo, se nn lo hai gia fatto, e pur facendo lo scanf cmq imponi immediatamente dopo una condizione che nn faccia rieseguire il while...
sxo le mie indicazioni ti siano utili
-- Comment added by
LuisaDiDionisio on 24 Oct 2003
Re: vsetbuf aiuto!
Se usi windows puoi avere problemi con questa istruzione, usa il Linux ( almeno per compilare i programmi in C lo ritengo utile!) ciao
-- Comment added by
FrancescoLomonaco on 24 Oct 2003
Usare Linux
E' vero all'inizio linux è molto ostico, difficele da capire soprattutto per gli utenti window. Anch io all'inizio era difficile lavorare con linux, usavo linux solo per fare un misero GCC. Ora sto iniziando ad utilizzare per fare altre cose, e sto cercando di abbandonare window.
Io quello che ti consiglio è di passare a Linux anche perchè mi sono trovato diverse volte che C per win interpretava una cosa mentre il gcc ne interpretava un altra. Com'è possibile? Non lo so.!!!
Fidati inizia ad utilizzare linux
-- Comment added by
MatteoLaBella on 25 Oct 2003
Compilare sotto Win
Professore sono alle prime armi con la programmazione, e questo primo programma l'ho compilato con il dev-c---++.Quando lo eseguo, funziona correttamente, ma la correzione è possibile ugualmente?
Come editor ho usato iol wordpad,va bene o devo usare altro?
Per il documento,non disponendo di uno scanner, dove glielo posso far recapitare?
-- Comment added by
NicolaDonato on 25 Oct 2003
Re: Compilare sotto Win
Scusami Nicola, ma visto che sono quasi 3 settimane che vi avverto della necessità di farmi vedere un documento, me lo mostrerai alla prossima lezione e ti abiliterò in tempo per il secondo esercizio.
-- Comment added by
AndreaSterbini on 25 Oct 2003
Domanda sulla seconda versione
Professore, per quanto riguarda la seconda versione del programma , è sufficiente che all'inizio leggiamo i due limiti (inferiore e superiore) senza aggiugere prompt?
Grazie
Re: Domanda sulla seconda versione
Prompt = non passa i test.
-- Comment added by
AndreaSterbini on 25 Oct 2003
Troppo Tardi
Ragazzi è mezzanotte io ho inviato l'home work, voi lo avete fatto spero di si! Giusto ora mi sorge un grandissimo dubbio ma in qualsiasi dei casi è inutile parlarne cmq lo propongo lo stesso.
Per il prog un tantino---+ difficile, il primo dato letto è il min ed il secondo il max: ma se il min è + grande del max il ciclo nn parte, quindi dove volevo arrivare è: il prog deve uscire direttamente oppure stampare lo stesso la media e poi uscire?
grazie ed arrivederci al prossimo homework
-- Comment added by
AndreaGiannantonio on 27 Oct 2003
Provatelo pensando il numero 1
Ho notato che testando il programma con il numero da indovinare "1" da problemi... se ne ha dati anche a voi mandatemi un email.
Ciao !
-- Comment added by
AlessandroIncarnati on 27 Oct 2003
Niente errore. Ma staremo a vedere con i test del prof.
-- Comment added by
MatteoLaBella on 27 Oct 2003
Io non ho avuto problemi con l'"1".
Ah, ma il secondo homework doveva uscire venerdì o avevo letto male?
-- Comment added by
CleoniceMansillo on 27 Oct 2003
Re: Troppo Tardi
Vi ho detto diverse volte di non gestire gli errori, ovvero che l'input dei test sarà corretto. Quindi
don't panik! .
-- Comment added by
AndreaSterbini on 27 Oct 2003
Homework2?
Buongiorno professore,volevo chiederle quando sara' pronto il testo dell' homework 2.Grazie,arrivederci!
-- Comment added by
ChristianGiugliano on 27 Oct 2003
Webnotify
Christian per sapere immediatamente i cambiamenti che avvengono su alcune pagine di Programmazione 1 ti conviene scrivere alla
WebNotify in questo modo arriverà un email all'indirizzo da te inserito.
-- Answer added by
MatteoLaBella on 27 Oct 2003
Come faccio ad aggiungermi alla webnotify?
-- Comment added by
DaniloDauria on 27 Oct 2003
Re: Homework2?
Ho pubblicato una versione quasi definitiva dello
HomeWork2.
Continuiamo le domande su
DomandeHomework2.
Edita direttamente la pagina come da istruzioni.
-- Comment added by
AndreaSterbini on 27 Oct 2003
Soluzione
Ho pubblicato la
SoluzioneHomework1. I risultati dei test usciranno appena pronti.
-- Comment added by
AndreaSterbini on 27 Oct 2003
Soluzione Esercizio 1
Scusi Professore...... Ma nella soluzione del primo esercizio ha usato cose che non ha spiegato o che comunque ha spiegato dopo. Era quindi impossibile per noi fare il programma uguale al suo. E' considerato "sbagliato" un programma diverso o conta solo il risultato!?
-- Comment added by
MattiaLaudenzi on 28 Oct 2003
Re: Soluzione Esercizio 1
La mia soluzione è più generica di quanto necessario, pubblicherò anche una soluzione "minima".
Qualsiasi soluzione corretta è valida.
-- Comment added by
AndreaSterbini on 28 Oct 2003
Risposta a Mattia Laudenzi
Non ti devi preoccupare perchè il prof se vedi nelle domande di homework 1 ha sempre risposto a tutti che i casi di immissione errata non andavano consideratie le istruzioni che non ci ha spiegato non servivano per risolvere il nostro programma ma solo a lui per poterli testare in modo efficiente.
La switch non è altro che una if semplificata.
fprintf();stampa la stringa dentro una specie di buffer. se la vuoi conoscere meglio entra da riga di comando facendo man fprintf così .... capisci tutto.
-- Comment added by
DarioFiorenza on 28 Oct 2003
Re: Risposta a Mattia Laudenzi
Si, sarà più facile, però con una soluzione fatta con i comandi da noi conociuti uno può vedere se ha "ragionato" bene nell'esecuzione del programma.
-- Comment added by
MattiaLaudenzi on 29 Oct 2003
sulla soluzione del prof.
In effetti la soluzione pubblicata dal prof non mi aiuta a capire se,quanto e dove ho sbagliato o ho fatto giusto il mio homework.
Non ne potrebbe pubblicare un'altra che contiene soltanto i comandi che ci sono stati spiegati fino al giorno della consegna?
-- Comment added by
CleoniceMansillo on 29 Oct 2003
Re: sulla soluzione del prof.
Che ve ne pare della soluzione "minima"?
-- Comment added by
AndreaSterbini on 29 Oct 2003
Risultati
Quando usciranno i risultati?
-- Comment added by
CleoniceMansillo on 29 Oct 2003
Re: Risultati
Ho pubblicato i
RisultatiHomework1.
-- Comment added by
AndreaSterbini on 29 Oct 2003
file n.4
Buongiorno,
a me non e` chiaro il file n. 4 usato per i test. Ma una volta che si arriva allo zero perche` bisogna dare la possibilita` di digitare nuovamente -1?
-- Comment added by
ClaudiaCorsaletti on 30 Oct 2003
Risposte sul test 4
Salve prof e a tutti quanti, ho un grosso dubbio, nel file 4.in(che si trova nel file zippato in fondo alla pagina) si digita 9 volte '-1', e una volta 0, ora quando oll'ottavo '-1' mi da 0(zero), io credo che i valori possibili digitabili siano 0(per uscire) e---+1 per incrementare, non -1. Lei aveva detto che non ci dovevamo preoccupare degli errori, anche di quelli logici quindi.
-- Comment added by
FrancescoColanera on 30 Oct 2003
Soluzione Minima
Ok, da questa si capisce meglio! Grazie
-- Comment added by
MattiaLaudenzi on 30 Oct 2003
Re: Risposte sul test 4
Avete ragione, stasera ricalcolo i test 4 e 4-1.
-- Comment added by
AndreaSterbini on 30 Oct 2003
Re:Re:Risposte sul test 4
Scusate tanto ma a me pare giusto il non -1. Infatti la sequenza sarà questa:500 -1 249 -1 124 -1 61 -1 30 -1 14 -1 6 -1 2 -1 1 -1 0 0. Questa sequenza infatti prevede i Nove -1 ed uno 0. Dov'è l'errore contestato???
-- Comment added by
DavidCordella on 30 Oct 2003
re:
L'errore non è nell'input contenuto nel file zip, ma nell'output.Giusto???
-- Comment added by
DavidCordella on 30 Oct 2003
Trovato...
Scusate l'errore del test 4 l'ho capito....ma non capisco dove sia l'errore nel test 4.1. Ho infatti compilato l'implementazione del Professore,ed input ed output combaciano perfettamente facendo girare il test 4.1 sul programma del Professore.Dov'è l'errore???
-- Comment added by
DavidCordella on 30 Oct 2003
errata corrige (file n.4)
effettivamente la mia domanda non era giusta! Perdono!!
...cmq bella PROF!!!!!
-- Comment added by
ClaudiaCorsaletti on 31 Oct 2003
Re: Trovato
Il test 4-1 e' ottenuto dal test 4 aggiungendo due estremi generati a caso.
Faccio prima a ricalcolarlo che a guardare se c'era uno sbaglio anche li'
.
-- Comment added by
AndreaSterbini on 31 Oct 2003
Re:Re:Trovato:
E già ha ricalcocato il test 4-1???
Ed anche:se fosse sbagliato,non passerebbe il test neanche il suo programma,cosa invece che fa.O sbaglio?
-- Comment added by
DavidCordella on 31 Oct 2003
ke strano.....
salve prof, ho un problemino... ho provato il mio programmino con i file di input e output ke lei ha messo in rete.... a me l'output viene = ai suoi.......allora xke' nn ho passato manco un test
almeno se ho sbagliato mi faccia capire dove......... da solo nn ci riesco........
-- Comment added by
MicheleMariotti on 31 Oct 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