Tags:
tag this topic
create new tag
view all tags
---++ Domande (e risposte) sull' HomeWork4aa0203 * Inserite le vostre domande usando la form [[#form][in fondo alla pagina]] * Vedi anche: HomeWork4aa0203, SoluzioneHomework4aa0203, RisultatiHomework4aa0203. ---- %TOC% ---- %RED% ---+++ ATTENZIONE L' HomeWork4aa0203 sulle funzioni ricorsive è stato spostato (come HomeWork5aa0203) e va consegnato: * dopo la mezzanotte di mercoledì 20 Novembre * entro la mezzanotte di domenica 24 Novembre E' in linea un nuovo HomeWork4aa0203 sulla ricerca di sottostringhe in un testo che va consegnato: * entro la mezzanotte di mercoledì 20 Novembre %FINE% ---- ---+++ A proposito delle librerie ...nei due esercizi precedenti le ho usate (math e string), visto che nelle domande e nelle risposte si è parlato tranquillamente di pow e di memset(non perchè non sapessi fare da sola la potenza o la pulizia di un vettore, ma xchè se ci sono delle funzioni che già lo fanno e mi è venuto normale usarle). presumo che io non sia la sola. ...a questo punto mi chiedo se i 2 esercizi verranno zottati al primo test perchè non compilano (e mi chiedo pure se sarai così compassionevole da non accettare altri include escluso stdio da questo esercizio in poi). (p.s. la settimana studio (e lavoro (probabilmente male)) informatica e la domenica vado a zappare il giardino) -- Comment added by Users.LauraRavagli on 13 Nov 2002 La domanda va bene sia per HW4 che per HW5 ... Aggiungerò l'opzione ==-lm== in compilazione per permettervi di usare *math.h*. Qualcuno si ricorda se per usare *string.h* ci vuole una libreria specifica? (non ho il pc sotto mano). PS. spero che nessuno se la sia presa per la battuta sullo zappare ... non era assolutamente detta in tono sarcastico. -- Users.AndreaSterbini - 13 Nov 2002 ---- grazie, l'algoritmo di ricerca può essere tranquillamente inventato (o meglio creato),no? (...come fai a non avere il pc sotto mano??) ;) -- Users.LauraRavagli Nel caso dell'algoritmo semplice basta notare che ai lati dell'asterisco di sono una o due stringhe normali e cercare quella/e in modo adeguato (scusate se non vi dico di più). Nel caso di asterischi ripetuti non ci ho ancora pensato, ma penso che ci si possa ricondurre (ad esempio ricorsivamente) al caso precedente. (non ho il tempo di scrivere un programma e provare a compilarlo per capire quale libreria ci vuole ...) -- Users.AndreaSterbini - 14 Nov 2002 ---- ---+++ Case and Switch Ho provato a fare un cast a intero di argv, beh funziona perche' ritorna il codice asci della lettera immessa come parametro da riga di comando ;)) il problema che sorge spontaneo invece e': il valore X (terzo parametro) all'inizio e' di tipo char.. il cui cast torna l'intero -1073742852. Mi sfugge qulcosa??? -- Comment added by Users.ElisabettaDAiutolo on 13 Nov 2002 Per convertire una stringa nel corrispondente numero intero potete usare la funzione : * ==sscanf(const char* stringa, const char* formato, ...)== Esempio: <verbatim> int numero = 0; char * stringa = "42"; /* la risposta alla domanda fondamentale sulla vita, l'universo e tutto quanto (Douglas Adams - Guida Galattica per Autostoppisti) */ sscanf(stringa,"%d",&numero); /* a questo punto in numero c'e' il valore intero 42 */ </verbatim> -- Users.AndreaSterbini - 13 Nov 2002 ---- ---+++ apici e doppi apici 1 dal testo dell'esercizio non capisco bene quando saranno usati gli apici singoli e quando i doppi. 1 nella stringa da cercare e/o nella stringa in cui cercare ci possono essere apici e/o doppi apici? -- Users.LauraRavagli - 13 Nov 2002 Gli apici (o doppi apici) servono nella riga di comando per indicare la stringa *al sistema*. Ma non vengono passati al programma. Per passare un apice (semplice o doppio) nella stringa bisogna precederlo con il backslash (vedete *man bash*) -- Users.AndreaSterbini - 14 Nov 2002 ---- ---+++ delucidazioni Dai vari esempi che lei ha fatto non ho capito che Output vuole nel seguente caso... HomeWork4aa0203 'or*sa' 'la vecchia con la borsa salta il fosso e si capotta' Come penultima riga vuole 19 perche' 'or' inizia in quella posizione e 0 come ultimo output perche' non trovando 'sa' non puo' chiudere il pattern......... o l'output deve essere 0 0 perche' e' come se non ha centrato la richiesta?! spero di essere stato chiaro....... -- Comment added by Users.LeonardoParisi on 14 Nov 2002 In questo caso l'output (tranne le 6 righe iniziali) è 19 7 (c'e' un *sa* in *salta*). Come è detto nell'esercizio, se il pattern non viene trovato si ritorna 0 0. -- Users.AndreaSterbini - 13 Nov 2002 ---- ---+++ Altro quesito Esiste un limite al numero di caratteri jolly che ci possono stare in un pattern e quanto le sotto stringhe che si vengono a creare sono lunghe? es: 'Me*ssa*g*gi' una cosa del genere e' possibile? tra l'altro spero che non deve essere sensibile alle maiuscole -- Comment added by Users.LeonardoParisi on 14 Nov 2002 Il numero massimo di jolly in un pattern lungo N caratteri è N (ma in questo caso il pattern equivale ad un unico asterisco che corrisponde a tutto il testo).%RED% _[ ora non più ... si cerca la stringa *più corta* ]_ %FINE% La sottostringa massima che può essere _trovata_ nel testo è lunga quanto tutto il testo (p.es. se il pattern è '*') %RED% _[ ora non più ... si cerca la stringa *più corta* ]_ %FINE% Una maiuscola è un carattere diverso dalla corrispondente minuscola ... a buon intenditore ... -- Users.AndreaSterbini - 14 Nov 2002 Leonardo, guarda che in questo caso sarebbe piu' complicato scrivere un programma che fosse _case insensitive_ (che non distingue le minuscole dalle maiuscole) di uno che fosse _case sensitive_. Le maiuscole sono gia' diverse dalle minuscole, mentre se le volessi considerare equivalenti ci dovresti pensare tu. -- Users.ArcangeloTripi - 14 Nov 2002 ---- ---+++ si deduce che... Lei puo mettere un testo anche lungo N caratteri magari con N uguale a 10^9 ?! Perche' lei capisce se stavamo in c---++ potevo usare vector, qui mi tocca dichiarere le variabili all'inizio e senza sapere una lunghezza massima non e' facile gestire un testo di N caratteri..... -- Comment added by Users.LeonardoParisi on 14 Nov 2002 ---- Scusami, ma visto che le stringhe vengono passate al programma dal sistema, che ti importa della loro lunghezza? (devi farne delle copie?) -- Comment added by Users.AndreaSterbini on 14 Nov 2002 ---- ---+++ Ancora conversione da stringa a intero lei ci consiglia di usare Per convertire una stringa nel corrispondente numero intero potete usare la funzione : sscanf(const char* stringa, const char* formato, ...) Esempio: <verbatim> int numero = 0; char * stringa = "42"; sscanf(stringa,"%d",&numero); /* a questo punto in numero c'e' il valore intero 42 */ </verbatim> invece della sscanf ho usato atoi..... la strada verso la beatidune e' lunga e tortuosa... :) -- Comment added by Users.ElisabettaDAiutolo on 14 Nov 2002 Brava, ottimo suggerimento. -- Users.AndreaSterbini - 14 Nov 2002 ---- ---+++ Algoritmo... Salve prof., non frequento il corso e per il quarto homework bisogna implementare un'algoritmo visto a lezione, quindi la mia domanda è: posso trovare quest'algoritmo sul libro o da qualche altra parte o ne posso creare uno liberamente? -- Comment added by Users.AndreaArtibani on 14 Nov 2002 Vi decidete a scrivere gli appunti su twiki? (mi sto rivolgendo a chi frequenta) L'algoritmo spiegato a lezione è quello più semplice ... se ben mi ricordo fa così: * per ogni posizione *i* < della lunghezza del testo * per ogni carattere del pattern a posizione *j* * se il carattere NON corrisponde col corrispondente carattere del testo (all'indice *i---+j*) * si va avanti di un carattere nel testo (*i---++*) * se si è terminato il ciclo e tutti i caratteri del pattern sono stati trovati si torna i * altrimenti si torna -1 per indicare che non si è trovato il pattern Per il testo del programma guardate sugli AppuntiEsercitazioni2002 -- Users.AndreaSterbini - 14 Nov 2002 ---- ---+++ Significato del jolly e parti facoltative Prendendo spunto dall'esempio: * Pattern con 1 jolly, presente nel testo * esercizio4 'or*sa' 'la vecchia con la borsa salta il fosso senza rincorsa' 1) Se esiste il carattere jolly tra "or" e "sa" deve esserci almeno un carattere (se non ho capito male il testo il jolly può valere 0)? 2) Perchè il risultato è "b<B>or</b>sa salta il fosso senza rincor<B>sa</B>" e non "b<B>or</b>sa <B>sa</B>lta[...]"? (se dal punto 1 il jolly vale minimo 1 carattere) 3) (dal punto 2) visto che la parte facoltativa 1 e la 2 restituiscono la più <B>corta</B> e <B>lunga</B> referenza, come fare per distinguerle nella consegna?? (immagino che verranno effettuati test diversi...o immagino male!?) -- Users.TizianoMorgia - 14 Nov 2002 ---- 1 il jolly _assorbe_ 0 o più caratteri (anche zero!) 3 OK, mi accorgo di aver creato una inutile confusione. Ho modificato l'esercizio, il match da cercare e' %RED% %BIGGER% *il piu' corto* %FINE% %FINE% (sempre) -- Comment added by Users.AndreaSterbini on 14 Nov 2002 ---- ---+++ Parte Facoltativa Salve Prof. Io non ho capito molto bene una cosa della parte facoltativa; lei ha fatto l'esempio: esercizio4 've*<b>sa</b>*se' 'la <b>vecchia con la borsa salta il fosso se</b>nza rincorsa' ma se il pattern fosse stato "ve*<b>se</b>*<b>bo</b>"?? non avrebbe trovato nulla? -- Comment added by Users.MarcoEsposito on 14 Nov 2002 Esatto -- Users.AndreaSterbini - 15 Nov 2002 ---- ---+++ Ancora algoritmo... Lo so sono di marmo, ma non ho capito le specifiche dell'algoritmo di ricerca!!! Potrei avere qualche altra informazione o meglio ancora, potrei avere il codice di esempio dell'algoritmo visto a lezione(se è stato esposto)? Grazie mille... -- Comment added by Users.AndreaArtibani on 15 Nov 2002 L'algoritmo lo dovete trovare voi. Per l'esempio fatto in aula giro la tua richiesta ai tuoi compagni che seguono le lezioni in aula. Scrivete gli appunti nella pagina AppuntiEsercitazioni2002. -- Users.AndreaSterbini - 15 Nov 2002 ---- ---+++ Cast a char while (testo[i] != (char)'0') .... e non come a lezione char(0) accidenti a me e quando non ho usato il semplice while (testo[i] != '\0') metto in linea adesso il cerca stringa nella stringa.... -- Comment added by Users.ElisabettaDAiutolo on 15 Nov 2002 A lezione ho detto ==(char)0== cioè il cast del numero 0 come char. -- Users.AndreaSterbini - 15 Nov 2002 ---- ---+++ argv 1 come si fa ad estrarre i singoli caratteri da *argv. 1 un'altro dubbio ma si possono utilizzare le librerie di gestione delle stringhe. -- Comment added by Users.EmanueleDormi on 15 Nov 2002 1 argv è un vettore di stringhe. Infatti è definito come ==char * argv[]== . Per ottenere uno dei suoi elementi basta scrivere ==argv[0] argv[1] argv[2] ...== . Ogni stringa è a sua volta un *vettore* di caratteri, che si possono indirizzare come gli elementi di un vettore. Insomma, è come se si trattasse di una matrice di caratteri, le cui rige sono le stringhe. 1 Direi di no -- Users.AndreaSterbini - 15 Nov 2002 ---- ---+++ Dubbi in seguito alle variazioni del compito Ho visto che ha modificato il compito in modo che il carattere jolly corrisponda alla sequenza più corta di caratteri. In questo caso il suo post poco sopra non è più valido: cercando infatti il solo carattere jolly la stringa più corta dovrebbe essere nulla (trovo gli -zero- caratteri che corrispondono al pattern). Stessa cosa per un pattern tipo<br> <i>la vecchia*</i><br> equivale a cercare<br> <i>la vecchia</i><br> o sbaglio?<br> -- Comment added by Users.LudovicoGrossi on 16 Nov 2002 Hai ragione, e anzi: %RED% _[ATTENZIONE: ho corretto una imprecisione]_ %FINE% * il pattern '*qualcosa' fa match dal carattere 0 alla fine della prima occorenza di 'qualcosa' * il pattern 'qualcosa*' è equivalente a 'qualcosa' -- Users.AndreaSterbini - 15 Nov 2002 ---- ---+++ Domanda sugli spazi Volevo sapere se noi diamo in input le seguenti stringhe: 'orsa' e 'ancor sai che' la parola 'orsa' che si trova tra 'ancor' e 'sai' ma è divisa da uno spazio viene trovata dal nostro programma o no ? grazie -- Comment added by Users.CristianoMarra on 18 Nov 2002 Come fa a trovarla, visto che lo spazio è un carattere che non ne fa parte? -- Users.AndreaSterbini - 18 Nov 2002 ---- ---+++ ancora chiarimenti a questo punto: es4 "*" "pippo pluto e paperino" cosa dovrebbe dare? -- Comment added by Users.LauraRavagli on 18 Nov 2002 Direi 0 0. -- Users.AndreaSterbini - 18 Nov 2002 ---- ---+++ modalità esame Gentile Prof., vorrei sapere se gli esercizi sono obbligatori per poter accedere all'esame? Inoltre che cosa succede in caso di esercizi annullati e come questo influenzerà all'esame? Grazie, Razumovsky Elina. -- Comment added by Users.ElinaRazumovsky on 18 Nov 2002 Gli esercizi servono a imparare. Come effetto collaterale vi danno la possibilità di conquistare alcuni punti del voto finale (senno', conoscendo lo studente-tipo, nessuno li farebbe). Faccio notare che i punti vengono assegnati solo se l'esame finale viene passato con un buon voto (altrimenti ci viene il dubbio molto fondato che siano stati copiati). -- Users.AndreaSterbini - 18 Nov 2002 ---- ---+++ Mannaggia il carattere jolly!!!! Allora ricapitolando tutto... Il carattere jolly assorbe 0 o più caratteri, percio' se io scrivessi: %RED% es4 "or*sa" "la vecchia con la b<b>orsa</b> salta il fosso con la rincorsa" %FINE% mi darebbe 19 4, perchè è la stringa <b>più corta!!</b> invece %RED% es4 "*" "<b>la vecchia con la borsa salta il fosso con la rincorsa</b>" %FINE% mi darebbe 0 53, che sono tutti i caratteri della stringa più corta dall'inizio alla fine (cioè tutta!), altrimenti che carattere jolly sarebbe... altro esempio %RED% es4 "borsa*" "la vecchia con la <b>borsa salta il fosso con la rincorsa</b>" %FINE% è la stringa più corta da borsa alla fine, perciò mi darebbe 18 35 io l'ho capito così... altrimenti lo devo rifare tutto... :( -- Comment added by Users.MarcoEsposito on 18 Nov 2002 Dato che cerchiamo il match più corto l'asterisco finale si ignora e l'asterisco singolo corrisponde a 0 caratteri. -- Users.AndreaSterbini - 18 Nov 2002 ---- anche x me la logica dovrebbe essere questa... "la*g" "se questa è <b>la frase la string</b>a" e non "la*g" "se questa è la frase <b>la string</b>a" poi la logica la decide il prof e il prg deve fare quello che viene chiesto. Però siamo un pò---+ chiari una volta x tutte semmai mettendo tutti questi esempi sulla homework4 2 gg ( e mi vergogno a dirlo ) di lavoro buttati (se ci mettevo così tanto ero disoccupata!! :) ) -- Comment added by Users.LauraRavagli on 18 Nov 2002 Per essere precisi, quello che dovete cercare è: 1 il primo match possibile 1 di lunghezza minima (tra quelli trovati a quella posizione) -- Users.AndreaSterbini - 18 Nov 2002 ---- rettifico: non buttati xò... sigh! -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- ---+++ WebNotify sarà una domanda banale, ma vorrei sapere come si aggiunge al WebNotify? E.R. -- Comment added by Users.ElinaRazumovsky on 18 Nov 2002 ---- io ho fatto così: Edit, copi e incolli l'ultimo nominativo presente e lo cambi con il tuo nome e la tua email e poi salvi però mi sa che non funziona così xche non mi notifica niente.. boh -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- ---+++ FUNZIONI STRING.H <i><font size= 3>è possibile far uso delle funzioni della string.h (es. : strtok, strlen eccetera)?</font></i> -- Comment added by Users.CristianoMarra on 18 Nov 2002 No -- Users.AndreaSterbini - 18 Nov 2002 ---- ---+++ La prima o la piu' corta? Dato che la ricerca della corrispondenza piu' corta e' *MOLTO* piu' difficile della ricerca della prima corrispondenza, come e' specificato nella risposta sopra a Laura Ravagli, vorrei una conferma che <verbatim> ./hw4 'la*ve*' 'la donna giovane e la donna vecchia saltano la verde siepe' </verbatim> debba dare come risultato <verbatim> ... 0 30 </verbatim> perche' effettua la seguente corrispondenza %RED%./hw4 'la<u>*</u>ve' '<b>la<u> donna giovane e la donna </u>ve</b>cchia saltano la verde siepe'%FINE% e non la seguente %RED%./hw4 'la<u>*</u>ve' 'la donna giovane e la donna vecchia saltano <b>la<u> </u>ve</b>rde siepe'%FINE% e perche' comunque non si deve tenere conto dell'ulteriore corrispondenza %RED%./hw4 'la<u>*</u>ve' 'la donna giovane e <b>la<u> donna </u>ve</b>cchia saltano la verde siepe'%FINE% (anche perche' se e' cosi' penso di aver finito!) -- Comment added by Users.ArcangeloTripi on 18 Nov 2002 Te lo confermo, dovete cercare *il primo match*, e _tra tutti quelli che iniziano lì_, il più corto. Quindi il match giusto è %RED%./hw4 'la<u>*</u>ve' '<b>la<u> donna giovane e la donna </u>ve</b>cchia saltano la verde siepe'%FINE% E la risposta è (a parte le 6 righe): 0 30 -- Users.AndreaSterbini - 18 Nov 2002 ---- questa volta siamo d'accordo ;) -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- ---+++ Ancora Jolly!! Questa domanda penso che sia un pò ovvia, cmq la faccio ugualmente... :) Se deve essere ignorato il jolly finale, cioè, <b>borsa*</b> allora deve essere ignorato quello iniziale <b>*borsa</b>. Giusto? -- Comment added by Users.MarcoEsposito on 18 Nov 2002 ---- così sembra -- Comment added by Users.LauraRavagli on 18 Nov 2002 No, vuol dire che il match parte dal carattere 0. Ora correggo. -- Users.AndreaSterbini - 18 Nov 2002 ---- :mad: -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- ---+++ La riga di comando Scusate ragazzi! Mi potete dare qualche esempio di programma che prende input da riga di comando ? Grazie. -- Comment added by Users.OltionDoda on 18 Nov 2002 ---- una cosa del genere: <verbatim> int main(int argv, char *argc[]) { int numeroArgomenti = argv; char *nomeEseguib =argc[0]; char *primoarg =argc[1]; char *secondoarg =argc[2]; char *narg =argc[argv]; } </verbatim> -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- Anche se si puo' dare un nome qualsiasi ai primi due argomenti di main, e' decisamente preferibile rispettare la consuetudine di indicarli in questo modo <verbatim> int main(int argc, char *argv[]) </verbatim> anche per migliorare la leggibilita' del programma da parte di altri. I nomi derivano da <b>argc</b> <b>arg</b>ument <b>c</b>ount <b>argv</b> <b>arg</b>ument <b>v</b>ector cosi' come indicato da K&R (gli inventori del C). -- Users.ArcangeloTripi ---- ---+++ Ho notato una cosa Dai suoi esempi ho notato che la posizione che si viene a trovare nella parola è il numero della posizione del carattere precedente cioè: 'cri' eccocri' dall' esempio che ci ha dato darà 4 però se io faccio: 'cri' 'criecco' dall' esempio che ci ha dato darà 0 io mi chiedevo ma non è errato a questo punto, dato che zero deve restituirlo quando non troviamo la parola? -- Comment added by Users.CristianoMarra on 18 Nov 2002 Il primo carattere ha indice 0 (dopotutto si tratta di un array di caratteri) -- Users.AndreaSterbini - 18 Nov 2002 ---- deve restituire 0 0 se non trova niente,il 1° zero è l'inizio della stringa trovata (che di default è zero), il 2° zero dice che la lunghezza della stringa trovata è 0 nei tuoi esempi deve restituire: cri eccocri -> 4 3 cri criecco -> 0 3 effettivamente credo che 0 0 poteva essere sostituito da qualsiasi n 0 (oppure da 0 e basta) perchè dire che non ha trovato niente equivale a dire che la stringa trovata ha lunghezza 0 xò gli esercizi sono testati automaticamente quindi prendi x vero quanto sopra :) -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- ---+++ :mad: il responso finale è "*la" "è la mia" -> 0 4 "*" "è la mia" -> 0 0 (che secondo me visto il caso sopra non ha---+ molto senso) "la*" "è la mia" -> 2 2 <b>COSI'??</b> -- Comment added by Users.LauraRavagli on 18 Nov 2002 ---- oh, yeah! -- Comment added by Users.AndreaSterbini on 18 Nov 2002 ---- ---+++ PER IL PROF! Professore xke quello che ha fatto negli esercizi 2 e 3 non lo fa anche al primo esercizio??? Ovvero quello di dare un'occhiata ai compiti e corregere una stupidata, esempio una parentesi, uno \n, un punto e virgola ecc, e ricompilare il tutto? xke altrimenti non è giusto ke al 1 esercizio queste cose nn le ha fatte mentre al 2 e 3 si! la prego di rispondere! -- Comment added by Users.AndreaSantoro on 18 Nov 2002 Appena trovo il tempo lo fo. -- Users.AndreaSterbini - 19 Nov 2002 ---- ---+++ Manco strlen() Scusi professore non si puo' usare manco strlen()?! Cio' per sapere quanto e' lunga una stringa mi deve far fare un ciclo for di controllo? -- Comment added by Users.LeonardoParisi on 18 Nov 2002 ---- ---+++ Parametri e lunghezza degli stessi Un piccolo quesito... anzi due... :-) 1) Bisogna controllare il numero di parametri giusti? Per esempio, se scrivo una cosa del genere: ./uni4 "ABC" "ABCDEF" "Blablabla" "un'altro parametro" il programma deve uscire o prendere semplicemente i due parametri "interessanti" e continuare il suo lavoro? e nel caso opposto, con assenza di parametri che vengono richiesti: ./uni4 "un solo parametro" oppure: ./uni4 che cosa bisogna fare? 2) Una curiosità: c'è un limite (quantificabile in caratteri) che il sistema operativo Linux riserva ad ogni parametro? Nel Dos, una riga di comando (quindi l'insieme dei parametri divisi da spazi) non può superare i 255 caratteri. -- Comment added by Users.AngeloFerrantini on 18 Nov 2002 ---- ---+++ Numero degli Argomenti Professore ho letto la spiegazione del Deitel a Pag.477 a riguardo e nell'esempio fa un controllo per verificare che siano passati il numero esatto di argomenti. Lo facciamo anche noi o come al solito ci fidiamo sul fatto che alla correzione verranno passati i parametri corretti? -- Comment added by Users.MarcoMennillo on 18 Nov 2002 Puoi non controllarli. -- Comment Users.AndreaSterbini - 19 Nov 2002 ---- ---+++ Numero Jolly e' possibile che capitano piu' jolly uno dietro l'altro del tipo ***bor*sa oppure bor**sa ecc....? -- Comment added by Users.LeonardoParisi on 19 Nov 2002 Certo -- Comment Users.AndreaSterbini - 19 Nov 2002 ---- ---+++ Solo caratteri ascii? L'esempio dato piu' su da Laura Ravagli "*la" "è la mia" -> 0 4 in realta' a me da' "*la" "è la mia" -> 0 5 cosi' come invece di "la*" "è la mia" -> 2 2 mi risulta "la*" "è la mia" -> 3 2 e questo deriva dal fatto che il carattere 'è' non e' un carattere ascii, e dal nostro compilatore i caratteri non ascii vengono rappresentati con due byte (almeno ?). Infatti, mi risulta correttamente "*la" "e la mia" -> 0 4 "la*" "e la mia" -> 2 2 Spero quindi che, anche se nelle specifiche non era indicato, vengano usati solo caratteri ascii nelle due stringhe passate come argomenti, senno' mi salta tutto. E, soprattutto, lo vorrei sapere prima di domani notte. L'algoritmo posso anche adattarlo per i caratteri non ascii, ma se possibile vorrei evitarlo. -- Comment added by Users.ArcangeloTripi on 19 Nov 2002 Accidenti! Lasciamo stare i caratteri non ascii. Userò stringhe ascii per i tests. -- Comment Users.AndreaSterbini - 19 Nov 2002 ---- ---+++ Spero non si ripeta più Non so se il problema è stato solo il mio, ma questo esercizio è stato una gran confusione, tanto che soltanto oggi (lunedi e quindi a due giorni dalla consegna) si è finalmente riusciti a capire quale deve essere l'output dell'esercizio. Mi fa "estremamente piacere" sapere che dovrò rifare l'esercizio visto che ci sono stati nuovamente dei cambiamenti. Spero non si ripeta più. -- Comment added by Users.ClaudiaAgostinelli on 19 Nov 2002 ---- ---+++ Concordo Non sai quanto possa essere d'accordo e quanto mi faccia piacere sapere che non sono io ad essermi totalmente rimbambita! Fatto sta che questa è una pur magra consolazione, visto che tanto ci toccherà comunque ripensare tutto! -- Comment added by Users.ClaudiaCantelli on 19 Nov 2002 ---- ---+++ Concordo anch'io, pero'... Difficile negare che ci sia stata una gran confusione, ma vediamone anche i lati positivi. Dopotutto, ci sono stati una serie di spunti per approfondimenti e discussioni, e stimoli per ragionare. E, come ha detto qualcuno, "quello che non ci uccide, ci rende piu' forti". Certo, basta che non ci uccida. -- Comment added by Users.ArcangeloTripi on 19 Nov 2002 ---- soprattutto grazie ai miei interventi e alle correzioni puntuali di Arcangelo ;) -- Comment added by Users.LauraRavagli on 19 Nov 2002 ---- :D basta ho finito, non mettete altre pulci nell'orecchio o altra carne sul fuoco sennò vi riempio di virus! :D :D -- Comment added by Users.LauraRavagli on 19 Nov 2002 ---- bhè...io un dubbio ce l'avrei, ma se non lo vuoi sapere... -- Comment added by Users.ClaudiaAgostinelli on 19 Nov 2002 ---- ---+++ Indici di Argu Professore l'altro giorno a lezione lei ha detto che argu può avere un indice che diversifica il pattern dal testo! Poi ha anche detto che se mettiamo due indici vicino es:argu[2][0] vuol dire che stiamo esaminando il primo carattere del testo !! Però mi chiedevo l'esatta sintassi che devo usare per specificare questa cosa! Potrebbe aiutarmi perchè in questo modo non sarebbe una matrice?? Grazie -- Comment added by Users.MassimilianoSgarra on 19 Nov 2002 E' corretto quello che hai scritto! argu[2][0], questo vuol dire che stai richiedendo il 3° argomento, infatti l'argomento [0] sarebbe prog4.exe, l'argomento [1] è il primo argomento, nel nostro caso la stringa da cercare e [2] il testo SU CUI cercare la parola. Con lo [0] stai "puntanto" il 1° carattere. Credo che tutto questo non sia una matrice, visto che stai utilizzando la funzione arg.., ma non sono sicuro.. -- Comment added by Users.MatteoLaBella on 19 Nov 2002 ---- ---+++ Non si puo' Con tutta la buona volontà.. non si puo'....mi son stressata per fare l'esercizio cinque poi la scadenza posticipata e ricomincia poi con il quattro... mah.. il 4 lo ho appena consegnato ma adesso ho visto cha e' cambiato anche il cinque.. QUESTO E' UN BERSAGLIO MOBILE... >:| poi avevo chiesto di non mettere scadenze di domenica...dato che non ho la linea telefonica a casa e posso fare la sottomissione solo dall'ufficio.... -- Comment added by Users.ElisabettaDAiutolo on 19 Nov 2002 ---+++ Concordo! il professor Piperno ci aveva garantito che l'esercizio sarebbe stato rimandato, ma evedidentemente la cosa non è andata proprio così! SPeriamo di farcela :( <br>-- Users.ElisaDomeniconi - 19 Nov 2002 ---- Con il quinto punto richiesto dal programma (il carattere jolly cerca di corrispondere alla più corta sequenza possibile) si vuol dire che se ci sono due seguenze contenenti tutti i caratteri jolly disgiunte dobbiamo scegliere la seconda se più corta. Ad es. con input uguali a: 'or*ta' 'la vecchia con la bORsa salTA il fosso con la gonna cORTA' l'output dopo le sei righe dovrà essere uguale a: I°)'19 10' II°)'52 4' -- Comment added by Users.SilvioLattanzi on 19 Nov 2002 Come detto prima: * cercate la *prima sequenza* che corrisponde * tra quelle che iniziano in quel punto: *la più corta* -- Comment Users.AndreaSterbini - 19 Nov 2002 ---- ---+++ Confusione, Bersaglio mobile, Non si ripeta più ... Ragazzi, la decisione di considerare il match *più corto* l'ho pubblicata il 14 novembre (controllate), il che vuol dire 6 giorni prima della consegna. Lo scambio di domande successivo è servito solo a chiarire bene il punto. Se non capite perchè l'ho fatto provate ad implementare la versione facoltativa che cerca il match più lungo ... (non è terribilmente difficile, ma è un po' peggio). Tenete presente che io rispondo alle vostre domande con la massima celerità per chiarire i dubbi che voi avete. Vi dò esercizi di difficoltà variabile in modo da permettervi di esercitarvi al livello che potete raggiungere ... questa non è una gara ... voi programmando imparate! Visto che Piperno non ha spiegato le stringhe, l'ho fatto io a lezione, sul Deitel c'e' un ottimo capitolo che le spiega, abbiamo fatto un esercizio assieme in aula ... se non seguite il corso io che ci posso fare? L'esercizio 5 è stato fin dall'inizio in versione di *bozza* ed è stato spostato immediatamente, non appena mi sono accorto che due canali non avevano studiato le funzioni ricorsive. -- Comment added by Users.AndreaSterbini on 19 Nov 2002 ---- ---+++ Consegna di domenica? Mi rendo conto che la consegna di domenica può stressarvi ... Vedrò di spostare le prossime scadenze a giorni lavorativi. -- Comment added by Users.AndreaSterbini on 19 Nov 2002 ---- ---+++ Un'ultima cosa prima di inviare l'esercizio... si è detto che '*' vale anche zero caratteri... quindi: ./uni4 "AB*CD" "ABCDEF" ritorna la posizione e la lunghezza della sottostringa trovata. Ma: ./uni4 "ABC*CD" "ABCDEF" ritorna 0 0? -- Comment added by Users.AngeloFerrantini on 19 Nov 2002 Ovviamente sì ... non ci sono due C nel testo come invece nel pattern. -- Comment added by Users.AndreaSterbini on 19 Nov 2002 ---- ---+++ La facoltativa? Scusi ma non ho capito: 1 per chi fa la parte facoltativa il prog deve saper accettare anche piu' di due caratteri jolly e basta o anche che trova la piu' lunga sottostringa? 1 strlen() si puo usare? -- Comment added by Users.LeonardoParisi on 20 Nov 2002 1 sì (ma hai letto il testo dell'esercizio? :-) ) 1 no -- Users.AndreaSterbini - 20 Nov 2002 ---- ---+++ Finito! Non credevo di farcela! Ma nel giro di 2 nottate e mezza ci sono riuscito!...se il mio hw passera' i test naturalmente! PS (x Arcangelo): ho provato le stringhe proposte da Laura: "è la mia" e a me ritornano gli stessi risultati (di lei intendo). Naturalmente non so assolutamente spiegarmi il perche' :D ! -- Comment added by Users.TizianoMorgia on 20 Nov 2002 ---- Probabilmente dipende dal modo in cui estrai o conti i caratteri. Se usi funzioni di libreria, queste agiranno a livello di caratteri, non di byte. Dato che io scorro le stringhe byte per byte per trattare i caratteri (come si fa classicamente per gli esercizi in C), se un carattere e' memorizzato in piu' di un byte (come avviene per i caratteri non ascii) la cosa non funziona. -- Users.ArcangeloTripi on 20 Nov 2002 ---- anche io scorro carattere x carattere... boh... -- Comment added by Users.LauraRavagli on 20 Nov 2002 ---- Si cerca il *primo* match e tra questi il piu' *corto* anche per la versione con piu' jolly -- Comment added by Users.AndreaSterbini on 20 Nov 2002 ---- ---+++ Risultato... Scusi prof., Quali risultati devono avere le seguenti chiamate?:<br> 1 've*sa**se' 'la vecchia con la borsa salta il fosso senza rincorsa' 0 0 o 3 38<br> 1 '*la' 'la vecchia con la borsa salta il fosso senza rincorsa' 0 2 o 0 17<br> Grazie mille. -- Comment added by Users.AndreaArtibani on 20 Nov 2002 Ma quante volte lo devo dire? 1 3 38 1 0 2 -- Users.AndreaSterbini on 20 Nov 2002 ---- ---+++ Ancora sui caratteri non ascii - leggere le avvertenze Attenzione, contiene una trattazione lunga e noiosa sui caratteri non ascii, non particolarmente utile per lo svolgimento dell'esercizio. Chi non e' interessato puo' saltarla tranquillamente, non si perde niente. Puo' provocare sonnolenza e stato comatoso. Allora, se scrivo un programmino del genere <verbatim> #include <stdio.h> main (int argc,char *argv[]) { int i; char *s="è la mia"; printf("Stringa interna\n"); for (i=0; s[i] != '\0'; i---++) printf("car. n. %d: %d\n", i, s[i]); printf("Stringa da parametro\n"); for (i=0; argv[1][i] != '\0'; i---++) printf ("car. n. %d: %d\n", i, argv[1][i]); } </verbatim> e lo lancio con un comando del tipo ./non_ascii "è la mia" vedo che ho dei risultati diversi, anche se le stringhe a quel punto sembrerebbero le stesse. L'unica differenza e' che in un caso la stringa e' stata passata da parametro, e nell'altro e' stata costruita internamente. La spiegazione che do' e' che vengono usati due possibili diversi standard di rappresentazione dei caratteri non ascii. Quindi, a correzione (o meglio integrazione) della risposta data a Tiziano, quello che probabilmente e' successo e' che lui agisce su di una stringa "costruita" dentro il programma, mentre io agisco direttamente sulla stringa del parametro. Il fatto che due stringhe "esternamente" uguali abbiano una diversa rappresentazione interna non deve scandalizzare, dopotutto sono due soggetti diversi che hanno costruito le stringhe, in un caso il compilatore e nell'altro il sistema operativo che poi l'ha passata al programma, ed evidentemente ognuno ha usato lo standard che riteneva piu' opportuno per i suoi scopi. Per chi fosse tanto masochista da essere interessato alla trattazione dei caratteri multibyte, lo standard piu' usato e' l' ISO/IEC 10646, che prevede due livelli, l'UCS4, capace di rappresentare qualsiasi lingua, compreso il cinese, ed un sottoset UCS2. Ampiamente usato e' il set UNICODE, compatibile con ISO/IEC 10646, sul quale si possono avere maggiori informazioni al sito www.unicode.org. Con questo, spero si siano chiariti tutti gli aspetti di questo argomento. (Ma se qualcuno ha dei dubbi, lo dica tranquillamente. Non so voi, ma io mi sto divertendo un sacco in queste pagine.) Firmato: il dottor Divago -- Comment added by Users.ArcangeloTripi on 20 Nov 2002 ---- ---+++ Paranoia da consegna Salve, ho appena consegnato l'esercizio. Dato che il nostro operato inizia a diventare "voluminoso" rispetto alle linee di codice, mi chiedevo se fosse possibile inserire nella conferma email anche l'md5sum del file ricevuto. In questa maniera potremmo essere certi che quello che abbiamo in locale e' esattamente identico a quello che e' arrivato a destinazione :) !! Firmato: il dottor Paranoia :P -- Comment added by Users.MauroFerrara on 20 Nov 2002 La vedo un po' dura. In realta', non spediamo un file di cui trovare l'md5sum, ma riempiamo un form. Ne' si puo' pensare di fare l'md5sum del file dal quale si fa il cut and paste, anche per un contenuto (apparentemente) identico risulterebbe quasi sicuramente diverso se si usa notepad, kate o quant'altro. E, anche se ci si mettesse d'accordo sull'editor da usare, basterebbe trascurare, ad esempio, qualche spazio finale per avere un checksum diverso di un programma in realta' corretto. Senza contare che non sarebbe "politically correct" verso chi usa Windows con cygwin, che si dovrebbe procurare una versione per DOS, ed a cui non potrei che augurare buona fortuna. Infine, c'e' anche qualcuno che potrebbe chiedersi "ma che cavolo e' sto' md5sum?" Comunque, tranquillizzati. Le probabilità di un errore di trasmissione per i nostri files sono veramente evanescenti. -- Comment added by Users.ArcangeloTripi on 20 Nov 2002 ---- ---+++ Ultima Curiosità Mi è venuto un'ultimo dubbio! Se uno inserisce ese4 ec*ch vechia cosa deve uscire fuori? 1 - 2 o 0 - 0 ? -- Comment added by Users.AndreaBandino on 20 Nov 2002 ---- ---+++ Chiosa finale Certo che sta' vecchia l'abbiamo fatta saltare cosi' tanto che, se non le e' venuto un infarto, ha fatto un paio di gambe peggio di Schwarzenegger. -- Comment added by Users.ArcangeloTripi on 20 Nov 2002 ---- ---+++ X Arcangelo! Grazie Arca x oggi pomeriggio! mi hai dato un ottimo consiglio! Bella e alla prox! -- Comment added by Users.AndreaSantoro on 20 Nov 2002 ---- ---+++ scusi ma.... nella descrizione della parte facoltativa dell'esercizio 4 non parla di frase piu' lunga ma nella sua risposta "Confusione, Bersaglio mobile, Non si ripeta più ... " dice che la farte facoltativa deve cercare quella piu' lunga e ora? che devo fare.... -- Comment added by Users.LeonardoParisi on 20 Nov 2002 ---- Rileggiti il commento -- Comment added by Users.AndreaSterbini on 20 Nov 2002 ---- ---+++ Ancora md5sum Ciao Arcangelo, mi sono incuriosito dalla tua risposta ed ho deciso di provare in prima persona se era fattibile quanto avevo detto. I dati che inseriamo nel form credo vengano salvati su un file, che dovrebbe risultare identico al testo inviato.. Ho verificato inoltre la disponibilita' di md5sum sui vari sistemi (sotto). Continuando a cercare ho attestato la mia ipotesi relativa al fatto che le possibilita', con i browser più diffusi, che il file non arrivi a destinazione completamente non sono poi cosi' poche :( infatti, su google mi sono subito imbattuto in qualche documento che ti lascio come riferimento: http://support.microsoft.com/default.aspx?scid=KB;en-us;q208427 http://groups.google.com/groups?hl=it&lr=&ie=UTF-8&frame=right&th=fa9487423327bdd0&seekm=36664198.8E38E0E6%40ozy.dec.com#s Mi sono poi cercato di immedesimare nei panni di vari tipi di utente (alcuni devo dire piuttosto strani ;) ) ed ho testato l'affidabilita' di md5sum (il file usato non e' quello consegnato): <verbatim> [supergate@mordor supergate]$ uname -a;md5sum homework4.c Linux mordor 2.4.19-16mdk #1 Fri Sep 20 18:15:05 CEST 2002 i686 unknown unknown GNU/Linux 5a9f06d737131885a879570a228d8b12 homework4.c [supergate@mordor supergate]$ $ uname -a;md5sum c:/homework4.c CYGWIN_NT-5.0 SUPERGATE 1.3.14(0.62/3/2) 2002-10-24 10:48 i686 unknown 5a9f06d737131885a879570a228d8b12 *c:/homework4.c Administrator@SUPERGATE ~ C:\>ver Microsoft Windows 2000 [Versione 5.00.2195] C:\>md5sum c:\homework4.c 5a9f06d737131885a879570a228d8b12 *homework4.c C:\> $ md5sum homework4.c 5a9f06d737131885a879570a228d8b12 homework4.c $ uname -a SunOS excited 5.8 Generic_108528-06 sun4u sparc SUNW,Ultra-250 </verbatim> ho chiesto ad un amico di provare anche sulla sua macchina di lavoro: <verbatim> $ md5 homework4.c MD5 (homework4.c) = 5a9f06d737131885a879570a228d8b12 $ uname -a NetBSD ****.excite.it 1.5_ALPHA2 NetBSD 1.5_ALPHA2 #1: Thu Jul 25 17:20:45 MEST 2002 *****@*****:/usr/src/sys/arch/i386/compile/ i386 </verbatim> Direi perfetto no? :) Comunque mi rendo conto di essere un po' paranoico :( . Inoltre colgo l'occasione per ringraziarti, infatti, i tuoi posts mi sono stati spesso utili e mi hanno insegnato curiosita' di cui prima non ero a conoscenza. Per chi non sapesse cos'e' l'md5sum ho trovato una definizione in giro per la rete (noiosa almeno quanto questo mio post :p ma sicuramente piu' chiara di una mia possibile spiegazione). La "cut/pasto" qui sotto (in ogni caso l'url e': http://www.risorsehitech.it/informatica/guide/linuxfacile_3-4-5/mail-mkdir.php ) <verbatim> md5sum Un semplice caso di studio: vogliamo trasferire ad un'altra persona un file e vogliamo garantire la sua autenticità. Per fare questo possiamo utilizzare questo comando come segue: $ md5sum nomefile.tgz d41d8cd98f00b204e9800998ecf8427e nomefile.tgz La stringa alfanumerica che viene presentata è "l'impronta digitale" del file che può essere confrontata con quella di chi fornisce il file e chi lo riceve. In questo modo semplice possiamo tutelarci che il file non abbia subito modifiche nel passaggio. </verbatim> -- Comment added by Users.MauroFerrara on 21 Nov 2002 OK, mi hai convinto. Giriamo la richiesta a Sterbini. -- Comment added by Users.ArcangeloTripi on 21 Nov 2002 ---- Zzzzzz..... -- Comment added by Users.LauraRavagli on 21 Nov 2002 ---- ---+++ Caratteri non ASCII... rispondendo al post di Arcangelo: * Ancora non ho provato il tuo esempio (in uff. non ho gli strumenti per farlo), però una cosa la ricordo certamente: KDevelop non mi accetta la è accentata (se premo il tasto non fa nulla) xchè???...ma molto probabilmente non ha nessuna rilevanza. * Scusa l'ignoranza, ma cosa intendi per "scorrere byte x byte"?? Io scorro---+ o - come il tuo esempio ovvero: <verbatim> for (i=0; argv[1][i] != '\0'; i---++) printf ("car. n. %d: %d\n", i, argv[1][i]); </verbatim> * Non ho fatto nessuna copia dei parametri passati, uso argv...quindi "salta" la tua ipotesi, se ho capito bene quello che hai detto. * forse dico un'eresia: ma se un tipo char può essere di 1 o più byte secondo quale logica se stai trattando dei caratteri li scorri per byte e non x carattere? Inoltre: se ricevo in input un vettore di caratteri in cui appare un carattere non-ascii (o forse sarebbe meglio dire un carattere "ASCII esteso" visto che se non ricordo male la tavola ascii li comprende mettendoli al di sopra del famoso byte) come viene allocato il singolo char??...nel senso che: se argv[1][0] è una "a" e argv[1][1] è una "è" in memoria come viene allocato? Secondo me il tutto occupa (presupponendo che per la "è" servono 2 byte) 4 byte (2 per "a" e 2 per "è") e non 3 byte (1 per "a" e 2 per "è") altrimenti mi sfugge come fa a funzionare il puntamento argv[i][j]! Mi rimangono molti dubbi :-? -- Comment added by Users.TizianoMorgia on 21 Nov 2002 ---- A proposito di md5, mi sa che è più semplice se vi allego il testo dell'esercizio nel messaggio di conferma. -- Comment added by Users.AndreaSterbini on 21 Nov 2002 ---- ---+++ Ulteriore ed ultimo (almeno per me) post su caratteri non ascii. x Tiziano Butto li' un po' di risposte in modo non troppo sistematico. * Ti confermo la differenza tra la stringa costruita all'interno del programma e quella passata da parametro. Se a te isulta un'altra situazione, questo potrebbe essere legato anche al sistema usato. Le prove io le ho fatte con RedHat8 su Intel, usando la shell di default (bash?). Comunque, se oltre ai codici decimali stampo anche i caratteri, con printf("car. n. %d: %d %c\n", i, s[i], s[i]); invece di printf("car. n. %d: %d\n", i, s[i]); io ho delle brutte sorprese: risultano non stampabili su schermo i caratteri non ascii assegnati dallo stesso compilatore. Comunque c'e' da notare che in ogni caso i caratteri non ascii risultano avere codici numerici negativi, e questo li distingue dai caratteri ascii (ottavo bit settato). * Per quanto riguarda i sistemi grafici tipo KDevelop, VisualC---++, DevC++ etc., sara' una questione di gusti, preferisco non usarli. Sono uno di quelli che preferisce fare tutto "a manetta" fin quando e' possibile, e il fatto che KDevelop non accetta le accentate semplicemente mi conferma questa diffidenza. Questa pero' e' una questione di gusti e di abitudini, sicuramente ci sono molti che preferiscono usare questi tipi di ambienti. * Dicevo di scorrere i vettori byte per byte perche' sembrerebbero definiti in wchar.h delle funzioni analoghe a quelle di string.h, ma definite sul tipo wchar_t.h, che sembrerebbe avere una lunghezza di due byte e che dovrebbe contenere dei caratteri UNICODE. Sto usando tutti questi condizionali anche perche' non sono riuscito a trovare una documentazione adeguata in Linux, e se chiamo il comando "man UNICODE" mi viene fuori una documentazione incompleta addirittura del 1995. Qualcosa di piu' sull'argomento la trovo sul Petzold (la bibbia della programmazione di Windows), ma sinceramente a questo punto nonostante la mia notevole tigna butto la spugna. Non so se sono io, ma mi sembra che su tutto questo argomento ci sia una certa confusione in Linux. L'unico punto che confermo e' l'uso dei caratteri UNICODE che viene fatto in Windows per le varie internazionalizzazioni. Tutto questo detto, propongo una moratoria e di lasciar perdere i caratteri non ascii, multibyte o come li si voglia chiamare, e di riprendere l'argomento solo quando si dovesse presentare una necessita' impellente. Ultima cosa: hai notato che non da quando e' cominciata questa discussione, ma da ben prima, da quando ho cominciato a scrivere su twiki, non ho mai usato caratteri accentati, ma ho sempre usato gli apostrofi? Indovina perche'! -- Comment added by Users.ArcangeloTripi on 21 Nov 2002 ---- ---+++ Come ho fatto io: <pre>A differenza della soluzione presentata dal Prof oggi a lezione, che normalizzava il pattern prima di utilizzarlo, ho fatto così: Leggo il pattern carattere per carattere fino alla fine: - se il carattere corrente non è un asterisco metto il carattere in un sub-pattern (privo quindi di asterischi) - se è un asterisco chiudo il subpattern (aggiungendo \0) e lo cerco a partire dalla posizione attuale (che mi segno ad ogni ricerca) In questo modo il pattern *ciao***bello* (che cerchiamo, per esempio, in "ciao mamma guarda quanto sono bello") non va normalizzato, in quanto: - viene trovato un asterisco, la subpattern attuale è nulla: cerco nulla nel testo e mi ritorna sempre 0 (lo trova sempre in posizione 0) - continuo a leggere il pattern fino al prossimo asterisco e metto quindi nel subpattern la stringa "ciao" - cerco ciao - tengo traccia della posizione attuale (0---+ posizione in cui trovo "ciao" + lunghezza subpattern) - ora ho subito un'altro asterisco: non cambia nulla, il subpattern è vuoto, viene sempre trovato in posizione 0. - eccetera eccetera Naturalmente se non trovo un subpattern ritorno -1 ed esco da tutto stampando 0 e 0, ma sono dettagli. Ora, a parte la fretta che probabilmente mi ha costretto a non verificare bene tutti i casi (Murphy veglia su di noi), il criterio mi sembra buono, no? </pre> -- Comment added by Users.LudovicoGrossi on 27 Nov 2002 ---- ---+++ Lei è sicuro prof?(3) <div align="center"><font color="blue">ho esegutio i test che lei ha pubblicato e magicamente mi ritrovo tutti i no; è vero che non ho fatto la parte facoltativa ma i test con vecchia e ve*sa a me danno esito positivo, professore abbia pazienza ma questa è la quarta volta che succede (1 con l'homework 1, 2 con l'homework 5 e ora questa), le cose sono due o io ho l'unica red hat al mondo che il gcc funziona in un'altra maniera oppure non lo so A questo punto non lo so se farò gli altri homework(e quindi togliere tempo allo studio) se poi i risultati sono questi spero che possa rispondermi a questa domanda grazie</font></div> -- Comment added by Users.CristianoMarra on 05 Dec 2002 Hai messo un \n di troppo all'inizio delle 6 righe personali .... -- Comment added by Users.AndreaSterbini on 06 Dec 2002 ---- ---+++ mi spiega, x favore, che differenze ci sono prof? Salve prof. Ho letti i risultati ed i patterns utilizzati per "testare" gli homework4 e mi son venuti alcuni dubbi. 1 - Che differenze ci sono tra un pattern "*ve*sa*ri*", un "*ve*sa*ri" o un "ve*sa*ri" ? Non forniscono tutti il medesimo output? Perche dalle specifiche da lei redatte e relativi esempi: <li> Pattern con 1 jolly, presente nel testo </li> <li> <font color="red">esercizio4 'or<u>*</u>ta' 'la vecchia con la b<b>or<u>sa sal</u>ta</b> il fosso senza rincorsa'</font> </li> </ul> <pre> Andrea Sterbini 02 02 1961 sterbini@dsi.uniroma1NOSPAM.it 19 10 </pre> si deduce che il pattern di sopra equivale a "*or*ta"... 2 - Ho rifatto i test con i pattern da lei utilizzati e x gli esempi del punto 1 ottengo il medesimo output.Ora, se lei mi dice .."ci sono le seguente differenza tra..." e' accetabile, altrimenti non riesco a capire perche lei abbia ottenuto valori diversi.<br> 3 - Il pattern "*" nella mia logica, equivale a cerca il nulla (o tutto??)! (non essendo specifico nessun letterale) quindi e' come se non avesse fornito il parametro. A mio avviso questo pattern rientra nella casistica di "gestione errori" o "input non valido", quindi non valido ai fini del test! Spero in una risposta e grazie -- Comment added by Users.AlessandroCamillo on 05 Dec 2002 ---- I tre pattern non danno risultati uguali: * "*ve*sa*ri*" e "*ve*sa*ri" sono equivalenti (l''*' in fondo e' come se non ci fosse). Dato che iniziano per '*' la posizione in cui il pattern viene trovato e' *0* * "ve*sa*ri" trova il pattern invece ad una posizione diversa da *0* (ovvero alla prima occorrenza di *ve*) -- Comment added by Users.AndreaSterbini on 06 Dec 2002 Mi scusi prof., ma questo da cosa si capiva secondo le specifiche? Perche co un pattern "*ve*sa*ri" deve essere trovato a posizione zero? Dove lo ha specificato? Non nel testo dell'esercizio! Infatti lei dice: <li> <font color="red">sulla settima riga dell'output la posizione alla quale è stato trovato il pattern </font> </li> </ul> <pre> (ovvero l'indice del primo carattere del testo che corrisponde al primo carattere del pattern, partendo da 0) </pre> Altrimenti, se cosi fosse, non ci sarebbero distinzioni tra un pattern "*ve*sa*ri* ed un "*sa*ri", ambedue inizierebbero dalla posizione zero??? Grazie e scusi il tono un po' accalorato -- Comment added by Users.AlessandroCamillo on 06 Dec 2002 ---- ---+++ un \n di troppo A quale homework si riferisce? -- Comment added by Users.CristianoMarra on 06 Dec 2002 ---- ---+++ un \n di troppo (2) Quindi mi dice che ho buttato giorni inutili a programmare e mettere da parte altre materie per un \n di troppo, posso capire se sbaglio una malloc, se sbaglio un ciclo, ma una cosa così mi lascia senza parole :-( sono sbalordito -- Comment added by Users.CristianoMarra on 06 Dec 2002 ---- ... anche io ... dopo tutte le volte che vi ho detto di starci attenti ... -- Comment added by Users.AndreaSterbini on 06 Dec 2002 %COMMENT{button=" Aggiungete la domanda " mode="before" lines="5"}% <a name="form"> * Ricordatevi di dare un titolo alla vostra domanda come segue: <verbatim> <tre spazi>---+++<spazio>Titolo della domanda Testo della domanda </verbatim>
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r125
<
r124
<
r123
<
r122
<
r121
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r125 - 2003-10-04
-
AndreaSterbini
Log In
or
Register
Programmazione1/AA0506/PZ Web ...
Programmazione1/AA0506/PZ Web
Programmazione1/AA0506/PZ Web Home
Users
Groups
Index
Search
Changes
Notifications
Statistics
Preferences
User Reference ...
User Reference
ATasteOfTWiki
TextFormattingRules
TWikiVariables
FormattedSearch
TWikiDocGraphics
TWikiSkinBrowser
InstalledPlugins
ChangeEmailAddress
ChangePassword
ResetPassword
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
PZ Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
P
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback