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 smile )Non sono perfetto (nè mi piacerebbe esserlo smile )Non sono perfetto (nè mi piacerebbe esserlo smile )

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

-- 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 smile

-- Comment added by DavidVulpetti on 10 Oct 2003


Forse:

spe forse ho capito smile 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? smile

-- 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 smile ) 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) confused

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

-- 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 smile 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 smile

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

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

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

  1. Volevo sapere se facevo anche il programma che testa HomeWork1 posso avere più punti o è indifferente?
  2. come si lanciano duè programmi simultaneamente in c?
  3. nell'altro programma va la stessa stringa che va inserità dopo la def. delle variabili?
  4. O il programma è solamente lo pseudo codice che ha fatto a lezione?
  5. Nel primo programma posso utilizzare strutture di controllo non fatte a lezione?
  6. La ringrazio per tanta disponibilità grazie per il cd di Linux smile

-- Comment added by DarioFiorenza on 12 Oct 2003

  1. Puoi consegnare solo una versione.
  2. Lascia perdere lanciare programmi multipli ... lo farai a Sistemi Operativi.
  3. Quale altro programma?
  4. esatto
  5. nessuno ti lega
  6. a disposizione smile

-- 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 smile

-- 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 smile

-- 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 smile 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 log10(1000) invece per il calcolo bisogna fare log2(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 frown

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

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

-- 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 smile 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 smile

-- 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 wink

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

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 smile 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 smile

-- 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 smile

-- 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.
  1. Questo comando [setvbuf(stdout, NULL, _IONBF, 0)]; l'ho messo dopo la dichiarazione/inizializzazione delle variabili [int tentativo, risp = 2;] va bene cosi?

  1. 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! wink

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 smile

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

-- 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 smile

-- Comment added by DaniloRossi on 16 Oct 2003


Mo ci provo, certo ke non ha senso sta cosa... grazie cmq!!! smile

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

  1. 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.
  2. 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 smile

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

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

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

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... wink (sempre che abbia capito bene qto esponi smile )

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


WebNotify

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.

Re: WebNotify

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' wink .

-- 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 frown 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}

<tre spazi>---+++<spazio>Titolo della domanda   "non dovete mettere <>" 
Testo della domanda
Edit | Attach | Watch | Print version | History: r204 < r203 < r202 < r201 < r200 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r204 - 2003-10-31 - MicheleMariotti






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback