-- MarioBove - 09 Dec 2004

Ma che hanno fatto!??!?!?!
Hanno messo per il 4° esercizio un miscuglio tra il MCD e il vecchio esercizio?!?!?!?
E la data di consegna è uguale a quella del 3°????
Oddio non ci stò capendo più nulla! frown

manco io ci sto capendo---+ nulla!!!!!!

-- AlbertoLaRocca - 09 Dec 2004

La pagina deve ancora essere completata; avranno fatto copia-incolla con la pagina vecchia. PS: prof. scusi se oggi non lo consegno dopo mezz'ora, ma ho da fare ^_^ lo consegnerò stasera.


Bravo Larocca

eh si, ma che mancanza per quest'area non vedere la tua consegna dopo mezz'ora big grin LOL

-- Comment added by RiccardoProietti on 09 Dec 2004


Anche qui il testo non è che sia chiarissimo...

-- Comment added by AndreaCosentino on 09 Dec 2004


Bravo LaRocca

Ma se AlbertoLaRocca lei non consegna, come faccio io a correggere??? Mica li so risolvere gli esercizi... A parte gli scherzi, invito tutti a controllare il testo e segnalare eventuali oscurità e imprecisioni. grazie. In cambio prometto di tenere d'occhio questa pagina un po' di piu' la prossima settimana.

-- Comment added by IvanoSalvo on 09 Dec 2004


Senza titolo?

il numero 97261064 non è divisibile per 21252 come fa ad essere il mcd?

-- Comment added by FabioDeNigris on 09 Dec 2004


Senza titolo?

Ma nn è più semplice dire che si divide il primo numero per il secondo, se il primo numero è esattamente divisibile, il MCD è il divisore, altrimenti il MCD è il resto della divisione stessa... o no?

-- Comment added by AndreaCosentino on 09 Dec 2004


Senza titolo?

Non è possibile, mi correggo da solo, perchè con i numeri troppo alti non funzionerebbe come algoritmo...

-- Comment added by AndreaCosentino on 09 Dec 2004


Senza titolo?

cmq come già detto da FabioDeNigris il secondo numero non è divisibile per 21252... Forse non abbiamo capito noi?

-- Comment added by AndreaCosentino on 09 Dec 2004


+++ MCD +++

Sul testo c è scritto: MCD(n,n) = n MCD(m,n) = MCD(m-n,n) se m<n MCD(m,n) = MCD(m,n-m) se n<m

Ma non dovrebbe essere: ?? MCD(n,n) = n MCD(m,n) = MCD(m,n-m) se m<n MCD(m,n) = MCD(m-n,n) se n<m

(secondo il Salvo)Prendo come esempio m=24 n=36 MCD(24,36)= MCD(-12,36) dato che m=24 < n=36 "...MCD di due numeri interi strettamente positivi", -12 è negativo

(secondo me)Prendo sempre come esempio m=24 n=36 MCD(24,36)= MCD(24,12) dato che m=24 < n=36 MCD(24,12)= MCD(12,12)=12 dato che n=12 < m=24

forse mi sbaglio?

-- Comment added by CristianCarbone on 09 Dec 2004


xCristianCarbone

Io pensavo come dicevi tu... Però me stanno a venì i dubbi con il testo...

-- Comment added by AndreaCosentino on 09 Dec 2004


Senza titolo?

Bhe ora aspettiamo un altra settimana per leggere cosa dice il Salvo.

-- Comment added by CristianCarbone on 09 Dec 2004


Senza titolo?

cmq per quanto riguarda l'esempio i numeri più vicini a quello indicato divisibili per 21252 sono, 97249152 e 97227900... E' meglio correggere...

-- Comment added by AndreaCosentino on 09 Dec 2004


Oddio... o_o

ho dovuto controllare le see diffs per essere sicuro che quel post fosse veramente di Salvo... e mica solo per la parte dove mi prende in giro!!!

-- Comment added by AlbertoLaRocca on 09 Dec 2004

+++ MCD +++

In effetti mi sono reso ke facendo alcune prove a mano non tornano molto i conti con la definizione di MCD data dall'esercizio. E dovrebbe essere il contrario...mi staro' sbagliando???????????????????????????????? -- Comment added by DavidBenedetti on 09 Dec 2004


re: attenzione

sarebbe grave, però dal momento che gli homeworks compilano e funzionano, suppongo che a lui il testo arrivi giusto. o forse non funziona solo la pagina di consegna del terzo homework? a me sembra che il testo dell'e-mail coincida con quello che ho inviato.

-- Comment added by AlbertoLaRocca on 09 Dec 2004


risolto

il problema l'ho risolto anche se è strano! se io quando mettevo un controllo del tipo:(n<m)in questo modo quando l'email mi mandava la conferma cancellava <m) e scriveva cosa cera sotto il prog!!!! per risolvere il probl ho scritto cosi:(n < m) e nn mi ha dato nessun prob. non chiedetemi il perchè! perchè non lo sò!

-- Comment added by MauroMoretti on 09 Dec 2004


Dubbi

ma cosa si intende per lista di cifre decimali? dev'essere una lista linkata, cioè una lista dove ogni elemento è associato al puntatore del precdente e a quello del successivo? oppure basta un array? realizzare sto coso con una lista mi sembra un po' assurdo; e poi vedo sul forum che ci sono delle cose non molto chiare nel testo dell'esercizio: sono state chiarite?

