Domande (e risposte) sull' HomeWork4aa0203



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

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

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

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

-- 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 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:
   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  */

-- 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.
  2. nella stringa da cercare e/o nella stringa in cui cercare ci possono essere apici e/o doppi apici?

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

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

-- 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 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). [ ora non più ... si cerca la stringa più corta ]

La sottostringa massima che può essere trovata nel testo è lunga quanto tutto il testo (p.es. se il pattern è '*') [ ora non più ... si cerca la stringa più corta ]

Una maiuscola è un carattere diverso dalla corrispondente minuscola ... a buon intenditore ...

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

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

   int numero = 0;
   char * stringa = "42"; 
   sscanf(stringa,"%d",&numero);
   /* a questo punto in numero c'e' il valore intero 42  */

invece della sscanf ho usato atoi..... la strada verso la beatidune e' lunga e tortuosa... smile

-- Comment added by ElisabettaDAiutolo on 14 Nov 2002

Brava, ottimo suggerimento.

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

-- 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 è "borsa salta il fosso senza rincorsa" e non "borsa salta[...]"? (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ù corta e lunga referenza, come fare per distinguerle nella consegna?? (immagino che verranno effettuati test diversi...o immagino male!?)

-- TizianoMorgia - 14 Nov 2002


  1. il jolly assorbe 0 o più caratteri (anche zero!)

  1. OK, mi accorgo di aver creato una inutile confusione. Ho modificato l'esercizio, il match da cercare e' il piu' corto (sempre)

-- Comment added by 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*sa*se' 'la vecchia con la borsa salta il fosso senza rincorsa'

ma se il pattern fosse stato "ve*se*bo"??

non avrebbe trovato nulla?

-- Comment added by MarcoEsposito on 14 Nov 2002

Esatto

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

-- 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 ElisabettaDAiutolo on 15 Nov 2002

A lezione ho detto (char)0 cioè il cast del numero 0 come char.

-- AndreaSterbini - 15 Nov 2002


argv

  1. come si fa ad estrarre i singoli caratteri da *argv.
  2. un'altro dubbio ma si possono utilizzare le librerie di gestione delle stringhe.

-- Comment added by 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.
  2. Direi di no

-- 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
la vecchia*
equivale a cercare
la vecchia
o sbaglio?

-- Comment added by LudovicoGrossi on 16 Nov 2002

Hai ragione, e anzi: [ATTENZIONE: ho corretto una imprecisione]

  • il pattern '*qualcosa' fa match dal carattere 0 alla fine della prima occorenza di 'qualcosa'
  • il pattern 'qualcosa*' è equivalente a 'qualcosa'

-- 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 CristianoMarra on 18 Nov 2002

Come fa a trovarla, visto che lo spazio è un carattere che non ne fa parte?

-- AndreaSterbini - 18 Nov 2002


ancora chiarimenti

a questo punto:

es4 "*" "pippo pluto e paperino"

cosa dovrebbe dare?

-- Comment added by LauraRavagli on 18 Nov 2002

Direi 0 0.

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

-- AndreaSterbini - 18 Nov 2002


Mannaggia il carattere jolly

Allora ricapitolando tutto... Il carattere jolly assorbe 0 o più caratteri, percio' se io scrivessi:

es4 "or*sa" "la vecchia con la borsa salta il fosso con la rincorsa"

mi darebbe 19 4, perchè è la stringa più corta!! invece

es4 "*" "la vecchia con la borsa salta il fosso con la rincorsa"

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

es4 "borsa*" "la vecchia con la borsa salta il fosso con la rincorsa"

è la stringa più corta da borsa alla fine, perciò mi darebbe 18 35

io l'ho capito così... altrimenti lo devo rifare tutto... frown

-- Comment added by 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.

-- AndreaSterbini - 18 Nov 2002


anche x me la logica dovrebbe essere questa...

"la*g" "se questa è la frase la stringa"

e non

"la*g" "se questa è la frase la stringa"

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

-- Comment added by LauraRavagli on 18 Nov 2002

Per essere precisi, quello che dovete cercare è:

  1. il primo match possibile
  2. di lunghezza minima (tra quelli trovati a quella posizione)

-- AndreaSterbini - 18 Nov 2002


rettifico: non buttati xò... sigh!

-- Comment added by LauraRavagli on 18 Nov 2002


WebNotify

sarà una domanda banale, ma vorrei sapere come si aggiunge al WebNotify? E.R.

-- Comment added by 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 LauraRavagli on 18 Nov 2002


FUNZIONI STRING.H

è possibile far uso delle funzioni della string.h (es. : strtok, strlen eccetera)?

-- Comment added by CristianoMarra on 18 Nov 2002

No

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

./hw4 'la*ve*' 'la donna giovane e la donna vecchia saltano la verde siepe'

debba dare come risultato

...
0
30
perche' effettua la seguente corrispondenza

./hw4 'la*ve' 'la donna giovane e la donna vecchia saltano la verde siepe'

e non la seguente

./hw4 'la*ve' 'la donna giovane e la donna vecchia saltano la verde siepe'

e perche' comunque non si deve tenere conto dell'ulteriore corrispondenza

./hw4 'la*ve' 'la donna giovane e la donna vecchia saltano la verde siepe'

(anche perche' se e' cosi' penso di aver finito!)

-- Comment added by 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 è ./hw4 'la*ve' 'la donna giovane e la donna vecchia saltano la verde siepe'

E la risposta è (a parte le 6 righe): 0 30

-- AndreaSterbini - 18 Nov 2002


questa volta siamo d'accordo wink

-- Comment added by LauraRavagli on 18 Nov 2002


Ancora Jolly

Questa domanda penso che sia un pò ovvia, cmq la faccio ugualmente... smile Se deve essere ignorato il jolly finale, cioè, borsa* allora deve essere ignorato quello iniziale *borsa. Giusto?

-- Comment added by MarcoEsposito on 18 Nov 2002


così sembra

-- Comment added by LauraRavagli on 18 Nov 2002

No, vuol dire che il match parte dal carattere 0. Ora correggo.

-- AndreaSterbini - 18 Nov 2002


mad!

-- Comment added by 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 OltionDoda on 18 Nov 2002


una cosa del genere:

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];
}

