Domande (e risposte) su Homework2


Senza titolo?

A lezione non è stato menzionato questo problema... vuol dire che i problemi saranno assegnati esclusivamente attraverso Twiki ed a lezione non se ne parlerà???

-- Comment added by AndreaCosentino on 18 Nov 2004


Senza titolo?

Da quel che sò se ne discuterà domani (Venerdì 18 Novembre 2004). Ciao smile

-- Comment added by MarioBove on 18 Nov 2004


sqrt()

Si può usare la funzione sqrt() della libreria math.h??

-- Comment added by AlessandroSabellico on 18 Nov 2004


Chiarificazioni

Io l'ho fatto, spero solo di non aver commesso errori grossolani. Ho provato a fare da me il test automatico e pare non ci siano problemi. Caso 0: Il programma termina Caso x < 0: Loop finche non viene inserito un numero positivo. Caso 1 <= x => 10000: Stampare 0 se il num non è primo e 1 se lo è, in ogni caso chiedere di nuovo l'input. Caso x > 10000: Chiedere di nuovo l'input.

Ho capito qualcosa male per caso?

-- Comment added by RiccardoProietti on 18 Nov 2004


Altre info

Ah chiaramente se x < 0, output "-1" e input nuovamente. Nella pagina principale c'è una nota bianca:

"IMPORTANTE non far produrre al programma altri output oltre a quelli richiesti. inserire l'istruzione: "

Quale istruzione ? Non c'è nulla...

-- Comment added by RiccardoProietti on 18 Nov 2004


Output

Anche io come RiccardoProietti ho fatto il programma, solamente che dal testo dell'esercizio non spiega come stampare tutto l'output, nel senso: Come stampo tutta la tabella di numeri primi da 1 a 10000 ? Và bene se lascio uno spazio tra l'uno e l'altro o vuole un \n per ogni numero? In oltre quando richiedo in input un intero il numero da stampare (1,0 o -1) lo vuole sulla riga immediatamente sotto, affianco al numero di input o ...? Attendo con ansia una risposta in modo da poter inviare l'esercizio. Grazie, saluti.

-- Comment added by MarioBove on 19 Nov 2004


x MarioBove

Non devi stampare tutta la tabella... ti serve solo per il confronto con l'input che dai... A me elimina il primo multiplo del numero ma i successivi non riesco a renderli 0. Mi manca qualcosa, ma non riesco a capire che cosa...

-- Comment added by AndreaCosentino on 19 Nov 2004


sii

ce l'ho fatta

-- Comment added by GianlorenzoBruno on 19 Nov 2004


x>10000

E se il numero da controllare è maggiore di 10000, come deve comportarsi il programma?

-- Comment added by StefanoConte on 19 Nov 2004


Senza titolo?

Come mai alcuni programmi scritti con una compilatore per windows nella compilazione con linux danno errori sulle variabili????

-- Comment added by AlessioSalerno on 19 Nov 2004


x AndreaCosentino

Oggi a lezione il professore ha detto che si deve stampare tutta la tabella dei numeri primi e poi richiedere un input ed eseguire quei controlli se è 0 stop se è compreso tra 1 e 10000 verificare se è numero primo se è maggiore di 10000 non si fà nulla se numero negativo si stampa -1 . Per il tuo problema che riesci ad azzerare solo il primo numero è "credo" perchè devi fare un ciclo! smile Se hai bisogno cerco di darti una mano... Ciao

-- Comment added by MarioBove on 19 Nov 2004


X MarioBove

Che vuol dire che se il numero è maggiore di 10000 non si fa nulla??? Come si deve comportare il programma se il numero è piu' grande di 10000,mica posso dire al programma "non si fa nulla"!!!

-- Comment added by StefanoConte on 19 Nov 2004


impostare tutto l'array ad 1

L'unico modo x impostare tutti gli elementi di un array di int ad 1 è con un ciclo for vero?

-- Comment added by AlessandroSabellico on 19 Nov 2004


X AlessioSalerno

E' ovvio che un programma scritto in ambiente Windows non compila in ambiente Unix e dipende dal fatto che la formattazione di un file di testo scritto sotto windows è diversa da quella dello stesso testo scritto sotto unix. L'unica cosa che puoi fare è riscrivere il programma smile

-- Comment added by StefanoConte on 19 Nov 2004


re: caso x > 10000

semplicemente il caso di x > 10000 nn sarà preso in considerazione dai test automatici, in altre parole nn verrà effettuata alcuna prova con x > 10000.. Ciao

-- Comment added by AlessandroSabellico on 19 Nov 2004


caso x>10000
ok grazie mille!!! wink

-- Comment added by StefanoConte on 19 Nov 2004


x StefanoConte, "formattazione" (questa sconosciuta...)

Ma che stai a di'? O_o
cioè, Linux non supporta lo standard ANSI???

-- Comment added by AlbertoLaRocca on 19 Nov 2004


Un po' di chiarezza sull'output

Cito dal testo dell'homework: se l'intero è compreso tra 1 e 10000, stampa 1 se il numero è primo, 0 altrimenti e poi aspetta in input un nuovo numero

