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??)
--
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
- dal testo dell'esercizio non capisco bene quando saranno usati gli apici singoli e quando i doppi.
- 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...
-- 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 è "b
orsa salta il fosso senza rincor
sa" e
non "b
orsa
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
- il jolly assorbe 0 o più caratteri (anche zero!)
- 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
- come si fa ad estrarre i singoli caratteri da *argv.
- un'altro dubbio ma si possono utilizzare le librerie di gestione delle stringhe.
-- Comment added by
EmanueleDormi on 15 Nov 2002
- 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.
- 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...
-- 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!!

)
-- Comment added by
LauraRavagli on 18 Nov 2002
Per essere precisi, quello che dovete cercare è:
- il primo match possibile
- 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
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
-- Comment added by
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è,
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
-- 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
-- Comment added by
LauraRavagli on 18 Nov 2002
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...

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
-- Comment added by
LauraRavagli on 19 Nov 2002
basta ho finito, non mettete altre pulci nell'orecchio o altra carne sul fuoco sennò vi riempio di virus!
-- 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
--
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
-
- '
-- 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:
- 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?
- strlen() si puo usare?
-- Comment added by
LeonardoParisi on 20 Nov 2002
- sì (ma hai letto il testo dell'esercizio?
)
- 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'

!
-- 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?:
- 've*sa**se' 'la vecchia con la borsa salta il fosso senza rincorsa' 0 0 o 3 38
- '*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?
- 3 38
- 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

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

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):
[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?
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

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

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}
- Ricordatevi di dare un titolo alla vostra domanda come segue:
<tre spazi>---+++<spazio>Titolo della domanda
Testo della domanda