-- Comment added by AlbertoLaRocca on 09 Dec 2004


invito

Ragazzi visto che i problemi da risolvere cominciano ad essere un attimino piu' impegnativi che ne direste di evitare discussioni fuori tema???

-- Comment added by StefanoConte on 09 Dec 2004


ah ah ah

Ahahahahahahahahahahahahah
Oh Mio Dio Ivano Salvo è un grande! :)
Scusate il messaggio che non c'entra prometto che sarà il primo e l'ultimo in questa sezione, mi ha fatto sbellicare il post di Salvo! :)
Ciao !

-- Comment added by MarioBove on 09 Dec 2004


ah ah ah

bisogna ammettere che quell'uomo ha un certo senso dell'umorismo smile
cmq StefanoConte, fino al tuo di post OT non ce ne stava quasi nessuno...
piuttosto, sta cosa delle liste di cifre decimali? che devo fare? liste linkate? mi sembra strano... non vanno bene gli array?

-- Comment added by AlbertoLaRocca on 09 Dec 2004


array o lista? (vada per l'array :D)

infatti si do ragione a alberto, nn facciamo prima a fare un bel array lungo n e poi dire tutto l'array rapressenta il numero? allocare 2 array è sicuramente molto---+ conveniente che allocare liste collegate...

-- Comment added by Users.Claudio on 09 Dec 2004


Senza titolo?

http://www.dimi.uniud.it/~ciaffagl/Teaching/IV.pdf ecco dove si trova la spiegazione di Euclide! Ma si è sbagliato il prof, nella prima pagina ha scritto che era una teoria sul mcm, poi nella pagina del compito però ha scritto bene!

-- Comment added by AlessioDezi on 09 Dec 2004


array o lista?

anche perché non credo che Salvo voglia che allochiamo un singolo blocco dinamico per ogni nodo della lista, altrimenti la memoria verrà mooooolto frammentata; piuttosto allocheremo un unico blocco dinamico che possa tenere tutti i nodi, ma così a questo punto è la stessa cosa che allocare un array, solo che occupa esattamente (anzi, identicamente come dice Nebbia :)) il triplo dello spazio, se non addirittura 9 volte tanto! (a seconda delle implementazioni)

-- Comment added by AlbertoLaRocca on 09 Dec 2004


NULL

esiste il simbolo NULL nell'ANSI C? se non esiste, con cosa lo posso sostituire? va bene il semplice zero? altrimenti una definizione del genere?
#define NULL ((void)0)

-- Comment added by AlbertoLaRocca on 09 Dec 2004


realloc

1 altra cosa: la realloc nell'ANSI C lascia invariato il contenuto del precedente blocco di memoria? se sì, anche quando deve effettuare uno spostamento del blocco? lo ricopia tutto così com'è nella nuova posizione?

-- Comment added by AlbertoLaRocca on 09 Dec 2004


errore...

la descrizione: MCD(n,n) = n MCD(m,n) = MCD(m-n,n) se m<n MCD(m,n) = MCD(m,n-m) se n<m è errata...le condizioni vanno invertite!

-- Comment added by OmarTardiolo on 09 Dec 2004


Mea Culpa

in effetti nell'esempio mancava un 1 davanti al primo numero. Ora l'esempio dovrebbe essere corretto.

Le condizioni erano ovviamente invertite, come si sono accorti i più.

-- Comment added by IvanoSalvo on 10 Dec 2004


Array o Liste?

NON usando array di dimensione variabile, il modo corretto di fare l'esercizio e' quello di usare LISTE CONCATENATE.

Tenete conto che non potete sapere a priori quante cifre dovete leggere.