Interpreto questa riga come: a. In entrambi i casi accetto un nuovo input b. Accetto un nuovo input solo se 0? (il programma esce ad se il numero è primo)

-- Comment added by DanieleBernardi on 19 Nov 2004


Un po' di chiarezza sull'output

Da quel che ho capito io basta che crei un ciclo che richieda un input e si fermi solo quando il numero inserito è 0.
Se è compreso tra 1 e 10000 stampa 1 se è primo 0 se non lo è, se è negativo stampa -1 se è maggiore di 10000 non fà altro che attendere un altro input finchè l'input inserito non rientri in una delle condizioni elencate prima.
Se così non fosse spero che un professore ci illumini!
Anche perchè non è chiara questa cosa della stampa dei numeri primi da 1 a 10000, visto che oggi a lezione il professore aveva detto di fare prima la stampa e poi la richiesta di un input....
Che tocca fare?
Grazie, ciao!

-- Comment added by MarioBove on 19 Nov 2004


x StefanoConte

Ma sei sicuro di ciò che stai dicendo? ;)
Prova a scrivere un file con blocconote in windows ed ad aprirlo con un editor di testo di linux....
La tua affermazione sarebbe vera se si utilizzasse un programma come word che utilizza dei file .doc e non .txt questi hanno un'altra "formattazione" e ovviamente non vengono letti correttamente da texteditor semplici, ma se scrivi un qualsiasi testo con blocconote (windows) deve essere per forza letto da qualsiasi texteditor perchè utilizza lo stardard ASCII!

Ciao smile

-- Comment added by MarioBove on 20 Nov 2004


Un po' di chiarezza sull'output

Ancora, credo che sia scontato che dopo ogni output debba essere aggiunto uno \n... Da quanto ricordo, l'anno scorso ci veniva segnalato molto dettagliatamente quello che doveva essere l'input e soprattutto quello che doveva essere l'output. Per alcuni homework, tra l'altro, venivano addirittura riportate delle 'screenshot'! Non si può ripristinare la tradizione? smile

-- Comment added by DanieleBernardi on 20 Nov 2004


Un po' di chiarezza sull'output
In effetti quello che dice DanieleBernardi sarebbe la cosa ottimale! Anche perchè io sono ancora col dobbio: stampare o no la tabella dei numeri primi tra 1 e 10000 ? Perchè la mattina all'università ci viene detto di stamparla e poi su internet questo "compito" non viene richiesto?

-- Comment added by MarioBove on 20 Nov 2004


X MarioBove

Non so bene che ciclo utilizzare, li ho provati un po' tutti... Credo di far errori quanto incremento l'indice di n per eliminare i multipli di n... Avevo provato con un while, ma non va, mi va in loop infinito... con il for non so...

-- Comment added by AndreaCosentino on 20 Nov 2004


X AlessioSalerno

i file txt sono letti ugualmente sia sotto linux che sotto windows... certo se parli di Word,Kword ecc. è normale che ci siano dei problemi nel passaggio da un SO all'altro...

-- Comment added by AndreaCosentino on 20 Nov 2004


Formattazione Linux/Windows

Molte storie, forse troppe per un problema cosi semplice. Riguardo la "formattazione" realmente esiste un problema, tuttavia basta poco per risolverlo. Un file di testo con la formattazione di Linux si puo aprire regolarmente con l'edit di dos dal quale salvarlo per renderlo leggibile e ordinato come l'originale. Al contario, un file di testo creato su Windows non riscontrerà problemi su Linux. Se qualcuno di voi non volesse utilizzare l'edit per salvare, potrà anche scaricare EditPadPro per Windows che consente di leggere files di diversi format.

-- Comment added by RiccardoProietti on 20 Nov 2004


Formattazione Linux/Windows

Ragazzi ma perchè perdete tempo per un problema così inutile, la consegna dell'esercizio prevede che esso sia incollato sulla pagina web perciò, che siate sotto ambiente linux o windows la cosa è del ttt indifferente !!!---+ttosto cercate di farlo girare !!!

-- Comment added by GiuseppeDiFederico on 20 Nov 2004


x AndreaCosentino

Un ciclo vale l'altro, comunque, devi avere 2 variabili, dove in 1 hai il numero del quale vuoi cancellare tutti i suoi multipli nell'altra fai la somma. Esempio: n è uguale al numero per il quale dovrai cancellare tutti i suoi multipli.

while( multipli < nummax) { multipli = multipli---+ n; array[multipli-1] = 0; }


ovviamente dovrai fare 2 cicli annidati (o almeno io ho risolto così il problema) per scorrere l'array e trovarti tutti i numeri da annullare.
spero di essermi spiegato bene....
ciao

-- Comment added by MarioBove on 20 Nov 2004


x MarioBove

Grazie Mario, ma finalmente dopo lunghi sforzi ci sono riuscito da solo, fortunamente... Mi eliminava solo il primo multiplo, perchè nel for che avevo usato non incrementavo un secondo indice con l'i iniziale... non so se mi sono spiegato... E' difficile proprio spiegare a parole un programma o un problema derivante da esso stavo notando... Ora mi è venuto il dubbio se devo stampare o no la tabella: sul sito non dice niente, però Salvo lo ha detto a lezione... Boh!

