Domande sugli homework
Preghiamo tutti gli studenti di non rispondersi tra loro, per evitare che vengano date informazioni imprecise o errate. Anche noi possiamo sbagliare, ma se sbagliamo potete prendervela con noi, se sbagliate per colpa di un errore/imprecisione commessa da un altro studente con chi ve la prendete? Controllate che le risposte vengano dai docenti o dagli esercitatori.
Ricordo a tutti di rimuovere dall'output degli esercizi stampe di interazione con l'utente, system("pause") o qualunque cosa non richiesta prima di inviare le soluzioni
La consegna delle soluzioni del quinto hw può essere fatta regolarmente entro le ore 24.00 di oggi 23/01/09. Consultate la pagina delle domande (Re: Consegna) per ulteriori chiarimenti
Domanda stupida
Un numero deve essere considerato multiplo/divisore di sé stesso?
[AGGIUNTA]: Nell'esempio del primo esercizio 0 non figura tra i multipli di 10, è corretto così o va considerato che 0 = 0 * 10?
--
SimoneBronzini - 10 Jan 2009
Re: Domanda stupida
Si considerate un numero come divisore di se stesso. 0 invece non è multiplo di nessun numero.
--
EmanueleFusco - 12 Jan 2009
Numeri Ripetuti
1. Eventuali ripetizioni di numeri in input devono essere scartate?
2. Se sì, da quale funzione ?
--
FabrizioCavaniglia - 12 Jan 2009
Re: Numeri Ripetuti
Se ci sono numeri ripetuti nella sequenza in input nel primo esercizio, dovete semplicemente inserirli più volte, quindi avrete liste con ripetizioni dello stesso valore.
--
EmanueleFusco - 12 Jan 2009
esercizio 1
Salve, volevo sapere se è possibile nella defizione della struct aggiungere un typedef in modo da poter scrivere nella defizione della funzione
....NodoPtr * origine.....
invece di
....Nodo ** origine....
typedef Nodo * NodoPtr
--
AlessandroColetta - 12 Jan 2009
Re: esercizio 1
Si potete aggiungere una definizione di tipo puntatore a Nodo. Per farlo utilizzate ESATTAMENTE la dichiarazione che trovate qui sotto.
typedef Nodo * NodoPtr;
--
EmanueleFusco - 12 Jan 2009
home1: come gestire il caso k=0
in caso l'utente inserisca k=0, come ci dobbiamo comportare? i valori della lista sarebbe tutti divisori, e non multipli... che facciamo? li inseriamo tutti nella lista multipli/divisori, nella lista resto oppure ritorniamo tutti i puntatori alle 3 liste a NULL?grazie
--
MarioGreco - 12 Jan 2009
Re: home1: come gestire il caso k=0
il valore k sarà sempre >0.
--
EmanueleFusco - 12 Jan 2009
Il numero 1
Nel primo esercizione il numero 1 è da considerare multiplo e divisore di ogni numero oppure no? nell'esempio non c'è l'1 e non so come trattarlo
--
PierPaoloPetti - 12 Jan 2009
Re: Il numero 1
1 è divisore di qualunque numero intero >0.
--
EmanueleFusco - 12 Jan 2009
Funzione di inserimento
E' possibile creare una funzione che si occupi di inserire i valori all'interno di * origine in modo ordinato senza farlo nel main? Questa funzione dovrà allocare memoria
--
GianlucaCarroccia - 12 Jan 2009
Re: Funzione di inserimento
Si potete definire altre funzioni ausiliarie (ad esempio per effettuare gli inserimenti).
--
EmanueleFusco - 12 Jan 2009
Lista Inserita vuota
Salve, come gestire un eventuale input: -1 3 ?
il programma deve stampare NULL NULL (per multipli_e_divisori e per resto) oppure non stampare nulla?
grazie
--
LuisaDiDionisio - 12 Jan 2009
Re: Lista Inserita vuota
L'elemento NULL non è un elemento effettivo di una lista ma un valore sentinella per capire quando la lista termina, quindi non deve essere stampato. La risposta alla sua domanda è quindi: non bidogna stmapre nulla
--
RobertoPetroccia - 13 Jan 2009
home1 e home2, chiarimenti e valgrind
primaDomanda. nell'home 2, se inserisco n=0 che devo fare? uscire subito dal programma o comunque prendere anche un x e quindi stampare solo lo sbilanciamento massimo (ovvero 0 in quel caso)?
poi, il valore x sarà sempre>=0 giusto (esser negativo crea qualche problema fastidioso)...?
secondaDomanda. entrambi gli home se eseguiti con valgrind mi danno summary error =0, però si lamentano che all'uscita del programma non ho liberato la memoria, va bene lo stesso o creo una funzione che alla fine dell'output richiesto cancella tutto?grazie e scusate la prolissità
--
MarioGreco - 13 Jan 2009
Re: home1 e home2, chiarimenti e valgrind
Nell'ordine. Per n=0 non dovete stampare nulla. Il valore x sarà sempre >0. Per quanto riguarda la memoria, sarà considerato errore non deallocare memoria al seguito di cancellazioni dalla tabella, mentre potete evitare di deallocare la memoria utilizzata dagli elementi della pseudo tabella hash ancora presenti al termine dell'esecuzione del programma.
--
EmanueleFusco - 13 Jan 2009
funzione trova esercizio 2
la funzione trova nel secondo esercizio viene richiamata all'interno delle funzioni elimina ed inserisci per trovare la lista il cui elemento chiave e' uguale al parametro c...giusto??
--
AlessandroColetta - 13 Jan 2009
Re: funzione trova esercizio 2
potete utilizzare la funzione trova ogni volta lo riteniate utile/necessario.
--
EmanueleFusco - 13 Jan 2009
Domanda sull'esercizio 1 riguardo l'ordinamento
Nel testo viene detto:
"Attenzione: tutti gli elementi devono essere inseriti nelle liste rispettando l’ordinamento
non decrescente per il campo val."
Si intende ordine crescente o un ordine casuale non decrescente?Nel caso si intenda la seconda, va bene comunque se metto il tutto in ordine crescente?
--
FrancescoBelladonna - 13 Jan 2009
Re: Domanda sull'esercizio 1 riguardo l'ordinamento
Con ordinamento non decrescente si intende che se l'elemento "a" precede "b" nella lista allora "a.val" <= "b.val".
--
RobertoPetroccia - 13 Jan 2009
Inserimenti esercizio 1
Ma per inserire i valori nella lista *origine, è consentito usare la malloc in una funzione ausiliaria?
--
NicolaDonato - 14 Jan 2009
Re: Inserimenti esercizio 1
Si... come già detto in precedenza potete definire delle funzioni ausiliarie, e ovviamente potete utilizzare in queste funzioni tutto ciò che ritenete conveniente o necessario utilizzare.
--
EmanueleFusco - 14 Jan 2009
Compilazione Ex1,+altro
Salve,(domanda1) proprio all'ultima esercitazione fatta ,ho sentito che per evitare messaggi di warning durante la compilazione dovuti alla malloc ,bisognava effettuare un cast.....il codice lo allego qui sotto,il messaggio di warning generato è il seguente"107: warning: incompatible implicit declaration of built-in function ‘malloc’"mi sembra che il codice sia corretto,,ma xchè continua a darmi sto warning?
(domanda2)una volta che è terminata la funzione separa liste, come faccio a vedere dove punta la testa della lista di origine?so' che dovrebbe essere a NULL............
Saluti...
106 Nodo* nuovo=NULL;
107 nuovo=(Nodo*)malloc(sizeof(Nodo));
-- Users.1243045 - 14 Jan 2009
Re: Compilazione Ex1,+altro
per poter utilizzare la funzione malloc devi includere la libreria stdlib.h (#include<stdlib.h>).
Il cast invece non è necessario.
Il puntatore della lista origine dovrà essere correttamente impostato a NULL dalla funzione separa_liste, alla quale è stato passato per riferimento proprio per poter effettuare le necessarie modifiche.
--
EmanueleFusco - 14 Jan 2009
chiarimenti homework 2 sbilanciamento
Non mi è chiaro cosa si intende per sbilanciamento nel secondo homework.
Leggendo all'inizio si intuisce che lo sbilanciamento sarebbe la differenza del numero di elementi nelle due liste.
Tuttavia questo è in contrasto con l'esempio proposto per l'output.
Potete fornire altri esempi??
--
EmanueleGiarlini - 14 Jan 2009
Re: chiarimenti homework 2 sbilanciamento
Lo sbilanciamento è la differenza tra la lista con più elementi e quella con meno elementi. Un lista vuota (in cui non sono stati inseriti elementi) avrà lunghezza pari a 0. Se la lista che contiene il maggior numero di elementi ha lughezza 3, allora lo sbilanciamento sarà 3 - 0 = 3. Se la lista con meno elementi contenesse 1 elemento e quella con più elementi ne contenesse 5, allora lo sbilanciamento sarebbe 5 - 1 = 4.
--
RobertoPetroccia - 15 Jan 2009
Esercizio 1 caso strano
per l'esercizio 1 non ho ben capito come trattare il numero 0. Nell'esempio di input 0 pur essendo multiplo di 10 non viene incluso nella lista Multipli_e_divisori ma in quella di resto.
Ora avendo un input del tipo:
0 -1 0 (dove lo 0 finale sarebbe il k)
in quale lista andrà l'elemento zero?
--
SerenaMatrone - 14 Jan 2009
Re: Esercizio 1 caso strano
Ottima domanda.
La nozione "essere multiplo di ... " è una nozione che potrebbe sembrare elementare, ma è abbastanza delicata, poichè ha un suo preciso ambito di formulazione.
Nell'opinione comune diciamo che un numero naturale n è multiplo del numero naturale m se esiste un terzo numero naturale h tale per cui n=hm.
Se dovessimo applicare alla lettera la definizione data, essendo 0 un numero naturale, si avrebbe che la risposta è sì, n=0 è multiplo di ogni m naturale, essendo 0=0m, per ogni m naturale.
Proprio per evitare queste situazioni nelle quali il numero 0 ha un ruolo un po' strano in certe definizioni, si preferisce non considerarlo.
Dunque, per quanto detto, si conviene che lo zero NON E' MULTIPLO DI OGNI NUMERO, ma semplicemente perchè la nozione di multiplo, per convenzione, esclude che si possa trattare con il numero 0.
Invece direi che nel caso i cui k valga 0 allora possiamo considerare 0 un suo multiplo dato che ogni numero è multiplo e divisore di se stesso. MA COME DETTO SOPRA POTETE CONSIDERARE SEMPRE k > 0 (quindi un tale case non si verificherà nei nostri test).
--
RobertoPetroccia - 15 Jan 2009
stampare la lista nell'esercizio 1
salve,
le due liste del primo esercizio possono essere stampate da una funzione ausiliaria richiamata nel main, semplicemente per comodità?
Grazie,
Davide
--
DavideFrazzetto - 15 Jan 2009
Re: stampare la lista nell'esercizio 1
Si, potete utilizzare una funzione ausiliaria per effettuare le stampe.
--
EmanueleFusco - 16 Jan 2009
Main dell'EX.2
non mi è ben chiaro cosa debba fare la funzione main del secondo esercizio.
Leggendo il testo mi è sembrato che:
1 bisogna leggere prima di tutto un intero n non negativo
2 leggere n chiavi, dove se la chiave è positiva bisogna leggere anche un ulteriore dato da inseire nella lista, mentre se la chiave è negativa bisogna cancellare un elemento dall lista.
Dall'esempio fatto sul foglio xro, mi sorge un dubbio
leggo n=8(quindi in teoria dovrei leggere 8 chiavi positive e 8 valori da inserire nella lista)
n=8
kiave (1) 10
val (1) 0.43
kiave (2) -1
val (2) non và letto
kiave (3) 1
val (3) 6
kiave (4) 2
val (4) 3.45
kiave (5) -4
val (5) non va letto
kiave (6) -2
val (6) non va letto
kiave (7) 14
val (7) 2.46
kiave (8) 4
val (8) 12.03
C'è un 14 finale xchè?
E' giusta la mia interpretazione?
-- Users.1243045 - 16 Jan 2009
Re: Main dell'EX.2
n=8|kiave(1)=10|val(1)=0.43|kiave(2)=-1 |val(2)=non và letto|kiave(3)=1|val (3)=6|kiave(4)=2|val(4)=3.45 |kiave(5)=-4|val(5)=non va letto|Kiave(6)=-2|val (6)=non va letto|kiave(7)=14|val(7)=2.46| kiave(8)=4|val(8)=12.03| C'è un 14 finale sarà la x o sbaglio? E' giusta la mia interpretazione?
-- Users.1243045 - 16 Jan 2009
Re: Re: Main dell'EX.2
Dopo aver letto n e poi n valori di chiavi ed eventuali altri valori (se la chiave è positiva) viene letto anche un intero x. Il 14 che dice lei è questo x, l'output è infatti dato dal massimo sbilanciamento e dal valore dell'elemento con chiave x, se presente nella tabella
--
RobertoPetroccia - 16 Jan 2009
Dubbio su liste Ex.1
Buonasera, vorrei sapere se è possibile (viene giudicato corretto) inserire gli elementi nelle due liste da dietro cioè in coda, quindi avendo le due liste invertite...e se non è possibile, posso usare una funzione ausiliaria che me le torni invertite??
--
NicolaDonato - 16 Jan 2009
Re: Dubbio su liste Ex.1
Le liste devono essere generate rispettando l'ordinamento non decrescente, pertanto gli inserimenti andranno effettuati nella posizione corretta in base al valore ricevuto in input (quindi in testa se l'elemento è più puccolo di tutti gli elementi presenti, in coda se è più grande e da qualche parte nel mezzo negli altri casi...).
--
EmanueleFusco - 16 Jan 2009
Re: Re: (senza titolo)
D'accordo per la lista *origine; ma quando SPOSTO gli elementi nellle liste *mult..... e *resto, li inserisco in ordine inverso...dalla cosa alla testa....dall'esempio, al posto di
5 30 40, stampo 40 30 5.....è consentito?
Se non lo è, posso invertirli con una funzione ausiliaria?
--
NicolaDonato - 16 Jan 2009
Re: Re: Re: (senza titolo)
Adesso ho capito la domanda