Effettivamente non si tratta del modo migliore per RAPPRESENTARE interi di dimensioni arbitrariamente grandi, ma non è l'efficienza lo scopo dell'esercizio (ne' in tempo ne' in spazio [sprecare un campo puntatore per ogni cifra immagino fara' rabbrividire AlbertoLaRocca e tutti gli altri VERI programmmatori C]).

Buonanotte e buon week end a tutti.

-- Comment added by IvanoSalvo on 10 Dec 2004


NULL

Esiste eccome, ma andare a leggere un attimo il manuale, no eh!?!?!? smile Non credo che avrai bisogno della realloc!!! smile

-- Comment added by StefanoConte on 10 Dec 2004


Array o liste?

ma lol, e io che stavo già facendo un array di char dove ogni char conteneva 2 cifre decimali... con una lista devo impiegare esattamente 18 volte tanto in termini di memoria frown però non è importante per l'esercizio! o_o
vabbè va', famo ste liste; prof, ma mi tolga una curiosità: dal momento che voi fate la correzione automatica non controllate il codice di ciascun file, ma allora come fate a sapere se un certo programma una volta compilato non contiene codice malizioso? che succederebbe se qualcuno inserisse nel programma da consegnare una chiamata system dove fa eseguire alla shell comandi pericolosi? non che io abbia intenzione di farlo, se vuole controlli pure i miei homeworks ^_^' ma non lo ritiene pericoloso?

PS, StefanoConte: facevo prima a chiedere su TWiki che a controllare su un manuale di C, che tra l'altro non ho ^^ e poi la realloc certo che serve: come fai in runtime se il numero di cifre che ti vengono date in input è maggiore di quello che ti aspettavi?

-- Comment added by AlbertoLaRocca on 10 Dec 2004


Array o liste?

Secondo me fai prima a comprartelo il manuale... big grin Comunque dovresti sapere che se stai utilizzando una lista concatenata puoi creare tutti gli elementi che vuoi in runtime per ogni input e soprattutto non hai bisogno di preventivare un numero fisso di input, per chi ancora non l'avesse capito, l'uso delle liste serve proprio a questo!!!Per questa operazione hai bisogno soltanto della semplicissima malloc(nel deitel se ne parla al capitolo 12 se non erro!)

-- Comment added by StefanoConte on 10 Dec 2004


e ancora... -_-'

scusami sai, se sto cercando di non frammentare la memoria in una maniera mostruosa... in teoria già si frammenta chiamando realloc tante volte, figuriamoci facendo come dici tu! che roba, un blocco per ogni cifra, ma siamo matti? lo sai ad esempio che nel runtime di Visual C---++ ogni blocco dinamico ha 20 bytes di intestazione? sommati agli 8 per i due puntatori che associ ad ogni nodo e al byte contenente la cifra (sempre che non usi int anziché char!) farebbero in tutto 29 byte! per una cosa che si poteva memorizzare in 4 bit (Massini insegna)! eh non lo so, a sto punto famo che ogni cifra è contenuta in un blocco da un kilobyte e tanti saluti! tanto dici vabbè, chissene, lo scopo dell'homework non è l'efficienza, quindi...
brrrr... vede prof? rabbrividisco!

rabbrividisco talmente tanto che mi stanno uscendo fuori un sacco di tag "br"! (triste questa...)









oltrettutto farlo con l'array era pure---+ facile... vabbè, poche lagne e famo stu coso va'

-- Comment added by AlbertoLaRocca on 10 Dec 2004


help..

io non è che ho capito tanto come si fa.. qualcuno può darmi qualche dritta? non ho capito come si calcola stò mcd... sarò scemo..

-- Comment added by AntonioFelitti on 10 Dec 2004


CONSEGNA?!

non è un pochino troppo presto il 20 x consegnare.... mah...

-- Comment added by FrancescoCipollone on 10 Dec 2004


Senza titolo?

mettiamo la scadenza alle 23.59.59 del 31 dicembre... ki lo consegna 10 secondi prima ha 10 punti in---+ di base all'esame big grin

p.s. tanto io nn lo finisco nemmeno per il 31 O_o

-- Comment added by DanieleFaraci on 10 Dec 2004


Senza titolo?

quoto

-- Comment added by StefanoConte on 10 Dec 2004



Senza titolo?

lol, e l'homework successivo quando si consegna, tra un anno? big grin

-- Comment added by AlbertoLaRocca on 10 Dec 2004


Collaborazione dinamica!

A parte i discorsi di frammentazione di memoria (giustissimi), penso che il problema (anche se forse lieve) si ponga durante l'elaborazione del MCD tra i due numeri inseriti. Per ovviare a questo ho implementato una "collaborazione" tra stack e array (oddio, sarebbe venuto anche con le code eh!). Nel senso: in fase di caricamento eseguo M ed N push nei 2 stack (uno per ogni numero ovviamente), poi scarico i due stack ottenuti in due array (la grandezza degi stack me la ricavo molto semplicemente) e poi elaboro il tutto sugli array ottenuti. Spero di non aver profanato alcunché!!! -- Comment added by DavidBenedetti on 11 Dec 2004


Collaborazione dinamica!

Ma scusa, ho capito male o stai parlando del call stack??? O_o

-- Comment added by AlbertoLaRocca on 11 Dec 2004


Collaborazione dinamica!

Suppongo (e spero) di aver capito male, dal momento che in ANSI C non puoi usare l'assembly...

-- Comment added by AlbertoLaRocca on 11 Dec 2004


Collaborazione dinamica!

Nessun uso di call stack o assembly Alberto...te lo assicuro!!! Mi ci sono solo ingegnato un pò! Anche perché i procedimenti che ho utilizzato sarebbero stati molto più laboriosi (e anche dispendiosi) dal punto di vista della memoria (e anche della logica: un pò contorta!) utilizzando solo liste lineari. In poche parole erano un pò caotici! Così, se vogliamo dirla tutta, mi sono solo semplificato la vita!!! smile

-- Comment added by DavidBenedetti on 11 Dec 2004


Collaborazione dinamica!

ti sei semplificato la vita creandoti uno stack e senza fare uso di classi/template??? complimenti, ma non so se hai capito bene cos'è una lista... e poi guarda che lo scopo dell'homework è quello di utilizzare le liste linkate, altrimenti puoi fare tutto con un normalissimo array di char (senza andare ad impelagarti con i miscugli di stack e array) e tanti saluti!

-- Comment added by AlbertoLaRocca on 11 Dec 2004


Collaborazione dinamica!

Certo che lo so cos'è una lista, non preoccuparti...!Ma grazie comunque per i chiarimenti!!!

-- Comment added by DavidBenedetti on 11 Dec 2004


Collaborazione Dinamica x LaRocca

array di char??? Ma che sei matto??

-- Comment added by FabrizioBottacchiari on 13 Dec 2004


Senza titolo?

ma se i 2 numeri sono primi cosa deve visualizzare?

-- Comment added by MassimilianoMenculini on 13 Dec 2004


Collaborazione Dinamica x Bottacchiari

Tutt'altro, era in assoluto la soluzione migliore; perché, tu come avresti fatto? x Massimiliano: se i due numeri sono primi deve visualizzare 1 (entrambi sono divisibili per uno e per se stessi, quindi l'MCD è 1).

-- Comment added by AlbertoLaRocca on 13 Dec 2004


Senza titolo?

basta seguire l'algoritmo. Ad esempio m=13 n=7 , risulterà MCD(1,1)=1

-- Comment added by CristianCarbone on 13 Dec 2004


Senza titolo?

La prima cifra del nostro numero, può essere uno zero? o lo zero può essere inserito solo nelle cifre seguenti? ESEMPIO: potremmo avere in input del genere 0->1->2->3 ?

-- Comment added by CristianCarbone on 13 Dec 2004


Studenti Canale A - D

Mi scuso se sfrutto questo forum per un'altra materia, chiunque del canale A -D è in cerca degli Esami precedenti di calcolo differenziale, può trovarli sulla mia home page di twiki, cliccando sul mio nome, buono studio

-- Comment added by FabrizioBottacchiari on 14 Dec 2004


Osservazione

l'idea di usare divisione e resto della divisione intera (proposta da Cosentino mi sembra) effettivamente funziona, solo che in quel caso dovete implementarvi queste operazioni sui numeri rappresentati come vi ho chiesto... il che mi sembra obiettivamente piu' difficile. Se ci pensate, con l'algortitmo che vi ho dato io si fa (con qualche passo in piu', of course) la stessa cosa.