-- Comment added by AndreaCosentino on 20 Nov 2004


Infatti!

Come dicevo io Salvo lo disse a lezione di stamparla, ma sul sito non c'è scritto nulla in merito, ed in realtà non è scritto nemmeno molto chiaramente come vuole l'output quando uno inserisce un numero intero in input..... Speriamo che prima del 30 Novembre un professore ci dia una risposta! ciao

-- Comment added by MarioBove on 20 Nov 2004


Per chi ha finito il programma...

Ragazzi, mi servirebbero i numeri primi da 9901 a 10000, per testare il programma, la prudenza non è mai troppa eheh

-- Comment added by CristianCarbone on 20 Nov 2004


x CristianCarbone

ecco:
9001 9007 9011 9013 9029 9041 9043 9049 9059 9067 9091 9103 9109 9127 9133 9137 9151 9157 9161 9173 9181 9187 9199 9203 9209 9221 9227 9239 9241 9257 9277 9281 9283 9293 9311 93 19 9323 9337 9341 9343 9349 9371 9377 9391 9397 9403 9413 9419 9421 9431 9433 9437 9439 9461 9463 9467 9473 9479 9491 9497 9511 9521 9533 9539 9547 9551 9587 9601 9613 9619 9623 9629 9631 9643 9649 96 61 9677 9679 9689 9697 9719 9721 9733 9739 9743 9749 9767 9769 9781 9787 9791 9803 9811 9817 9829 9833 9839 9851 9857 9859 9871 9883 9887 9901 9907 9923 9929 9931 9941 9949 9967 9973

ciao
P.S. aggiornata thx -- Comment added by MarioBove on 20 Nov 2004


Problema

il programma funziona benissimo, solo che quando inserisco 0, al posto di uscire subito, mi stampa un altro 0 e poi esce... Come posso ovviare a questo problema?

-- Comment added by AndreaCosentino on 20 Nov 2004


Problema

Potresti usare un if che controlla se il numero di input è uno 0 allora fermi tutto con un break . Altrimenti inserirlo nella condizione del ciclo con un and. Ciao smile

-- Comment added by MarioBove on 20 Nov 2004


link

posto un link che puo' interessare a molti: http://wims.unice.fr/wims/it_tool~number~primes.it.html invito tutti a rispondere alle domande solo se siete sicuri della risposta, se voi sbagliate, fate sbagliare anche un altro utente.

-- Comment added by CristianCarbone on 20 Nov 2004


CASO x>10000

Come ci si deve comportare nel caso in cui l'input sia maggiore di 10000? Salvo a lezione mi sembra che abbia detto che in quel caso il programma deve uscire e non attendere un nuovo input. Chi è che ha capito chiaramente che bisogna fare?? Io l'ho programmato per uscire come con lo 0.Ciao

-- Comment added by LucaOlivieri on 20 Nov 2004


Senza titolo?

Comunque riguardo al fatto della compilazione il mio problema è che in windows non compaiono errori mentre lo stesso programma su linux si come mai???? Questo problema si è verificato anche ad altre persone

-- Comment added by AlessioSalerno on 20 Nov 2004


MarioBove X CristianCarbone

La lista dei numeri primi postata mi sembra errata.. o no? per esempio 9005 no è divisibile solo per 9005 e per 1 ma anche per 5. Risultato=1801 E via via scorrendo la lista se ne trovano altri! Ricontrollate i vosti programmi!!

-- Comment added by GianmauroAresti on 20 Nov 2004


link

GianmauroAresti ho postato il link dove ci sono i numeri primi...

-- Comment added by CristianCarbone on 20 Nov 2004


Non lo volevo dire...

Eh, anch'io avevo notato l'insattezza della lista postata. Per correttezza non sono intervenuto, questa area non dovremmo trasformarla in una sorta di forum. "DomandeHomeWork02" non Help Online per la risoluzione degli esercizi.

-- Comment added by RiccardoProietti on 21 Nov 2004


x GianmauroAresti

Grazie! Avevo fatto un errore stupidissimo in una condizione cacchio! grazie mi hai salvato wink Devo sempre controllare 20000 i programmi. Comunque una domanda.... Si possono commentare le righe di codice oppure l'IA ha problemi? Grazie, ciao.

-- Comment added by MarioBove on 21 Nov 2004


10000

se l'indice dell'array va da 0 a 9999, come ci si comporta con il 10000?

-- Comment added by AndreaCosentino on 21 Nov 2004


Dove sono finiti i professori???

Ancora nessun professore si è deciso a chiarire la faccenda della stampa di questa benedetta tabella.Il mio programma la genera ma non la stampa, va bene così?O devo farle stampare?Bho! Dove sono finiti i professori???

-- Comment added by StefanoConte on 21 Nov 2004


Re: Dove sono finiti i professori???

no nn si deve stampare la tabella. l'array serve solo x sapere se l'intero è primo o no..

-- Comment added by AlessandroSabellico on 21 Nov 2004


Dove è mario bove?

Mario sono ciro ma questa tabella si deve stampare o no? Ma a te è venuto questo esercizio?

-- Comment added by CiroIavazzo on 21 Nov 2004


X CiroIavazzo