Si, in linea teorica potresti inserirli in ordine inverso e poi invertire la lista, ma sarebbe meglio effettuare gli inserimenti nell'ordine corretto (ad esempio usando una coda). Inserire gli elementi in testa e poi invertire la lista è comunque preferibile piuttosto che scorrere l'intera lista per ogni inserimento.
Comunque le liste al termine della chiamata di funzione devono essere ordinate.
--
EmanueleFusco - 16 Jan 2009
Esercizio 2, funzione inserisci
E' possibile dichiarare la funzione inserisci nel seguente modo:
void inserisci(Nodo * * tabella, int c, double v);
invece che:
void inserisci(Nodo * tabella[], int c, double v);
?
--
SimoneBronzini - 16 Jan 2009
Re: Esercizio 2, funzione inserisci
Le due dichiarazioni sono assolutamente equivalenti, pertanto usare l'una o l'altra non cambia nulla nel modo in cui dovrai implementare il corpo funzione ed effettuare chiamate alla funzione stessa. Comunque, mantieni il prototipo come presentato nel testo dell'esercizio.
--
EmanueleFusco - 19 Jan 2009
paramatro n esrcizio 2
Se l'intero n che il secondo esercizio prende in input è zero non dobbiamo stampare nulla...ma il valore x dobbiamo comunque prenderlo in input o una volta preso n=0 si termina il programma?
--
AlessandroColetta - 19 Jan 2009
Re: paramatro n esrcizio 2
Se n vale 0, potete terminare il programma immediatamente, senza leggere altri valori, e non dovrete stampare nulla. Se leggerete comunque anche il valore della chiave da stampare, non verrà considerato errore (ovviamente la chiave letta non sarà presente nella tabella - vuota - e quindi non deve comportare nessuna stampa).
--
EmanueleFusco - 19 Jan 2009
Segmentation fault Ex2
Dopo aver dichiarato il prototipi dati dall'esercizio, dopo aver letto n>0 , una chiave positiva e un valore double,mando in esecuzione la funzione inserisci nel seguente modo.Metto anche il codice delle dichiarazioni delle variabili,.
Mi genera l'errore di segmentation fault
nella funzione inserisci metto una stampa di controllo tipo printf("qui");
ma essa non viene viusalizzata
Nodo * tab[10]={NULL};
int n=0;
int chiave=0;
double valore=0;
...
Leggo n >0
Leggo chiave>0
Leggo valore di tipo double ed eseguo l'inserimento
prima però faccio stampare n,chiave,valore per accettarmi che siano giusti(infatti lo sono)
inserisci(tab,chiave,valore);
e mi genera l'errore dopo aver letto il double.
-- Users.1243045 - 19 Jan 2009
Re: Segmentation fault Ex2
senza avere il codice della funzione che causa il segmentatio fault non è facile risponderti... comunque in linea di massima, mi immagino che tu abbia tentato di memorizzare i valori passati in input risolvendo una variabile di tipo puntatore a nodo inizializzata a NULL (quindi senza averla assegnata ad un'area di memoria allocata con una malloc).
--
EmanueleFusco - 19 Jan 2009
Ex.1 Caso particolare: stampare lista vuota
Se in input diamo solo multipli o divisori oppure sono tutti resti il programma mi va in segmentation fault.... mi chiedo se voi considererete la possibilità che la lista effettivamente non si divida, e cosa fare per risolvere questo caso
--
EmanueleMungai - 19 Jan 2009
Re: Ex.1 Caso particolare: stampare lista vuota
Allora... capire perchè un programma va in segmentation fault senza leggerlo richiede doti divinatorie di cui sono sprovvisto
Comunque, se il problema si presenta nel caso in cui una lista è vuota, è probabile che tu stia cercando di accedere a dei campi di un elemento Nodo, usando un puntatore inizializzato a NULL (tradotto, prima di cercare di leggere un campo di uno struct risolvendo una puntatore, dovete controllare che non punti a NULL).
--
EmanueleFusco - 19 Jan 2009
Re: Re: Ex.1 Caso particolare: stampare lista vuota
ma se la lista è vuota è normale che la testa punti a NULL (o perlomeno io l'ho inizializzata a NULL) e non contenendo alcun elemento mi va in segmentation fault se provo a stampare la lista vuota.....
void stampalista (Nodo* ptesta)
{
if(ptesta==NULL){
return;}
while(ptesta->succ!=NULL)
{
printf("%d ", ptesta->val);
ptesta=ptesta->succ;
}
printf("%d", ptesta->val);
}
--
EmanueleMungai - 19 Jan 2009
Re: Re: Re: Ex.1 Caso particolare: stampare lista vuota
Quello che diceva Emanuele è che se provate ad accedere al campo val o succ di un elemento NULL avete un errore di segmentation fault, quindi prima di eseguire istruzioni del tipo h->val o h->succ dovete assicurarvi che h non sia NULL come nella funzione stampa da lei descritta.
--
RobertoPetroccia - 19 Jan 2009
problema elementi succ nella ricorsione
Nel primo usando la ricorsione e andando a stampare con la chiamata a funzione per la stampa dal main...le teste mi danno null.....il problema è che non riesco a tornare indietro con la ricorsione alla testa delle liste.... se provo a mettere nella ricorsione un elemento successivo ad esempio:
funzione(lista->succ);
...mi da errore.... posso dichiarare nel main due nodi? che puntano alla teste delle due liste???o non è possibile???perchè non so come risolvere questo problema...
--
MarcoBernardi - 19 Jan 2009
Re: problema elementi succ nella ricorsione
Sicuramente tutti i parametri passati alla funzione devono essere dichiarati nel main e poi passati in maniera appropriata alla funzione. Dovete stare attenti a quando modificate le teste delle liste per il fatto che il C usa la call by value, se volete modificarle o ritornate le nuove teste oppure usate il passaggio dei parametri all funzione per riferimento. Se le teste continuano ad essere NULL vuol dire che non ha aggiornato i loro valori.
--
RobertoPetroccia - 19 Jan 2009
Se la chiave non c'è?
Nel secondo esercizio cosa dobbiamo stampare se la chiave inserita alla fine non è stata inserita precedentemente e quindi la lista che le corrisponde è vuota?
--
SimoneBronzini - 19 Jan 2009
Re: Se la chiave non c'è?
Se la chiave cercata non è presente nella tabella, verrà stampato solo il massimo sbilanciamento.
--
RobertoPetroccia - 20 Jan 2009
(senza titolo)
error: request for member ‘succ’ in something not a structure or union
questo è l'errore che mi viene detto passando alla funzione l'elemento successivo cosi significa???
--
MarcoBernardi - 20 Jan 2009
Re: (senza titolo)
Stando a quello che dice l'errore pare che lei provi a chiedere l'accesso al campo succ a qualcosa che non ha tale campo e che per di più non è né una struttura né un'unione (quindi un tipo di dato con campi al proprio interno). Controlli che la variabile su cui chiede il campo succ sia in effetti una struttura che contiene tale campo.
--
RobertoPetroccia - 20 Jan 2009
Tipo Inserimento esercizio 2
Mi scusi professore, ma come va fatto l'inserimento? in modo ordinato crescente o decrescente, in testa o coda?? grazie
--
GiuseppeImperato - 20 Jan 2009
Re: Tipo Inserimento esercizio 2
Per il primo esercizio viene richiesto che "tutti gli elementi devono essere inseriti nelle liste rispettando l’ordinamento non decrescente per il campo val". Per il secondo esercizio potete inserire gli elementi nelle liste come volete, sta a voi capire il modo più intelligente (se ce ne è uno) rispetto alle operazione da eseguire sulla tabella.
--
RobertoPetroccia - 20 Jan 2009
domanda home1: -1 finale, ed output
salve, prima domanda: se l'utente inserisce come primo valore -1, la lista sarà vuota, ma il programma dovrà prendere in questo caso il valore k, oppure se si inserisce subito -1 il prog deve terminare senza bisogno del k? seconda domanda: va bene formulato così il codice per l'output?i valori di ogni lista separati da uno spazio e le due liste una a capo dell'altra....grazie
.
.
stampa(multipli_e_divisori);
printf("\n");
stampa(resto);
.
.
--
MarioGreco - 20 Jan 2009
Re: domanda home1: -1 finale, ed output
La risposta alla prima domanda la trova sopra (abbiamo già risposto), per la seconda l'output così organizzato va bene.
--
RobertoPetroccia - 20 Jan 2009
(senza titolo)
ah capito scusate ma mi ero dimenticato che chiamavo il successivo di un nodo NULL chiedo venia per la distrazione grazie mille
--
MarcoBernardi - 20 Jan 2009
Suggerimento sull'identificare una lista vuota EX 2
Avendo all'inizio dell'esercizio una lista vuota, se la passassi alla funzione trova mi ritornerebbe un errore...
non potendo passargli un puntatore a NULL (sarebbe stato un buon modo per identificarla, ma se passassi poi lo stesso valore a INSERISCI incorrerei nel grosso problema di non riuscire ad avere mai un puntatore ne tanto meno a poter inserire qualcosa nella lista), volevo sapere se posso inizializzare la lista a un valore "non possibile"...tipo:
Nodo lista[SIZE]={{(-1),0.00,NULL}};
visto che la chiave non può essere negativa
(ho fatto una cosa simile a questa nell'esercizio uno inizializzando la lista vuota a Nodo originList={(-1),NULL}; )
Va bene come metodo?(ottengo il puntatore alla lista e posso identificare se è vuota)
Gia che ci sono, nell'esercizio 2 devo supporre che non verrà passata mai una chiave pari a 0? (sarebbe impossibile eliminarla)
--
FrancescoBelladonna - 20 Jan 2009
Re: Suggerimento sull'identificare una lista vuota EX 2
La funzione trova non prende in input una lista, bensì un vettore di puntatori.
Anche se il tipo di dato del primo argomento della funzione vi permette di passare come argomento alla funzione un puntatore alla lista per riferimento, concettualmente le due cose non coincidono.
In particolare, individuare l'indice nel vettore che identifica la lista in cui cercare l'elemento al momento della chiamata e poi passare l'indirizzo della cella alla chiamata alla funzione trova è concettualmente SBAGLIATO.
L'individuazione della lista in cui cercare l'elemento deve essere fatta all'interno della funzione trova.
Per quanto riguarda le liste vuote, invece, queste dovranno sempre essere rappresentate come puntatori a NULL e non come elementi con valori particolari.
--
EmanueleFusco - 20 Jan 2009
Problema malloc
Salve professore,
ho un problema con la malloc, in quanto non mi alloca memoria, ovvero, il puntatore 'testa' che dovrebbe ricevere l'indirizzo, è sempre a NULL.
Ho incluso le librerie stdio.h, malloc.h, stdlib.h.
Non so proprio cosa fare, anche cercando in internet non ho trovato una soluzione.
Lei ha qualche idea?
Qui sotto le posto il codice che ho usato per verificare se 'testa' è a NULL.
testa=malloc( sizeof(Nodo) );
if(testa!=NULL){
printf("testa!=null");
}
--
DamianoIlacqua - 21 Jan 2009
Re: Problema malloc
Il codice da lei scritto sembra corretto, o più precisamente quello sotto descritto. Con questa istruzione sta creando un nuovo elemento di tipo Nodo puntato da testa. A questo punto testa dovrebbe punatare alla nuova memoria allocata e non più a NULL se la malloc è riuscita ad allocare tale memoria. Provi a mettere lo \n nella stampa per forzare il print a schermo. Non ci sono grosse cose da dire a riguardo e non posso credere che il suo computer non abbia memoria per allocare un elemento di tipo Nodo. Riprovi e mi faccia sapere.
Nodo* testa = NULL;
testa=(Nodo*)malloc( sizeof(Nodo) );
if(testa!=NULL){
printf("testa!=null\n");
}
--
RobertoPetroccia - 21 Jan 2009
Re: Re: Suggerimento sull'identificare una lista vuota EX 2
C'è un problema: avendo il puntatore a NULL alla lista vuota, come faccio a modificarla (in teoria dovrebbe essere modificata tramite tale puntatore...ma se punta a NULL nella funzione, non potrò mai modificarla, anche perchè la lista è per forza vuota inizialmente)
Mi spiego meglio:
la funzione separa_liste (dell'esercizio 1) ad esempio, ha tre liste come puntatori, la prima ha valori (origine) e le altre due sono necessariamente puntatori NULL. Detto questo, come farò poi a modificarle all'interno di una funzione? (essendo NULL, ribadisco che non ho alcun puntatore ad esse)
--
FrancescoBelladonna - 21 Jan 2009
Re: Re: Re: Suggerimento sull'identificare una lista vuota EX 2
L'esempio che ho riportato prima non era molto corretto (effettivamente io sono SICURO che due liste siano vuote alla chiamata di funzione), però invece nell'esercizio 2, io devo inserire i valori nella lista tramite la funzione "inserisci", ora, all'inizio la lista sarà totalmente vuota e io non posso passare NULL come parametro alla funzione (altrimenti quella non inserirebbe mai nessun valore), ma per controllare dove va inserito il prossimo nodo, dovrò fare i soliti listaPtr->succ ...e incorrerei nel grosso problema se listaPtr è vuoto...(e non null, ammenoche nn lo inizializzo come tale)
--
FrancescoBelladonna - 21 Jan 2009
Re: Re: Re: Re: Suggerimento sull'identificare una lista vuota EX 2
Lei può controllare se una lista è vuota semplicemente controllando che il puntatore alla testa di tale lista sia diverso da NULL. Inizialmente il puntatore sarà NULL ma poi per effetto delle chiamate alla funzione inserisci tale puntatore verrà aggiornato.
--
RobertoPetroccia - 21 Jan 2009
Re: Re: Re: Re: Suggerimento sull'identificare una lista vuota EX 2
La ringrazio, adesso ho capito!
Senta visto che venerdi 23 il server andrà down alle 8 di sera (come sempre) è possibile rimandare la consegna del compito a sabato alle 12?(perdiamo 4 ore, in piu molta gente torna a casa per quell'ora circa!)
--
FrancescoBelladonna - 22 Jan 2009
Re: Problema malloc
Professore, purtroppo non va neanche così.
Non so cosa fare, vorrei scrivere il programma, però se poi non gli viene assegnata memoria, è solo codice sprecato.
Mi rendo conto che è una cosa molto bizzarra e con la quale io stesso non ne avevo mai avuto a che fare.
Lei non ha suggerimenti/consigli in merito?
Mi faccia sapere.
--
DamianoIlacqua - 22 Jan 2009
Re: Re: Problema malloc
Se il codice postato da Roberto non causa la stampa della stringa "testa!=NULL" c'è qualcosa di molto strano sullla macchina che stai utilizzando... in questo caso prova ad utilizzarne un'altra...
--
EmanueleFusco - 22 Jan 2009
Conferma esercizio 2
Giusto una conferma volevo:
ottenere l'index della lista, bisogna fare chiave%10, quindi se come chiave è passato 100, l'index è 0?
--
FrancescoBelladonna - 22 Jan 2009
Re: Conferma esercizio 2
Si...
--
EmanueleFusco - 22 Jan 2009
Re: Re: Re: Problema malloc
Ok, a questo punto credo non consegnerò quest'hw...
--
DamianoIlacqua - 22 Jan 2009
Re: Re: Re: Re: Problema malloc
Se hai dei problemi particolari e modo di venire in dipartimento in giornata puoi venire a chiedermi spiegazioni alla stanza 301 (avvisami con una mail a fusco[at]di.uniroma1.it nel caso).
--
EmanueleFusco - 22 Jan 2009
X Damiano problema malloc
Ciao mi scuso sin d'ora se rispondo, ma volevo solo suggerire a damiano di
fare una prova stampando (dopo la malloc) direttamente il contenuto di t come da codice sotto.
Un saluto
Nodo * t=malloc( sizeof(Nodo) );
printf ("t %p \n", t);
--
LuisaDiDionisio - 22 Jan 2009
Re: Problema malloc
@ Prof. Fusco:
Purtroppo non ho possibilità di venire a roma in giornata comunque, per qualsiasi problema, se lei acconsente mi segno il suo indirizzo di posta elettronica.
@Luisa
Di Dionisio:
Il codice che mi hai suggerito effettivamente restituisce un indirizzo di memora (0x...).
Ora mi domando, se il problema non sia intermittente.
Non so, fino a poco fa non andava, ora va.
Forse è il caso di eseguire un bel format e reinstallare tutto.
Ora formatto e, se vedo che il problema non si ripresenta, mi metto a scrivere il codice.
Comunque sia, volevo fare una domanda ai prof:
Se funziona, potrei avere una proroga per cortesia?
Anche se mi mettessi subito dopo il format a scrivere codice, so già che non ce la farò entro le 8 di domani sera, dunque mi chiedevo se posso consegnarlo come termine ultimo lunedi.
Aspetto notizie, così appena ricevute formatto e mi metto a scrivere.
printf("Grazie della comprensione");
--
DamianoIlacqua - 22 Jan 2009
Re: Re: Problema malloc
Non ci saranno proroghe alla data di consegna. Avete avuto parecchio tempo per completare questo homework, e ormai siamo vicini agli esami.
--
EmanueleFusco - 22 Jan 2009
Re: Problema malloc
Perfetto, vedrò di consegnare almeno il primo esercizio.
Grazie dell'attenzione.
--
DamianoIlacqua - 22 Jan 2009
Esercizio 2, allocazione di memoria della tabella
essendo all'inizio il puntatore alla tabella NULL, per allocare la memoria della tabella (quindi un array di tipo Nodo dimensione 10) devo usare questa sintassi?
NodoPtr test;
test=malloc(sizeof(Nodo[10]));
--
FrancescoBelladonna - 22 Jan 2009
Re: Esercizio 2, allocazione di memoria della tabella
Errore mio, avevo capito che la struct era di dimensione 10 mentre è il puntatore di size 10...
Posso inizializzare tutto l'array di puntatori a NULL?
Nodo *test[SIZE]={NULL};
--
FrancescoBelladonna - 22 Jan 2009
Re: Re: Esercizio 2, allocazione di memoria della tabella
Credo che l'istruzione per inizializzare il vettore funzioni anche se vi consiglio sempre di controllare. Io essendo tradizionalista preferisco sempre un bel for in cui inizializzo tutte le caselline del mio vettore. In questo modo è sicuro che funzioni.
--
RobertoPetroccia - 22 Jan 2009
Re: Re: Re: Esercizio 2, allocazione di memoria della tabella
Non posso darle torto, anche io tendo a fare cosi (anche se SI funziona, almeno sulla mia macchina), non sono programmi cosi vasti da richiedere performance...
--
FrancescoBelladonna - 22 Jan 2009
Info primo homework
Salve professore,
Domandina veloce

Per quanto riguarda i divisori e multipli io l'elemento 0 l'ho escluso dall'essere sia un divisore che un multiplo del numero inserito è corretto ?
Per quanto riguarda le liste "multipli" e "resto"...
Io prima ho creato la lista origine riempita con i dati dunque a questa ho legato la lista multipli e una volta elaborata la lista multipli o legato la lista resto a questa creando quindi delle code.
E' quello che era possibile realizzare e che volevate?
--
AlainBucci - 22 Jan 2009
Re: Info primo homework
per multipli e divisori è corretto escludere 0 sia come multiplo che come divisore.
Quello che dici sulle liste mi risulta poco comprensibile. Hai in pratica creato un'unica lista che contiene prima la sequenza in input, poi la sequenza dei multipli e quindi la sequenza dei divisori? Se si, non va bene. A partire dalla lista contenente la sequenza in input avresti dovuto generare le due liste, quella dei multipli e quella dei divisori, spostando gli elementi della lista origine nelle due liste di destinazione.
--
EmanueleFusco - 22 Jan 2009
Re:Re: Info primo homework
ho creato un legame tra tutte le liste avendo come ultimo nodo della prima l'inizio della successiva.
Praticamente ho realizzato una lista origine, una volta finito gli input ho una lista con nodo->succ di valore di terminazione NULL
dunque elimino il valore null dall'ultimo nodo della lista origine alloco memoria a questo e assegno il puntatore a *multipli_e_divisori avendo dunque una lista in creazione nuova di zecca ma che parte dalla fine di un'altra lista. Questa lista multipli crescerà a seconda della necessità di informazioni dunque farà lo stesso con la lista resto collegandola dopo aver finito all'ultimo nodo della lista multipli e assegnando al puntatore *resto l'ultimo nodo della lista multipli ed elaborando anche questa.
Dunque alla fine mi ritrovo con due liste *multipli_e_divisori *resto con i valori richiesti pronti da stampare a schermo e la lista origine con il nodo impostato a NULL
Ho fatto così perchè ho letto:
la funzione separa_liste (o eventuali funzioni ausiliarie da essa invocate)
NON deve allocare nuova memoria ma modificare i campi succ degli elementi della lista * origine per costruire le due nuove liste.
L'ho inteso come crea la lista origine riempila accodagli un'altra lista elaboralala con i dati riempiendola se necessario e poi ancora un'altra la "resto"riempiendola se necessario...
Altrimenti avrei creato due nuove liste semplicemente separate da qualsiasi altro nodo

Il programma funziona avendo le due liste separate e la origine a null e rispecchia i parametri di input output
spero di essere stato esplicativo
--
AlainBucci - 22 Jan 2009
Re: Re:Re: Info primo homework
Quello che hai fatto non è corretto. Avendo gli elementi della lista origine non è necessaria alcuna nuova allocazione di memoria. Gli elementi della lista vanno spostati. Peraltro, se tu allochi nuova memoria su un puntatore e poi assegni questo puntatore al valore di un puntatore esistente, la nuova memoria allocata diventa inaccessibile (non hai più un riferimento per sapere dov'è) e non saresti in grado di liberarla.
--
EmanueleFusco - 22 Jan 2009
Re: Re:Re: Info primo homework
lo snodo che ho fatto funziona così
|--------|---------|-------
po pm pr
puntatore origine
puntatore multipli
puntatore resto
quindi sò a che indirizzo di memoria poter accedere per ogni lista che inizia.
Se mi dici che gli elementi della lista vanno spostati significa che devo creare altre due liste ciò significa che devo allocare altra memoria per altre due liste devo creare altre due Teste separate dalla prima e non successive come ho letto nel testo.Ma sicuramente ho qualche error di comprensione del testo XD
p.s a proposito ma la memoria dell'origine alla fine che non è + utilizzabile prima di nullare il puntatore come descritto dall'homework devo liberarla ? Sul secondo ex lo dice sul primo no
--
AlainBucci - 22 Jan 2009
DATA CONSEGNA!
RIBADISCO QUELLO CHE A DETTO IL COLLEGA:
...E VENERDI MATTINA ABBIAMO UN'ESAME!!!!!!!!! QUELLE 4 ORE VALGONO ORO!!!!
"visto che venerdi 23 il server andrà down alle 8 di sera (come sempre) è possibile rimandare la consegna del compito a sabato alle 12?(perdiamo 4 ore, in piu molta gente torna a casa per quell'ora circa!) !!!!!!!!!!!!!!!!!!!!!!!"
--
LicinioChingotuane - 22 Jan 2009
Re: DATA CONSEGNA!
La consegna NON VERRA PROROGATA. Questa è l'ultima risposta che darò a domande di questo genere.
--
EmanueleFusco - 22 Jan 2009
Re: Re: Re:Re: Info primo homework
Allora, lo spostamento degli elementi di una lista fa si che NON serva alcuna nuova allocazione di memoria. Lo spostamento richiede solamente la corretta assengazione dei puntatori. Ad esempio, eliminare un elemento da una lista significa modificare il campo next del suo predecessore (o la testa della lista se necessario). Inserire un elemento esistente in una lista significa far si che il campo next del suo predecessore nella lista lo punti e che il campo next dell'elemento inserito punti al suo successore nella nuova lista.
--
EmanueleFusco - 22 Jan 2009
Re: Re: Re:Re: Info primo homework
Forse ho capito....
chiede praticamente di creare una nuova lista sfruttando i puntatori a nodi già esistenti?
Tipo sò che per primo mi serve lo snodo secondario di origine lo prendo e lego i nodi rimanenti per permettermi di scorrerlo senza troncare la lista origine... dunque lo assegno a multipli e divisori come testa... dunque trovo gli altri e li lego?

devo solo utilizzare i snodi già esistenti per crearne uno nuovo con testa *multipli_e_divisori?

e l'altro *resto giusto?
spero sia così non trovo altre soluzioni
Primo homework: la stampa delle due liste và bene se la effetuo così? printf("%d ",mdiv->val); printf("%d ",rest->val); è solo un esempio di come effettua la stampa del singolo valore non della lista XD facendo così sono separati tutti da uno spazio ma l'ultimo elemento stampato ha uno spazio dopo di se.. o se metto un carattere di nuova linea và a capo dopo l'ultimo carattere stampato... và bene o devo eliminarlo non vorrei lo prende come valore di risultato il vostro test O_O
Sul secondo homework mi domandavo se inserisco una chiave negativa la ricerca della chiave da eliminare nella tabella essendo sempre positive dovrò prima convertire il numero da negativo a positivo per poi cercare quella corrispondente esatto?
--
AlainBucci - 22 Jan 2009
Stampa secondo esercizio
mi scusi professore mi sorge un dubbio... Ma se io inserisco N=1, e c=-4 devo inserire anche la x? in tala caso la stampa come sarà?
--
GiuseppeImperato - 22 Jan 2009
Re: Stampa secondo esercizio
La x va inserita, poi se no è presente nella tabella non stampare il suo valore. Se tutte le liste sono vuote il massimo sbilanciamento direi sia zero.
--
RobertoPetroccia - 23 Jan 2009
Consegna
Rispetto la decisione di non prorogare la data di consegna ma credo sia anche giusto rispettare la data sul PDF.
Se fosse possibile inviare i codici via mail (come quando ci ritorna il nostro per la conferma) la scadanza resterebbe invariata.
--
BrandoDeBenedictis - 22 Jan 2009
Re: Consegna
Bene ... vediamo di risolvere questo tasto dolente della consegna. Ho parlato questa mattina con i tecnici e mi hanno ASSICURATO che questa sera non ci sarebbero stati problemi sulla macchina twiki, quindi dovreste poter consegnare entro la mezzanotte come sempre. Nel caso dovesse succede qualcosa E SOLO IN QUESTO CASO vi dico di mandare le soluzioni via mail al mio indirizzo (
petroccia@diNOSPAM.uniroma1.it) e poi mi occupo io di sistemare le cose. Create ovviamente una cartella con il vostro username su twiki, al suo interno un'ulteriore cartella con nome hw5 e in hw5 mettete i vostri file .c.
Se twiki funziona e qualcuno o tanti di voi mi mandano le soluzioni via mail cestino tutto.
Ci tengo a sottolineare che quanto detto da Emanuele (concordato nei giorni passati con me) non è barbaria o non voler tenere in considerazione le vostre esigenze. Il fatto è che (oltre ad aver avuto abbastanza tempo per implementare le soluzioni e capendo che in genere vi riducete sempre sotto deadline per la consegna) la scadenza è vicina alle date di esame, ci occorre il tempo per correggere e valutare i vostri homeworks e per potervi dire come sono andati prima che sosteniate l'esame. E' vostra necessità sapere se siete esonerati dalla prova di laboratorio il prima possibile. Per via di queste necessità la deadline non può essere spostata, ma come detto sopra invece che fino alle 20.00 avete tempo fino alle 24.00
--
RobertoPetroccia - 23 Jan 2009
Se n è 0 nell'esercizio 2...
stampo unicamente "0"? (non viene memorizzata nessuna coppia, quindi non vi è nessun valore e lo sbilanciamento è necessariamente 0!)
Un'altra cosa, io in entrambi gli esercizi ripulisco tutta la memoria allocata dopo aver stampato ciò che è stato richiesto, va bene lo stesso? (nell'esercizio 2 la pulisco anche con la funzione elimina, ma alla fine per sicurezza ho fatto fare anche una pulizia di quel che è rimsato), valgrind mi dice che non ci sono "leaks", infatti a ogni malloc corrisponde un free, va bene così?
--
FrancescoBelladonna - 23 Jan 2009
Re: Se n è 0 nell'esercizio 2...
Se non ci sono coppie, come dice giustamente lei, il massimo sbilanciamento è zero, quindi tale valore va stampato. Non essendoci elementi nelle liste la chiave x letta in input non verrà trovata e quindi il valore corrispondente all'elemento con chiave x non può essere stampato. Quindi in output avrete un solo valore che è 0 (il massimo sbilanciamento)
--
RobertoPetroccia - 23 Jan 2009
Sbilanciamento
Se le liste sono tutte vuote lo sbilanciamento è 0 ?
O non stampiamo nulla?
--
BrandoDeBenedictis - 23 Jan 2009
Re: Sbilanciamento
Stampate 0.
--
RobertoPetroccia - 23 Jan 2009
Re: Sblilanciamento
....SCUSATE....
--
BrandoDeBenedictis - 23 Jan 2009
Hw 2
Dobbiamo considerare anche il caso di un "n" negativo?
--
BrandoDeBenedictis - 23 Jan 2009
Consegna
Allora... sempre nel caso ci dovessero essere problemi con il twiki (e solo in quel caso e comunque entro mezzanotte), la consegna via mail per il canale AD dovreste farla al mio indirizzo di posta fusco[at]di.uniroma1.it
--
EmanueleFusco - 23 Jan 2009
Re: Se n è 0 nell'esercizio 2...
... per quanto riguarda la "pulizia" della memoria prima dell'uscita dal programma, non è necessaria in quanto al termine dell'esecuzione tutta la memoria allocata viene comunque liberata. Potete comunqe, se preferite farlo, deallocare tutte le strutture dati allocate dopo aver effettuato le stampe.
--
EmanueleFusco - 23 Jan 2009
esercizio 2 piu valori alla stessa chiave
scusate ma se una chiave viene ripetuta più di una volta con campo val diversi e quella chiave è proprio la x quale valore devo stampare?
esempio
2 17 4 17 8 17
stampo il 4 o l'8?
--
TaniaIelpo - 23 Jan 2009
Re: esercizio 2 piu valori alla stessa chiave
Non possono esistere 2 nodi con la stessa chiave, nel tuo caso la funzione inserisci cancellerebbe il 4 con l'8.
--
BrandoDeBenedictis - 23 Jan 2009
homework2
Domanda!
Mi chiedo ma se nell'homework 2 se inseriamo da subito 0 per N quindi abbiamo 0 valori da inserie il maxsbilanciamento che sarà 0 và stampato ugualmente?E la X in caso N=0 la faccio inserire ugualmente?
Perchè io come logica se tendo ad analizzare 0 valori è inutile creare una tabella... se altrimenti è così correggo subito! Attendo ansiosamente una risposta anche perchè dovrei riconsegnare in caso di modifica!
Aggiungo
Primo homework: la stampa delle due liste và bene se la effetuo così? printf("%d ",mdiv->val); printf("%d ",rest->val); è solo un esempio di come effettua la stampa del singolo valore non della lista XD facendo così sono separati tutti da uno spazio ma l'ultimo elemento stampato ha uno spazio dopo di se.. o se metto un carattere di nuova linea và a capo dopo l'ultimo carattere stampato... và bene o devo eliminarlo non vorrei lo prende come valore di risultato il vostro test O_O?
--
AlainBucci - 23 Jan 2009
Re: homework2
Visto che sono buono ed è l'ultimo homework rispondo anche se ho risposto alla stessa domanda qualche minuti fa. Usare una pagina visibile a tutti serve anche ad evitare di rispondere più volte alle stesse domande. Dopo questa precisazione ecco la risposta. Non inserire nessuna coppia, oppure inserire delle coppie ed eliminarle tutte, comporta avere tutte le liste della tabella vuota, quindi il massimo sbilanciamento è zero e va stampato. Il valore x va cmq letto in input e se non presente (perché le liste sono vuote o perché non trovato) non viene stampato ed in output avremo solo il valore per il max sbilanciamento, altrimenti in output avremo sia sbilanciamento che campo val dell'elemento con chiave x. Spero di essere stato chiaro ed aver precisato eventuali altri dubbi
--
RobertoPetroccia - 23 Jan 2009
Re: Re: homework2
Mi scusi XD ho passato tutta la notte a farli per accellerare i tempi e non mi sono accorto O_O!!
Aggiungo una domanda:
Primo homework: la stampa delle due liste và bene se la effetuo così? printf("%d ",mdiv->val); printf("%d ",rest->val); è solo un esempio di come effettua la stampa del singolo valore non della lista XD facendo così sono separati tutti da uno spazio ma l'ultimo elemento stampato ha uno spazio dopo di se.. o se metto un carattere di nuova linea và a capo dopo l'ultimo carattere stampato... và bene o devo eliminarlo non vorrei lo prende come valore di risultato il vostro test O_O? ?
--
AlainBucci - 23 Jan 2009
Re: Re: Re: homework2
Gli elementi devono essere separati da UNO ED UN SOLO spazio oppure vai a capo tra di loro. Eventuali vai a capo o spazi prima del primo valore stampato o dopo l'ultimo valore stampato vengono ignorati
--
RobertoPetroccia - 23 Jan 2009
home2, caso n=0 e risposte una il contrario dell'altra :|..quale è giusta?
EDIT: ho scritto la domanda poco dopo l'inserimento della risp del prof.. scusate... ora ogni dubbio è chiarito... scusate ancora
--
MarioGreco - 23 Jan 2009
Re: home2, caso n=0 e risposte una il contrario dell'altra :|..quale è giusta?
ragazzi cercate di leggere prima di ripostare sempre la stessa domanda. 0 è per il secondo esercizio: in questo caso, senza valori nella tabella stampate solo lo sbilanciamento (che è 0 per la tabella vuota). Per il primo esercizio, il -1 come primo valore significa liste vuote, e in questo caso non dovete stampare nulla.
--
EmanueleFusco - 23 Jan 2009
Re: Re: Re: Re: homework2
ok grazie

ho modificato subito facendo inserire anche la x nonostante sia n=0 e stampando il maxsbilanciamento che sarà 0

grazie a tutti i professori per la cortesia e pazienza
--
AlainBucci - 23 Jan 2009
Ex 2....val
Per la variabile val noi prendiamo da input un double e lo dobbiamo ristampare("nel caso che la chiave giri") con solo 2 decimali?????
--
BrandoDeBenedictis - 23 Jan 2009
Re: Ex 2....val
si
--
EmanueleFusco - 23 Jan 2009
Sempre Ex2
Mentre per "n" e per "x" possiamo assumere che non vengano mai inseriti valori negativi?
--
BrandoDeBenedictis - 23 Jan 2009
Re: Sempre Ex2
Anche leggere la traccia è importante. Nel secondo esercizio si dice che n avrà valori interi non negativi, mentre x ha valore intero. E tra le precedenti risposte abbiamo già detto che considereremo x > 0.
--
RobertoPetroccia - 23 Jan 2009
CHIARIMENTI EX.2 se n=0
C'è stata una discordanza tra le risposte nel caso di n=0. Ho appena visto che in precedenza Emanuele ha detto che per n=0 non si sarebbe dovuto stampare nulla, mentre secondo me lo sbilanciamento andrebbe stampato cmq. Per evitare problemi di questo tipo non effettueremo test con n=0 in maniera tale da non penalizzare nessuno.
--
RobertoPetroccia - 23 Jan 2009
Re: Re: Sempre Ex2
Si per la "n" l'avevo letto sulla traccia mentre non avevo notato il post sulla x.
Ok quindi nessun controllo su questi casi..
Grazie per le risposte
--
BrandoDeBenedictis - 23 Jan 2009
Puntualizzazione chiave
Scusate ho capito che k sarà >0, n=0 non sarà valutato e x sarà >0.
Non ho capito però se il valore chiave potrà assumere il valore 0 oppure sarà sempre >0 (per l'inserimento) e <0(per l'eliminazione).
Grazie
--
GianlucaCarroccia - 23 Jan 2009
Re: Puntualizzazione chiave
cito PDF :"valori delle chiavi pari a zero non sono
ammessi e non verranno mai presentati come input"
--
BrandoDeBenedictis - 23 Jan 2009
Puntualizzazione chiave
Mi scuso! Con tutte queste domande e questi valori ammessi o non ammessi per un attimo non ho capito più niente!
--
GianlucaCarroccia - 23 Jan 2009
printf e scanf di un double
Per stampare il valore double ho usato printf("%.2f"...);
per leggerlo invece ho usato scanf("%lf"...);
vanno bene questo due metodi o devo scrivere printf("%.2lf"...); ?
--
FrancescoBelladonna - 23 Jan 2009
Re: printf e scanf di un double
... per i double la stampa andrebbe fatta con il formato "%.2lf".
--
EmanueleFusco - 23 Jan 2009
Re: Re: printf e scanf di un double
Scusi professore sul libro per la specifica di conversione per la printf di un double da: " %f " (la stessa di un float)
E' un errore di stampa??
Quindi dobbiamo fare la printf con %.2lf o lasciamo %.2f ?
(il risultato credo sia lo stesso)
--
BrandoDeBenedictis - 23 Jan 2009
ex1
Scusate ancora ma leggendo non riesco a trovare la risposta a una mia domanda.
Se nell'esercizio uno inserisco subito -1 k poi và letto o lo posso saltare?
Io ho saltato in caso sia -1 la lista la richiesta di inserire k è corretto?
--
AlainBucci - 23 Jan 2009
No such template def TMPL:DEF{PROMPT:thread}