-- Comment added by IvanoSalvo on 14 Dec 2004


Efficienza del programma

come vi ho detto non preoccupatevi dell'efficienza della rappresentazione. Il modo migliore sarebbe... vabbe' troppo lungo da spiegare... wink

-- Comment added by IvanoSalvo on 14 Dec 2004


Zero come prima cifra

gli zeri a sinistra, come immagino sappiate non sono cifre significative. Quindi.... se volete, considerate questo caso non considerando eventuali sequenze iniziali di zeri.

-- Comment added by IvanoSalvo on 14 Dec 2004


Domanda stupida

Quando ho inserito tutti i numeri nella lista concatenata.. i numeri che vado ad utilizzare nel calcolo dell'MCD, le devo considerare come degli interi inseriti da tastiera? perchè l'algoritmo funziona sulle sequenze di cifre delle liste concatenate, per cui io il numero derivante dalla lista da qualche parte lo dovrò mettere, altrimenti su cosa opero?

-- Comment added by AndreaCosentino on 14 Dec 2004


Re: Efficienza del programma

il metodo migliore dal punto di vista dell'ottimizzazione della memoria sarebbe di codificare non in BCD (come stiamo---+ o - facendo) ma normalmente in binario allocando spazio a sufficienza chiamando malloc (una sola volta però! senza fare realloc 3000 volte); l'unica cosa a cui stare attenti è che in questo modo le operazioni andrebbero fatte operando in esadecimale (una cifra ogni nibble) e quindi i prestiti delle sottrazioni dovrebbero essere uguali a 16 anziché 10. Per il resto tutto normale.

-- Comment added by AlbertoLaRocca on 14 Dec 2004


Re: Domanda stupida

Io nel mio programma non ho allocato nessun'altra lista oltre alle due in ingresso, perché di fatto le uniche operazioni che devi fare sono le progressive sottrazioni sui due numeri in ingresso, quindi io non faccio altro che sottrarre progressivamente i due numeri fra di loro, senza fare uso di terze parti.

-- Comment added by AlbertoLaRocca on 14 Dec 2004


Senza titolo?

infatti non è necessario allocare una terza lista..cmq una funzione x togliere gli zeri all'inizio del numero è indispensabile altrimenti poi le sottrazioni non funzionano in certi casi particolari...cmq credevo fosse più difficile l'homework all'inizio ma poi con un paio di giorni me la sono cavata e alla fine l'ho risolto tutto...buona fortuna a tutti... CHEERS!

-- Comment added by OmarTardiolo on 14 Dec 2004


Senza titolo?

Compilando il programma su Linux e mandandolo in run mi sono accorta che non mi visualizza tutte le printf che chiedo. Es.se scrivo printf("pippo"); e printf("pluto"); mi visualizza solo pippo...e cosi' via, le visualizza tutte tranne l'ultima. Da cosa puo' dipendere? Eseguendo lo stesso su Cygwin in windows, non ho nessun tipo di problema. Inoltre sempre da Linux in run ho avuto problemi con una funzione ricorsiva tornante un valore...(su Cygwin funzionava benissimo...) e ho dovuto rendere void tale funzione che altrimenti veniva letteralmente ignorata . Suggerimenti???

-- Comment added by NormaGiovinazzi on 15 Dec 2004


Senza titolo?

sicura che il codice che hai eseguito su cygwin fosse esattamente lo stesso che hai eseguito su linux? non l'hai riscritto?