Alla fine ci sono riuscito, solo che non sò se dobbiamo stampare o meno la tabella con i numeri primi... Il professore all'università disse di si... qui dicono di no... Attendiamo e vediamo. Ciao

-- Comment added by MarioBove on 21 Nov 2004


x AndreaCosentino

L'index dell'array va da 0 a 9999, ma i numeri contenuti devono andare da 1 a 10000, perciò ogni entry nell'array non rappresenta il numero indicato dal suo index, ma quello indicato dall'index più uno; cioè, per accedere al numero 10 devi fare array[9], per accedere all'1 devi fare array[0], eccetera. Altrimenti se vuoi evitare questa complicazione puoi anche dichiarare l'array con 10001 locazioni, così semplicemente la locazione 0 rimarrà inutilizzata. wink

-- Comment added by AlbertoLaRocca on 22 Nov 2004


Giusto?

correggetemi se sbaglio, creiamo un array, ponisamo tutti i suoi elementi ad uno, poi ci calcoliamo i numeri primi e nei suoi corrispondenti array gli mettiamo lo 0, poi riceviamo in input il numero , controlliamo nella tabella e se nell'array è contenuto 1 è composto e lo stampiamo, se è contenuto 0 è primo e lo stampiamo! giusto?

-- Comment added by AntonioFelitti on 22 Nov 2004


Giusto?

Non esattamente, è il contrario.... Se è primo stampi 1 se è composto stampi 0 se è negativo stampi -1 e se è 0 esci dal programma. ciao

-- Comment added by MarioBove on 22 Nov 2004


composto??

che vuol dire composto ?

-- Comment added by SimoneDiCola on 22 Nov 2004


composto??

che non è primo... wink

-- Comment added by AlbertoLaRocca on 22 Nov 2004


Senza titolo?

Se il valore è maggiore di 10000 il prog che deve fare? l'output lo devo mandare a capo o va bene tutto appiccicato?cioè l'output è così: 1 12 14 0 oppure 1 1 4 0

-- Comment added by AndreaMoro on 23 Nov 2004


Senza titolo?

Da quel che si sà (visto che per ora nessun professore ha risposto) è che al momento dei test non verranno presi in considerazione numeri > di 10000. Comunque io ho messo nel mio programma un ciclo che esce solo con lo 0 , quindi nel caso in cui si inserisca un numero maggiore di 10000 questo non farebbe nulla e resterebbe in attesa di un altor numero. Ciao

-- Comment added by MarioBove on 23 Nov 2004


Caso n>10000

Effettivamente la traccia non era chiara nel caso n>10000: in questo caso il programma deve STAMPARE -1 e chiedere un nuovo input come nel caso negativo. Chi avesse sottomesso gia' un programma che non si comporti così è pregato di risottomettere l'esercizio. A beneficio di tutti ricordo che una consegna successiva SOVRASCRIVE una precedente.

-- Comment added by IvanoSalvo on 23 Nov 2004


La tabella NON va stampata

E anzi attenzione a tutti gli output!!!! mettete solo printf come segue: printf("%d\n", nome_variabile);

-- Comment added by IvanoSalvo on 23 Nov 2004


Caso n>10000

e te pareva: lo devo rispedire -_-'

-- Comment added by AlbertoLaRocca on 23 Nov 2004


Come faccio?

Non riesco a consegnare, la pagina di consegna non funziona; che fo'?

-- Comment added by AlbertoLaRocca on 23 Nov 2004


Come Faccio

Attendi!!!

-- Comment added by DavidTaboada on 23 Nov 2004


Come Faccio

Grazie per il consiglio, anch'io sono sempre per le soluzioni ad alta tecnologia, proprio come Scavolini e Lorella Cuccarini; tuttavia mi sorge un dubbio: cosa attendo, Babbo Natale?

-- Comment added by AlbertoLaRocca on 24 Nov 2004


Come Faccio

A differenza delle cucine Scavolini, per poter utilizzare la pagina di scrittura occorre essere stati abilitati in scrittura da un prof, mostrandogli un documento di identità valido. Potrebbe trascorrere qualche giorno finche' venga completata la registrazione: se quindi hai effettuato la registrazione da poco aspetta, altrimenti insegui un prof e mostragli il tuo documento.

-- Comment added by DanieleBernardi on 24 Nov 2004


Caledario:aggiorniamolo

-- Comment added by StefanoConte on 24 Nov 2004


Lo zero

A 10000 devo stampare -1 in quanto il vettore arriva effettivamente fino a 9999 ? Dico bene? qualcuno confermi o smentisca perchè ho finito e mi manca da sistemare solo questa piccola caxxata

-- Comment added by GiuseppeDiFederico on 24 Nov 2004


Una domanda

io del programma non ci ho capito una mazza: abituato a creare programmi di gestione di file mi trovo spiazzato a fare programmi cosi' idioti. Qualcuno puo' aiutarmi??(STUPIDO)

-- Comment added by SimoneJack on 24 Nov 2004


Una domanda