-- Comment added by 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

int main(int argc, char *argv[])

anche per migliorare la leggibilita' del programma da parte di altri. I nomi derivano da

argc argument count

argv argument vector

cosi' come indicato da K&R (gli inventori del C).

-- 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 CristianoMarra on 18 Nov 2002

Il primo carattere ha indice 0 (dopotutto si tratta di un array di caratteri)

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

-- Comment added by 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

COSI'??

-- Comment added by LauraRavagli on 18 Nov 2002


oh, yeah!

-- Comment added by 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 AndreaSantoro on 18 Nov 2002

Appena trovo il tempo lo fo.

-- 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 LeonardoParisi on 18 Nov 2002


Parametri e lunghezza degli stessi

Un piccolo quesito... anzi due... smile 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 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 MarcoMennillo on 18 Nov 2002

Puoi non controllarli.

-- Comment 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 LeonardoParisi on 19 Nov 2002

Certo

-- Comment 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 ArcangeloTripi on 19 Nov 2002

Accidenti! Lasciamo stare i caratteri non ascii. Userò stringhe ascii per i tests.

-- Comment 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 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 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 ArcangeloTripi on 19 Nov 2002


soprattutto grazie ai miei interventi e alle correzioni puntuali di Arcangelo wink

-- Comment added by LauraRavagli on 19 Nov 2002


big grin

basta ho finito, non mettete altre pulci nell'orecchio o altra carne sul fuoco sennò vi riempio di virus! big grin big grin