-- Comment added by AlbertoLaRocca on 15 Dec 2004


Aiuto

Come faccio a fare la sottrazione fra 2 liste collegate che rappresentano i nostri numeri!!!!! ho trovato un sacco di prob. datemi qualche consiglio (anke porzioni di codice nn fanno schifo lollllllllll)

-- Comment added by Claudio on 15 Dec 2004


Fatto

Anche se dopo estenuanti lol giorni di prove... CE L'HO FATTA!!! Alla facciaccia vostra!!!! smile smile smile

-- Comment added by StefanoConte on 15 Dec 2004



scherzavo...

cioè il progr l'ho fatto,ma nn alla faccia vostra!!! ehehehehehehe uhauhauahauhauh ahahahahahahahaah Seeeeeeeeeeeee se vi serve una mano...sto qua!!!

-- Comment added by StefanoConte on 15 Dec 2004


scherzavo...

A me servirebbe qualche output (magari con molte cifre) per testare il programma, possibilmente giusti eheh

-- Comment added by CristianCarbone on 15 Dec 2004


Senza titolo?

a me a me serve una mano!!! come fai a fare la sottrazione fra 2 liste di interi cavolo!!!!!!!!!!!!!!come se fa!??!!?!?!?!

-- Comment added by Claudio on 15 Dec 2004


scherzavo
dando in input questi numeri:
3239018414
1705173374
il risultato è : 254

-- Comment added by StefanoConte on 15 Dec 2004


X Claudio

io uso una funzione che, avendo queste fue liste: m->5->9->9->9->0->NULL
n->8->7->0->NULL
Fa il reverse:
m->0->9->9->9->5->NULL
n->0->7->8->NULL
e finchè n!=NULL sottraggo a l'elemento di m l'elemento di n , quindi m diventerà :
m->0->2->1->9->5->NULL
faccio il reverse della lista m e torna:
m->5->9->1->2->0->NULL
Spero di essere stato chiaro...

-- Comment added by CristianCarbone on 15 Dec 2004


zero

ma nel caso in cui uno dei due numeri immessi dall'utante è zero l'output del programma quale sarà?e se sono entrambi zero?esempi
mcd(0,12)=???
mcd(0,0)=???

-- Comment added by StefanoConte on 15 Dec 2004


zero

"...Esiste un antichissimo modo per determinare il Massimo Comun Divisore (MCD) di due numeri interi strettamente positivi..." 0 non è positivo, quindi non credo che ci mettera' lo 0 come input, per sicurezza però ho mandato una e-mail al Salvo, speriamo che mi risponde eheh

-- Comment added by CristianCarbone on 15 Dec 2004


StefanoConte fa lo sborone

ma il grande sottoscritto non si batte! eheh!
lo sai quanto ci ho messo io a fare il programma (alla faccia tua lol big grin )? nemmeno un'ora! e se vuoi sapere una cosa, a me ha funzionato alla prima botta asd big grin semplicemente l'ho scritto e l'ho fatto partire big grin

-- Comment added by AlbertoLaRocca on 15 Dec 2004


Attenzione prego

se lo desiderate, nella mia pagina personale qui su TWiki ho messo in attachment un piccolo programmetto fatto da me per scomporre un numero in fattori primi; funziona solo su Windows però; vi potrà aiutare a trovare i fattori primi e quindi l'MCD di due numeri. chi lo vuole se lo scarica, chi non lo vuole non se lo scarica, io l'ho messo e sta la'. big grin

-- Comment added by AlbertoLaRocca on 15 Dec 2004


Attenzione prego

per chi ha Linux, o per chi non si fida di me, ho messo sempre in attachment anche il sorgente del programma pronto da compilare. scusate se fa schifo, ma l'ho fatto alle medie!!! big grin

-- Comment added by AlbertoLaRocca on 15 Dec 2004


PS x StefanoConte

il tuo output è sbagliato.

-- Comment added by AlbertoLaRocca on 16 Dec 2004


O_o

ma il grande sottoscritto non si batte! eheh! lo sai quanto ci ho messo io a fare il programma (alla faccia tua lol big grin )? nemmeno un'ora! e se vuoi sapere una cosa, a me ha funzionato alla prima botta asd big grin semplicemente l'ho scritto e l'ho fatto partire big grin

tu si che sei un figo la rocca

-- Comment added by ClaudioCorti on 16 Dec 2004


PS x StefanoConte?

Controlla il tuo di programma allora!!!

-- Comment added by StefanoConte on 16 Dec 2004


x AlbertoLaRocca

secondo me ho ragione io

-- Comment added by StefanoConte on 16 Dec 2004


X CristianCarbone
si cristian sei stato chiaro, ma: 1)se invece di avere la liste (reversate)
m->0->9->9->9->5->NULL
n->0->7->8->NULL
avessi le liste
m->1->2->3->9->5->NULL
n->0->7->8->NULL
ti troveresti alla fine con la lista m 1->-5->-5->9->5 ovvero il numero 59-5-51 che nn è che abbia molto senso!Forse mi sbaglio io?!?!
2) se fai 1000-99 con quel metodo nn coinvolgi nella differenza i primi 2 num di 1000 faresti
1000 -
  99 =