Devi generare numeri primi da 1 a 10000 così come Eratostene, senza computer, riuscì a fare. Successivamente, il tuo programma riceverà in input un intero: regolati secondo quanto è scritto nel testo dell'esercizio.
Realizzare il programma è molto semplice e, oltre i vettori e un po' di pazienza, non richiede altro. Se vuoi informazioni su Eratostene e sul suo algoritmo ti basta una ricerca, che so, su google.

-- Comment added by DanieleBernardi on 24 Nov 2004


Senza titolo?

ma che vuol dire tutto questo? L'unica maniera di far sapere al computer che quello che inserisco e' un numero primo devo usare per forza il modulo altrimenti non lo capira' mai. Io ho provato ad usare il modulo ma niente. Sarebbe stato molto melgio un esercizio che calcola il fattoriale con la serie di fibonacci o un bell'ordinamento di array.Non ha senso questo esrecizio. Io spero che Salvo ci fara' vedere come fare altrimenti sara' una tragedia

-- Comment added by SimoneJack on 24 Nov 2004


.....SimoneJack

Perchè tiri in ballo fibonacci, vabbè....ma scusa non mi sembra tanto difficile la spiegazione dell'esercizio....io ci son più o meno riuscito, se non fosse che devo ancora inserire sto -1, che come l'ho fatto la prima posizione del vettore, mi rimane si a 1, ma non viene mai letta e a 10000 non sa che leggere...ma questo è il minimo.... la spiegazione sul sito è più che decente....

ma quale modulo....il etodo che devi usare è quello di eratostene.....altrimenti che caspita te lo intitolava a fare Crivello di Eratostene.???? cominci da 2, quindi cancelli 4,6,8,10 fino alla fine...poi continui 3....cancelli 6, 9,12, 15...

4...è già stato cancellato

5....cancelli 10(chè ègià stato cancelato ma mettere 0 al posto di 0 non cambia),15,20(idem)

6....già cancellato e così via-----

Che ti devo dire se non riesci a fare questi magari ti rifai dopo dove sei bravo....alla gestione dei files vero? Magari gli altri non lo sono...

-- Comment added by DavidTaboada on 24 Nov 2004


x DanieleBernardi

La storia di Scavolini e Lorella Cuccarini era solo un piccolo delirio, in realtà il problema era proprio della pagina scrausa che non funzionava, adesso funzia. P.S.: non credo che Eratostene col suo crivello fosse riuscito a trovare tutti i numeri primi da 1 a 10000...

-- Comment added by AlbertoLaRocca on 24 Nov 2004


Aiutooooo

Allora...ho scritto il mio bel programmino....lo compilo e nn mi da alcun errore nè warning... poi se lo avvio mi scrive sto schifio qui...

Segmentation Fault (core dumped)

e mi crea tralaltro un file di nome core nella cartella mia... Ma che accidenti ho creato? un mostro?

ma soprattutto...ho provato a modificare la grandezza dell'array a 100....e guarda un po'....funziona alla perfezione! qualcuno mi sa aiutare?

-- Comment added by FedericoFranzoni on 24 Nov 2004


x SimoneJack

Fibonacci? Ok, hai fatto... lo sboooroooone... adesso fammi un programma che trova tutti i numeri primi da 1 a 10000 utilizzando il modulo, Fibonacci (questo sconosciuto), e che li salva su un file che si chiama "PTIPM.txt"*.

* "PTIPM" = "Programma Troppo Idiota Per Me" asd.

-- Comment added by AlbertoLaRocca on 24 Nov 2004


Federico Franzoni,

L'errore che hai ottenuto significa che il tuo programma tenta di accedere ad un'area di memoria al di fuori di quella che gli è stata assegnata, e in modalità protetta chiaramente non si può fare. L'errore è evidente: l'array da te creato è troppo piccolo, oppure l'algoritmo che usi è errato perché finisce per leggere/scrivere locazioni che non stanno nell'array; difatti se ingrandisci l'array diventa tutto legale. Se usi un IDE fai il debug e cerca di scoprire quand'è che il programma accede all'array con un index "out of bound".

-- Comment added by AlbertoLaRocca on 24 Nov 2004


Difficile ? ma come state