-- Comment added by LauraRavagli on 19 Nov 2002


bhè...io un dubbio ce l'avrei, ma se non lo vuoi sapere...

-- Comment added by 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 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 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 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 frown
-- 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

    1. '

-- Comment added by 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 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 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 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 AngeloFerrantini on 19 Nov 2002

Ovviamente sì ... non ci sono due C nel testo come invece nel pattern.

-- Comment added by 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?
  2. strlen() si puo usare?

-- Comment added by LeonardoParisi on 20 Nov 2002

  1. sì (ma hai letto il testo dell'esercizio? smile )
  2. no

-- 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' big grin !

-- Comment added by 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.

-- ArcangeloTripi on 20 Nov 2002


anche io scorro carattere x carattere... boh...

-- Comment added by 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 AndreaSterbini on 20 Nov 2002


Risultato...

Scusi prof., Quali risultati devono avere le seguenti chiamate?:

  1. 've*sa**se' 'la vecchia con la borsa salta il fosso senza rincorsa' 0 0 o 3 38
  2. '*la' 'la vecchia con la borsa salta il fosso senza rincorsa' 0 2 o 0 17
Grazie mille.

-- Comment added by AndreaArtibani on 20 Nov 2002

Ma quante volte lo devo dire?

  1. 3 38
  2. 0 2

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

#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]);
}

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

Firmato: il dottor Paranoia :P

-- Comment added by 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 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 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 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 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 LeonardoParisi on 20 Nov 2002


Rileggiti il commento

-- Comment added by 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 frown 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 wink ) ed ho testato l'affidabilita' di md5sum (il file usato non e' quello consegnato):

[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

ho chiesto ad un amico di provare anche sulla sua macchina di lavoro:

$ 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

Direi perfetto no? smile

Comunque mi rendo conto di essere un po' paranoico frown .

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 stick out tongue 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 )

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.

-- Comment added by MauroFerrara on 21 Nov 2002

OK, mi hai convinto. Giriamo la richiesta a Sterbini.

-- Comment added by ArcangeloTripi on 21 Nov 2002


Zzzzzz.....

-- Comment added by 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:
   for (i=0; argv[1][i] != '\0'; i---++)
     printf ("car. n. %d: %d\n", i, argv[1][i]);
  • 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 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 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 ArcangeloTripi on 21 Nov 2002


Come ho fatto io:

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?

-- Comment added by LudovicoGrossi on 27 Nov 2002


Lei è sicuro prof?(3)

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

-- Comment added by CristianoMarra on 05 Dec 2002

Hai messo un \n di troppo all'inizio delle 6 righe personali ....

-- Comment added by 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:

  • Pattern con 1 jolly, presente nel testo
  • esercizio4 'or*ta' 'la vecchia con la borsa salta il fosso senza rincorsa'
  • Andrea
    Sterbini
    02
    02
    1961
    sterbini@dsi.uniroma1NOSPAM.it
    19
    10
    
    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.
    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 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 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:

  • sulla settima riga dell'output la posizione alla quale è stato trovato il pattern
  • (ovvero l'indice del primo carattere del testo che corrisponde al primo carattere del pattern, partendo da 0) 
    
    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 AlessandroCamillo on 06 Dec 2002


    un \n di troppo

    A quale homework si riferisce?

    -- Comment added by 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 frown sono sbalordito

    -- Comment added by CristianoMarra on 06 Dec 2002


    ... anche io ... dopo tutte le volte che vi ho detto di starci attenti ...

    -- Comment added by AndreaSterbini on 06 Dec 2002

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

    <tre spazi>---+++<spazio>Titolo della domanda
    Testo della domanda
    
    Edit | Attach | Watch | Print version | History: r125 < r124 < r123 < r122 < r121 | Backlinks | Raw View | Raw edit | More topic actions
    Topic revision: r125 - 2003-10-04 - AndreaSterbini






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