10XX
che ha ancor meno senso di prima, xk togliendo a 1000 un numeri arrivi a un numero---+ grande di mille!
Sei sicuro che ti funzioni il prgramma? o non ho capito io ? Altre proposte su come fare la sottrazione?

-- Comment added by Claudio on 16 Dec 2004


Sottrazione tra due interi?

come vuoi che si faccia? si fa esattamente come ti ha insegnato la maestra alle elementari: procedendo da destra verso sinistra fai la prima cifra meno la seconda; se la seconda è più grande della prima, allora usa il prestito togliendolo da quella successiva; se alla fine arrivi all'ultima cifra (quella più a sinistra di tutte) e hai bisogno di un prestito ma non c'è più nessuna cifra che te lo da (per favore, cosa state pensando!?!), allora vuol dire che il secondo numero era più grande del primo, e la sottrazione non si può fare.

-- Comment added by AlbertoLaRocca on 16 Dec 2004


Sottrazione tra due interi?

Esatto, proprio che ha detto AlbertoLaRocca, io nella funzione sottrazione ho fatto un ciclio while che finchè la cifra seguente è 0 , con un puntatore ausiliare va al prossimo nodo, e leva un unità dal suo elemento. Scusa se non te l ho detto nel precedente post, ma come dice AlbertoLaRocca te lo insegna la maestra alle elementari.
Cmq l'output di StefanoConte è giusto, il MCD è 254

-- Comment added by CristianCarbone on 16 Dec 2004


hmmmm...

stavolta sono stato un po' troppo azzardato ^^'
ho usato il programma della scomposizione per vedere i fattori primi dei due numeri, solo che i due numeri erano troppo lunghi per un int e il programma andava in overflow mostrandomi i fattori primi di un'altra cosa.
evvabeeeeene: scuuuuusami stefanocooooonte... big grin

-- Comment added by AlbertoLaRocca on 16 Dec 2004


hmmmm...

scuse accettate, lo sapevo benissimo che il mio output era corretto, è il tuo programmino delle medie che non funzia tanto bene!!! wink

-- Comment added by StefanoConte on 16 Dec 2004


Senza titolo?

Scusa e perchè hai usato il programmino delle medie e non quello che hai già fatto (impiegandoci meno di 1 ora) per testare i numeri che ha dato stefanoconte? :D
No così giusto per capire ;)


Poi una domanda.....
Dobbiamo valutare il caso in cui l'utente inserisca già dal primo numero un numero maggiore di 9 o minore di 0 e quindi imporre la lista come 0 oppure deve per forza inserire almeno 1 numero e quindi fare un ciclo finchè questo non sia >0 e <9 ? (intendo sempre il primo elemento della lista poi dal 2° si uscirà come dal testo dell'esercizio...)
ciao!

-- Comment added by MarioBove on 16 Dec 2004


caso zero

ho chiesto al Salvo: mi ha detto che il programma deve terminare sia se l'utente chiede di calcolare il MCD tra due zeri(MCD(0,0)) oppure tra un numero e zero (MCD(x,0)).
X MarioBove per sicurezza un controllino sull'esistenza della lista io ce l'ho messo. se l'utente immette già dal primo num un numero >9 o <0 il programma si stoppa visto che non ha numeri su cui lavorare!
spero di essere stato chiaro

-- Comment added by StefanoConte on 16 Dec 2004


output

Mi è venuto un dubbio...se noi abbiamo un input del genere:
5
5
-1
7
7
10
L'output dovra essere stampato in colonna? 1
1
Oppure in linea? 11

-- Comment added by CristianCarbone on 16 Dec 2004


output

penso in linea.. il testo dice così.. printf("%1d")

-- Comment added by AlessandroSabellico on 16 Dec 2004


Senza titolo?

Ma voi dopo aver stampato il MCD stampate anche il carattere di newline "\n" ? Non vorrei che risultasse sbagliato...

-- Comment added by CristianCarbone on 16 Dec 2004


Librerie coda e albero

Qualche anima pia potrebbe che ha trascritto tutte le funzioni sugli alberi e sulle code non è che potrebbe farmele avere in qualche modo? Purtroppo sono stato assente durante quelle lezioni e non ho potuto recuperare appunti. C'è l'indirizzo mail nella mia pagina. Vi ringrazio e mi scuso perché probabilmente sono OT.

-- Comment added by DanieleBernardi on 17 Dec 2004


Risposte varie

x MarioBove: ho usato il programma delle medie perché ce l'avevo sottomano; non mi andava di:
1) ripescare l'homework
2) rimettere la getch() al codice del programma dell'homework
3) ricompilare il codice
4) eseguire e vedere il risultato;
ho fatto prima ad avviare quell'affaretto che stava già sul desktop :P

x CristianCarbone: il newline alla fine io l'ho messo, ma comunque Salvo mi ha detto di persona che il programma di correzione automatica dovrebbe saltare automaticamente i newlines di troppo, poi non so.

x DanieleBernardi: essì, evviva, allora a questo punto propongo una cosa migliore: tu fai il tuo homework e controlli che funzioni, dopodiché giri su TWiki per tutte le pagine personali degli users e invii il tuo homework a tutti gli indirizzi e-mail che trovi; mi sembra molto meglio, no?

-- Comment added by AlbertoLaRocca on 17 Dec 2004