Ragazzi pensate che questo programma sia impossibile? Allora lasciate perdere programmazione e datevi alla filosofia!! Un programma su Fibronacci? Ma come fà il professore a darci un programma di 5 righe di codice che nn richiedono ragionamento alcuno e che tra parentesi lo trovi sul libro in ttt le salse? Credimi tra un po gli homework diventeranno davvero difficili (basta che guardi quelli dell'anno scorso sul sito) !!non tiriamo su bandiera bianca troppo presto!!!

-- Comment added by GiuseppeDiFederico on 24 Nov 2004


Re: Difficile ? ma come state

Non mi sembra che ci sia qualcuno abbia alzato bandiera bianca, le domande....richieste di aiuto ci sono sempre....se mai c'è stato uno che smerda*a questi esercizi e che voleva la gestione di files(non dico chi wink ) Mi sembra normale che in molti comincino ad avere problemi....in questo esercizio l'unico problema che vedo è un pochino di logica per fare un piccolo ciclo.... ma appunto mettetevi con carta e penna non subito al pc a provare a compilare.

-- Comment added by DavidTaboada on 24 Nov 2004


x AlbertoLaRocca e altri piccoli OT

Sì sì, l'avevo capito il piccolo delirio :)
E poi, diciamocela tutta, una volta che uno partorisce il suo bell'algoritmo se ne va in giro col suo crivello fino a tarda notte! (altro piccolo delirio :-))
Effettivamente questo esercizio è interessante e soprattutto permette di concentrarsi più sull'algoritmo in sé che sulla codifica... Soprattutto, se continuiamo a parlare di gestione file va a finire che il prof ce lo assegnerà per uno dei prossimi homework smile

-- Comment added by DanieleBernardi on 24 Nov 2004


Considerazioni

Differentemente rispetto ad altre esercitazioni, credo sia fondamentamentale acquisire autonomamente schemi logici a livello mentale. Tali schemi nel caso della gestione dei files vengono prefissati lasciando al programmatore poco lavoro di risoluzione del problema. Al secondo homework di un corso tra i primi di un percorso piuttosto difficile, non si puo dire "è difficile". Se realmente lo fosse, bisognerebbe provvedere a colmare le proprie lacune. E' un po come logica... le definizioni sono chiare, come per tutti penso siano chiare le spiegazioni delle variabili, array, puntatori a livello concettuale.

-- Comment added by RiccardoProietti on 24 Nov 2004


Vari controlli dopo aver creato il crivello di eratostene

Volevo sapere se i controlli vanno fatti sul crivello? o ci basta una semplice if(...) {} else ?

-- Comment added by DarioFiorenza on 25 Nov 2004


Tra un po' gli homeworks diventeranno difficili? ma come stai

ho visto gli homeworks dell'anno scorso: ma veramente ti sembravano difficili? vuoi che te lo dico io un bel programma difficile?

-- Comment added by AlbertoLaRocca on 25 Nov 2004


-- Comment added by AndreaBalzi on 25 Nov 2004


Doh!

-- Comment added by AndreaBalzi on 25 Nov 2004


Presunzione

Alcune cose sono difficili perchè non riusciamo a concepire quanto siano facili. Semplicemente si focalizza l'attenzione sulla difficoltà e non sul problema. In ogni caso, ritengo sia poco rispettoso dare giudizi senza cognizione di causa. Se non avessi esperienze di programmazione passata sarebbe stato difficile un approccio a un corso del genere senza la familiarità che molti devono ancora acquisire.

-- Comment added by RiccardoProietti on 25 Nov 2004


Ma Scusate!

Ma vi rendete Conto che si sta parlando ancora del primo cavolo di corso di programmazione, cosa pensate di diventare programmatori per un'impresa già a gennaio?

-- Comment added by DavidTaboada on 25 Nov 2004


Re: Presunzione

Ammazza che filosofo!
*grat grat*

-- Comment added by AlbertoLaRocca on 25 Nov 2004


Lavorare in una ditta

... Basta imparare il php per lavorare in una piccola ditta, compratevi il libro e imparate il php in 10 giorni d'impegno. Penso non siano questi i vostri obiettivi no ? Oggi una software house cerca competenze extra al di la di una semplice laurea, flessibilità nel lavoro e abilità rare non acquisibili tramite lo studio. Alcune ho sentito, verificano gli anni impiegati per laurearsi.

-- Comment added by RiccardoProietti on 25 Nov 2004


Lavorare in una ditta

allora allora allora:
1) non basta imparare il php per lavorare in una piccola ditta, non di questi tempi, a meno che non sei disposto a farlo gratis
2) non è detto che questi non siano i nostri obiettivi: qualcuno dopo la laurea potrebbe benissimo cercare dei lavori in cui si occupa di programmazione web e, nello specifico, potrebbe preferire la programmazione in php
3) oggi le ditte non cercano un bel nulla al di là della "semplice" (mmah!) laurea: una buona laurea perfettamente in corso e col massimo dei voti ti apre tutte le porte del mondo del lavoro (o quasi)
4) quali sarebbero mai queste abilità rare non acquisibili tramite lo studio? facci un esempio...
5) qualsiasi azienda verifica gli anni impiegati per laurearsi: se hai conseguito una laurea quinquennale in 5 anni precisi col massimo dei voti vengono loro a cercarti, sennò se l'hai conseguita in 10 anni e hai ottenuto 90 su 110 non ti guardano neanche, è meglio fare l'idraulico (e non è uno scherzo: gli idraulici in genere guadagnano di più di certi tipi di ingegneri).

-- Comment added by AlbertoLaRocca on 26 Nov 2004


EXIT CODE di GDB

Sapete per caso dove reperire una lista generica degli "exit code" generati dal debugger gdb, e del significato relativo? Grazie anticipatamente per la collaborazione

-- Comment added by MarcoDodi on 26 Nov 2004


----

USATE QUESTO FORUM PER IL SUO SCOPO

USATE QUESTO FORUM PER IL REALE SCOPO PER CUI E' STATO CREATO CIOE' PARLARE E DISCUTRE DELL'HOMEWORK2 NON DI ALTRO

CIAO

-- Comment added by FrancescoLatorre on 26 Nov 2004


D'accordo,

era esattamente questa la mia intenzione.

-- Comment added by AlbertoLaRocca on 26 Nov 2004


Torniamo al compito

ragazzi ma quell' "inserire l'istruzione :" che si legge nella pagina del compito a che istruzione si riferisce???? qualcuno l'ha capito??

-- Comment added by Claudio on 26 Nov 2004


Che ve ne pare?

ragazzi secondo voi questo output è corretto? rispecchia quello che chiede l'esercizio? in particolare posso mettere i \n o non servono? qualche prof o assistente può dissipare questo dubbio?
[cla@localhost c]$ ./eratostene
-9
-1
10000
0
10001
-1
22
0
11
1
0
[cla@localhost c]$
-- Comment added by Claudio on 26 Nov 2004


Re: Che ve ne pare!

per i numeri che hai inserito gli output sono giusti, si spera che sia buono anche per gli altri certo!

-- Comment added by DavidTaboada on 26 Nov 2004


Che ve ne pare!
che i numeri che stampa siano giusti e che l'output sia giusto anke per altri nn c'e dubbio il fatto è sua maestà il correttore automatico vuole l'ouputp scritto per righe?

in fondo credo che la correzione avvenga scrivendo tipo: echo 10\n11\n-5\n | ./eratostene > eratostene.result per poi leggere riga per riga il file generato... Vi pare giusto? Non è che qualche professore ci da qualche specifica in più sul programma che corregge i risulatai ? (tipo dare i sorgenti nn sarebbe una cattiva idea)

-- Comment added by Claudio on 26 Nov 2004


x Claudio

l'output come numeri mi sembra che vada bene, ma credo che devi per forza mettere i newlines, perché l'output secondo me deve coincidere carattere per carattere con quello preparato per il test automatico. io i formati delle printf li ho fatti tutti così: "%d\n".

per quanto riguarda la dicitura "inserire l'istruzione:", penso che la pagina sia incompleta, forse il prof voleva dire che dobbiamo inserire la setvbuf, come nei test degli anni precedenti; prof?

-- Comment added by AlbertoLaRocca on 27 Nov 2004


ho fatto il "core" del programma

non mi è chiaro molto bene questo:

Input Il vostro programma riceve in input una sequenza di numeri interi chiusa da uno zero;

cosa vuol dire "chiuso da uno zero" ? che se incontro "0" si ferma? ad esempio con un:

if ( ( a= getchar()) == '0' ){ facciofermarelinput(); }

oppure è stato spiegato male e devo semplicemente usare robba di sto tipo:

scanf("%d", &var);

-- Comment added by ValerioColtre on 27 Nov 2004


aggiungo..

mi unisco alla richiesta di AlbertoLaRocca, anche riguardo l'output...

per ora ho usato lo: scanf("%d",&var); // che mi sembrava piu logico

e per l'output invece NON ho usato il newline ( vuol dire che produco output del tipo: -1-1-10 || -1-1-11 )

cmq aspetto delucidazioni prima di consegnare... :|

-- Comment added by ValerioColtre on 27 Nov 2004


x ValerioColtre

Allora, per la prima domanda significa, che loro testeranno il tuo programma con un file nel quale saranno inseriti una serie (es. di serie: 5 8 9 7 4 1 2 5 6 1 0) chiusa da uno 0.
Per quanto riguarda la seconda domanda l'output del tuo porgramma deve essere solo il numero da stampare ed ogni numero deve essere su una sola riga quindi devi usare :
printf("%d\n",n);
ciao

-- Comment added by MarioBove on 27 Nov 2004


mmm

non mi sembra molto logico.. ma se cosi deve essere fatto... cosi lo farò!

il punto è che ho fatto un programma che calcola i numeri primi da 1 a 10000 e poi per provarlo non possono essere immessi numeri come "1003" oppure "5670", perche c'è lo "0".

boh, spero tu sia sicuro di quello che mi dici smile

ti saluto!

-- Comment added by ValerioColtre on 28 Nov 2004


Senza titolo?

non hai capito......
Una serie di numeri è una serie di numeri....
Quando tu testi il tuo programma e immetti una serie di numeri è la stessa cosa.
Vuol dire:
1 INVIO
187 INVIO
34064 INVIO
4730 INVIO
-433 INVIO
0 INVIO

Non centra nulla se c'è uno 0 nel numero che ti inserisce, lo 0 finale stà ad indicare che la sequenza di numeri che mandano al tuo programma terminerà con uno zero, come nell'esempio che ti ho fatto sopra....
Mi sono spiegato?

-- Comment added by MarioBove on 28 Nov 2004


Senza titolo?

oh.. si smile ora meravigliosamente

c'è una bella differenza tra quello che hai detto ora e quello che hai detto prima ^^ cmq grazie della delucidazione

-- Comment added by ValerioColtre on 28 Nov 2004


Non ho capito una cosa.

Ma il Crivello di Eratostene in questo programma a cosa ci serve usarlo? Mi spiego meglio. Noi in input diamo un numero tramite lo scanf ok? Da come dice il testo il programma deve fare solamente un test nel caso il numero sia primo o no e nel caso in cui sia negativo o maggiore di 10000. Ecco quindi il Crivello di Eratosten dov'è che lo usiamo? Dov'è che usiamo quel procedimento per il quale si cancellano tutti i multipli dato che devo fare solo dei semplici controlli sull'input che io do? Grazie