Se l'ottimizzazione delle risorse nn è un problema big grin

ragazzi ho finito il prog ma con numeri di centinaia di cifre o ci mette tanto e arriva a impallare il pc lol
Mem:   191368K av,  189744K used,    1624K free,       0K shrd,    2364K buff
Swap:  142592K av,      12K used,  142580K free                   54504K cached
 
   PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
  1460 claudyus   9   0 95352  93M   364 S    10,0 49,8   0:53 404
l'ha detto il prof che l'ottimizzazione nn è un problema vero big grin

-- Comment added by Claudio on 17 Dec 2004


Senza titolo?

A me funziona fino a certe cifre, ma dopo va tutto in palla frown

-- Comment added by RobertoVarazzi on 18 Dec 2004


Ho ottimizzato pure io

Bene ho finito anche io smile Come vedo non sono il solo che programma ad orari assurdi ihih

Mem: 513708k total, 182500k used, 331208k free, 16k buffers Swap: 995988k total, 26072k used, 969916k free, 56720k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME---+ COMMAND 16350 root 23 0 1356 368 1196 R 97.1 0.1 1:44.33 mcd-euclide

Il mio ha un'effetto contrario al tuo, cpu a palla, poca memoria (il test l'ho effettuato con 1024-m x 1024-n).

Ciao smile

-- Comment added by AntoninoMuratore on 18 Dec 2004


Ehm ho dimenticato gli apici su ottimizzato smile

-- Comment added by AntoninoMuratore on 18 Dec 2004


ma beati voi

ke siete tutti geni e riusciti a fare tutti gli hw smile io devo ancora capire come iniziare oO''

-- Comment added by MassimilianoMenculini on 18 Dec 2004


Algoritmo ricorsivo?

Salve, volevo sapere se l'agortimo di euclide va implementato in forma ricorsiva per forza o no? Un grazie anticipato per la risposta.

-- Comment added by FabioGiuffre on 18 Dec 2004


Controlli

Volevo sapere,
cosa bisognava fare ESATTAMENTE nel caso in cui si verificassero questi eventi, in modo da evitare di incorrere in problemi con la correzione automatica, allora:
se si richiede di fare il MCD(0,0) , cosa bisogna fare esattamente? si vuole un errore particolare o non si deve stampare nulla?
Stesso caso per MCD(un_numero,0) , cosa bisogna fare?
Un altro caso, se l'utente immette immediatamente due numeri >9 o <0 cosa bisogna fare?
Tutti questi casi non sono descritti nel testo, quindi spero, o che non vengano presi in considerazione durante il test, o che un professore risponda chiarendo ogni dubbio in modo da evitare problemi nella fase di correzione!
Grazie, saluti!

-- Comment added by MarioBove on 19 Dec 2004


Senza titolo?

Ragazzi io ho fatto così: Se si inserisce la prima cifra >9 0 <0 (sia nel primo numero che nel secondo) il programma termina. Se si è inserito (0,x), (x,0) oppure (0,0) il programma termina. è giusto così?

-- Comment added by RobertoVarazzi on 19 Dec 2004


Senza titolo?

Non si sà i professori non si sono ancora espressi molto bene in merito, per questo ho chiesto delucidazioni...
ciao

-- Comment added by MarioBove on 19 Dec 2004


Senza titolo?

qualcuno ha provato ad eseguire il programma con i numeri dati nell'esempio da Salvo? il risultato del mio programma è 4 e non 21252. inoltre ho dei problemi se provo a trovare l 'MCD con i numeri tipo 123456789 e 987654321 perchè mi si impalla il pc visto che la funzione mcd viene richiamata milioni di volte

-- Comment added by StefanoCipriani on 19 Dec 2004


ZERI

Nel caso della richiesta di calcolo del MCD tra o uno 0 e un numero x oppure tra due 0 si deve considerare anche il caso in cui nella lista ci sia NON solo un unico 0, ma un numero strettamente maggiore di cifre uguali a zero (e solamente quelle ovviamente!)? Se cosi', ditemelo!!!!!

-- Comment added by DavidBenedetti on 20 Dec 2004


sottrazione

regà!!!!! che metodo dite ke conviene usare per la sottrazione di 2 liste? è 1 bordello!!!! è tutto il pom ke ci provo e mi stò impazzendo!!!! viene troppo complicato!!!

-- Comment added by StefanoLAVAGNO on 20 Dec 2004


si fa così

fai come avevo fatto io all'inizio, ho messo le cifre nelle liste e poi li ho trasformate in interi e ho lavorato con quelli, purtroppo mi sa che non si può fare! male che va lo consegno cosi

-- Comment added by AlessioDezi on 20 Dec 2004


Ricorsione

Ragazzi ho una domandina.. implementando la differenza con una funzione ricorsiva se le liste contengono piu' di 4096 nodi (cifre da 4096 elementi) il programma smette di funzionare (stack overflow). Ora vorrei chiedere al prof.Salvo o magari se qualcuno ha gia' fatto la domanda, se durante la verifica saranno usati valori con---+ di 4096 elementi? In tal caso mi sa che dovro' lavorarci ancora un pochino smile

Grazie per la risposta.

-- Comment added by AntoninoMuratore on 20 Dec 2004


AlessioDezi

grazie per il consiglio anke io avevo pensato di farlo così!!!però nn sò se magari nel tester ci mete cifre ke sono superiori ad int.!!!! e nella conversione poi potrebbe dare problemi!!!!! e poi penso ke salvo vuole che facciamo tutto con le liste!!! solo ke è 1 casino!!!!

-- Comment added by StefanoLAVAGNO on 20 Dec 2004


Ricorsione e zeri

Salve,

anche io vorrei sapere se l'algoritmo di euclide va implementato in forma ricorsiva; ci sono infatti dei casi, come MCD(1, 1000000), in cui l'algoritmo di euclide provoca 1000000 di chiamate ricorsive, che provocano errore di memoria; nella forma iterativa invece non ci sono problemi. Se bisogna per forza usare la ricorsione l'importante è che nei test si tenga presente questo aspetto, e quindi non si diano degli input che provocano troppe chiamate ricorsive; comunque aspetto una risposta di conferma da parte del professore, altrimenti lascio la forma iterativa. E' da notare che il problema delle troppe chiamate ricorsive non dipende dall'eccessiva lunghezza dei numeri, ma può dipendere semplicemente dalla differenza tra i numeri stessi, come nel caso di 1 e 1000000.

Per quanto riguarda gli zeri, nell'esporre l'algoritmo si parla di "due numeri interi strettamente positivi", quindi lo zero non dovrebe essere dato in input, ad ogni modo se uno dei due numeri è zero io restituisco come MCD l'altro numero dato in input, il che è coerente con la definizione di MCD.

-- Comment added by VascoMarini on 21 Dec 2004


Senza titolo?

Ragazzi ma io ho fatto questa dichiarazione: struct link_list { int dato; struct link_list *next; };

typedef struct link_list catena; typedef catena *lista;

MA PERCHè POI DURANTE IL PROGRAMMA SE SCRIVO: d = malloc(sizeof (catena));

mi scrive un errore così:" invalid conversion from `void*' to `catena*'".

-- Comment added by MauroMoretti on 21 Dec 2004


Senza titolo?

Per caso stai compilando il file come file c---++? Hai dato estensione cpp al file? In C la conversione avviene automaticamente, se no scrivi escplicitametne il cast:

d = (catena *)malloc(sizeof (catena));

-- Comment added by VascoMarini on 21 Dec 2004


GRAZIE VASCO

6 UN GRANDE!!!!

-- Comment added by MauroMoretti on 21 Dec 2004


Help (XCLAUDIO)

ragazzi come posso fare la sottrazione tra le due liste??? ke sistema devo usare?? qualkuno ke ha già terminato il programma e li funziona può darci una pikkola dritta??

XCLAUDIO hai scritto: "Fa il reverse: m->0->9->9->9->5->NULL n->0->7->8->NULL e finchè n!=NULL sottraggo a l'elemento di m l'elemento di n , quindi m diventerà : m->0->2->1->9->5->NULL faccio il reverse della lista m e torna: m->5->9->1->2->0->NULL "

allora la mia domanda è: come fai a dire ke deve essere n ad essere sottratto ad e enon il contrario? per caso in base alla lunghezza del numero (ossia essendo n più corto sarà di certo più pikkolo di m...e in tal caso come ti comporti nel caso in cui n ed m hanno lo stesso numero di cifre????)

-- Comment added by SalvatoreCaputo on 21 Dec 2004


disfatta

niente mi arrendo!cè un errore e sono 3 giorni ke c stò sopra!!!!! va bè speriamo che vado meglio l'altro!!!!! ormai dovrei rifà tutto da capo!ma nn ho tempo!!!! spero ke a voi sia andata meglio!!!! ciao ragazzi e auguri a tutti|||||

-- Comment added by MauroMoretti on 22 Dec 2004


abbandono le armi

hai io ci rinuncio, ho scritto 240 righe di codice sembrava funzionasse ma nn va come deve...speriamo per il prox...

-- Comment added by SalvatoreCaputo on 22 Dec 2004


Senza titolo?

misa' ke sono in ritardo vero? O_o

-- Comment added by DanieleFaraci on 23 Dec 2004


in ritardo?

no è solo una tua impressione!

-- Comment added by MauroMoretti on 23 Dec 2004


Senza titolo?

Ma quando escono questi risultati? un altro pò è un mese........

-- Comment added by MarioBove on 20 Jan 2005


Senza titolo?

"Come sempre a tempo debito"!!! Non essere impaziente, Mario big grin

-- Comment added by AlbertoLaRocca on 21 Jan 2005


Senza titolo?

Altro che tempo debito qui stà facendo proprio i buffi! :P
I risultati del 5 li daranno al prossimo semestre mi sà big grin

-- Comment added by MarioBove on 22 Jan 2005


Senza titolo?

Professore, ora passiamo alle minacce: pubblichi quanto prima i risultati degli homeworks!!! Sono armato: ho un crivello di Eratostene e non ho paura di usarlo!!!

-- Comment added by AlbertoLaRocca on 22 Jan 2005


Senza titolo?

ahahahahah Questa è forte big grin

-- Comment added by MarioBove on 23 Jan 2005

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

Edit | Attach | Watch | Print version | History: r118 < r117 < r116 < r115 < r114 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r118 - 2005-01-23 - MarioBove






 
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