-- Comment added by EmanueleGallo on 28 Nov 2004


Non ho capito una cosa.

il crivello di Eratostene per identificare i numeri primi, prima dell'input dell'utente...mi spiego con un esempio: 1^fase)creazione dell'array e inizializzazione al valore 1 per tutte le celle 2^fase)azzeramento del valore delle celle che hanno come indice un numero primo (crivello di Eratostene) 3^fase)input dell'utente 4^fase)output del programma (0,1 o -1) Ovviamente questo metodo per scovare i numeri primi non è l'unico ma sicuramente il più facile per valori piccoli come quelli che dobbiamo usare noi!

-- Comment added by LorenzoMariaGinepra on 28 Nov 2004


Non ho capito una cosa
ok, ma la seconda fase è imprecisa: dal momento che le locazioni dell'array sono zero-based (vanno da 0 a 9999) mentre l'intervallo di numeri da analizzare va da 1 a 10000, bisogna scalare tutto di 1, quindi non bisogna azzerare lo slot che ha per indice un numero primo, ma quello che ha per indice un numero primo meno uno. in alternativa si può dichiarare un array con una locazione in più (10001 in totale), in maniera tale che la locazione 0 la si può lasciare inutilizzata, e si può lavorare normalmente su tutte le altre.

-- Comment added by AlbertoLaRocca on 28 Nov 2004


Senza titolo?

Io ho pensato di svilupparlo nel seguente modo...per faovre ditemi se è un'idea intelligente o fallimentare.

Nel main dichiaro un array di dimensioni SIZE definite mediante una define. Invoco una funzione chiamata inizializza che mi inizzializza tutti gli elementi del vettore ad 1

Poi chiamo una funzione che mi elimina tutti i multipli di 2 (vede se il numero%2 =0 allora lo elimina) Poi faccio la stessa cosa con una funzione che elimina tutti i multipli di 3 chiamo una funzione che elimina tutti i multipli di 5 e infine chiamo una funzione che elimina tutti i multipli di 7 e così dovrei aver trovato i numeri primi....

Giusto?

-- Comment added by AndreaNobili on 28 Nov 2004


Senza titolo?

Allora dovrei creare una funzione diciamo Crivello di Eratostene alla quale passo un parametro (che sarebbe l'input che do io) giusto?

-- Comment added by EmanueleGallo on 28 Nov 2004


X Andrea Nobili

Si---+ o meno credo che questa sia la strategia che abbiamo usato quasi ttt e ti posso subito dire che è giusta, per eliminare credo che intendi dire porre a 0 il corrispettivo elemento all'interno del vettore. Ti sugerisco anche di nn fare una funzione per inizializzare, perchè se ci pensi bene alla fine è solo un for con tre righe di codice,

ttosto andando avanti nel problema troverai opportuno farne una che una volta ad esempio tolti ttt i multipli di 5 o di qualsiasi altro numero ti sposti al prossimo numero primo (o meglio al prossimo uno del vettore) nel caso di 5 ti dovrebbe portare a 7 (in quanto 6 già è stato posto a zero con il 2). Spero ti sia stato di aiuto

-- Comment added by GiuseppeDiFederico on 29 Nov 2004


Senza titolo?

oppure semplicemente if v[i]!=0

-- Comment added by DanieleFaraci on 29 Nov 2004


Senza titolo?

Però non ho capito bene come faccio a vedere se un numero è primo o no. Come faccio a dirgli che quel numero è primo?

-- Comment added by EmanueleGallo on 29 Nov 2004


Cioè basta dirgli if (v[i]/v[i] && v[i]/1) ?????

-- Comment added by EmanueleGallo on 29 Nov 2004


Non credo cmq dato che tutti i numeri possono essere divisi per se stessi e per 1. Quindi come faccio?

-- Comment added by EmanueleGallo on 29 Nov 2004


AIUTOOOOO

avevo consegnato l'esercizio sbagliato.... adesso ho riconsegnato quello esatto... adesso quello di prima si è cancellato? spero di si frown

-- Comment added by ValentinaCucurachi on 29 Nov 2004


AIUTOOOOO

Tranqui'! wink
L'importante è che non hai utilizzato la pagina di consegna sbagliata, perché in questo momento ci sono 2 pagine di consegna, una per l'hw 2 e una per il 3.

-- Comment added by AlbertoLaRocca on 29 Nov 2004


delucidazione..

scusate ma con un input così 2111111 1999991 1111191 1999191 1919191 1919191 1111111 esce fuori un output così? 2111111 1000001 1111101 1000101 1010101 1010101 1111111

-- Comment added by AntonioFelitti on 08 Dec 2004


delucidazione..

ho sbagliato la formattazione ma ad ogni spazio equivale un "invio", scusate..

-- Comment added by AntonioFelitti on 08 Dec 2004


delucidazione..

la sorgente è [0][0]..

-- Comment added by AntonioFelitti on 08 Dec 2004

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

-- IvanoSalvo - 18 Nov 2004


This topic: Programmazione1/AA0506/PZ > WebHome > DomandeHomework204
Topic revision: r116 - 2004-12-08 - AntonioFelitti
 
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