 |
darkshadow |
|  
... |
11-02-2009 12:41 |
|
 |
darkshadow |
Are You From The Past?

Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline
Edit | Report | IP: Logged |
 
sul sito di aguzzoli c'è gcc per win. decomprimi la cartella e poi da riga di comando vai nella cartella e digiti gocs che ti setta le variabili d'ambiente e poi il resto è uguale a gcc in linux.
__________________
by Ð@rk§h@ÐØw
|
|
11-02-2009 12:41 |
|
|
|  |
 |
Joy88 |
| Ti ringrazio Darkshadows!!!
... |
11-02-2009 12:49 |
|
 |
Joy88 |
.consigliere.
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno: 3°
Time Online: 1 Day, 10:27:00: [...]
Status: Offline
Edit | Report | IP: Logged |
Ti ringrazio Darkshadows!!!
Adesso ci provo..!!
Ti citerò nei ringraziamenti del progetto!!!

ihihih!!!
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
|
|
11-02-2009 12:49 |
|
|
|  |
 |
Benny |
| iuz-lab ci ho capito poco di tutto quello che hai ... |
11-02-2009 23:38 |
|
 |
Benny |
.fedelissimo.
Registered: May 2003
Posts: 48 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno: 2
Time Online: 12:49:02: [...]
Status: Offline
Edit | Report | IP: Logged |
iuz-lab ci ho capito poco di tutto quello che hai detto, anche perchè io prima usavo l'originale gets e il prof me lo aveva vietato, cosi sono passato alla scanf, e tutto andava bene ma siccome devo prendere un input con spazi bianchi e quindi ho usato strcat per aggiungerli, mi fa un casino non indifferente..in pratica credo che con la scanf il puntatore venga sovrascritto normalmente, ma nel caso io usi la strcat, sovrascriva solo l'ultimo puntatore, e presto si riempira del tutto lasciando il vecchio contenuto quasi intatto...continuo a provare a ripulire il puntatore, ma perdo tempo per sta cosa..
ti ringrazio per l'interesse, pero non posso copiare il tuo codice o il prof mi fa il culo quando lo vede
__________________
Se non credi in te stesso, chi ci crederà?
|
|
11-02-2009 23:38 |
|
|
|  |
 |
iuz-lab |
| allora vedo di essere piu' chiaro..
... |
12-02-2009 02:15 |
|
 |
iuz-lab |
.amico.
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline
Edit | Report | IP: Logged |
allora vedo di essere piu' chiaro..
l'obiettivo è dividere una stringa in modo particolare.. nello specifico (per nick n st):
<spazi bianchi> <nick> <spazi bianchi> <char 'n'> <spazi bianchi> <st>
per farlo il c ti mette a disposizione diverse funzioni utili.. gets e strtok sono quelle che ci interessano..
char *gets(char *s);
Reads next line from stdin into s. Replaces terminating newline with '\0'. Returns s, or NULL on end-of-file or error.
e qui ci troviamo di fronte al problema dell'overflow che puoi risolvere usando readstring (ammesso che io abbia capito quello che dovrebbe fare readstring.. magari mi sto' sbagliando) o la funzione che ho postato o una funzione equivalente..
char* strtok(char* s, const char* ct);
A sequence of calls to strtok returns tokens from s delimited by a character in ct. Non-NULL s indicates the first call in a sequence. ct may differ on each call. Returns NULL when no such token found.
questa funzione è una manna per leggere stringhe del tipo nick n st..
in pratica la prima volta che la chiamiamo gli passiamo come primo parametro il nome della stringa da esaminare e nelle successive chiamate gli passiamo NULL, mentre come secondo parametro gli indichiamo un set di caratteri che funzionano da delimitatori..
per esempio:
code:
char *string = "123 456 789";
char *part;
part = strtok(string, " ");
do {
printf("-- %s --\n", part);
} while (part = strtok(NULL, " ") != NULL);
stamperà:
code:
-- 123 --
-- 456 --
-- 789 --
questo pero' non è il comportamento che volevamo.. per noi dopo il secondo token "tutto fa brodo"..
ma strtok ci mette in condizione di cambiare i caratteri delimitatori del token ad ogni chiamata..
quindi possiamo scrivere un codice del tipo:
code:
char *string = "bob n i hate facebook";
char *nickname, *action, *status;
nickname = strtok(string, " ");
action = strtok(NULL, " ");
status = strtok(string, ""); // NOTA CHE NON HO DATO ALCUN CARATTERE DELIMITATORE
printf("--%s--", nickname);
printf("--%s--", action);
printf("--%s--]", status);
visto che nell'ultima chiamata a strtok non ho messo delimitatori strtok mi ritornerà il resto della stringa (che è il comportamento desiderato)..
quindi l'ouput sarà:
code:
--bob--
--n--
-- i hate facebook--
ora, come puoi vedere, siamo vicinissimi alla soluzione.. dico vicinissimi perchè cambiare il set di delimitatori nella terza strtok ci ha fatto prendere come stringa di status " i hate facebook" (nota lo spazio iniziale) invece di "i hate facebook"..
per risolvere puoi usare la funzione strspn..
size_t strspn(const char* cs, const char* ct);
Return length of prefix of cs consisting entirely of characters in ct.
questa funzione non te la spiego.. perchè iniziano a sanguinarmi gli occhi ma la puoi sfruttare per scriverti una funzione ltrim in C..
ricapitolando:
code:
char *line;
char *nick, *status, *action, *string1;
while(line = gets() != NULL) { // qui usa una funzione sicura ma equivalente a gets
string1 = strtok(line, " "); // questo è il primo token (non so come chiamarlo finche
//non conosco l'azione da intraprendere..
//e questo lo posso capire solo esaminando il secondo token nello switch)
action = strtok(NULL, " ");
switch(action[0]) {
// ...
case 'n':
nick = string1; // adesso che so che la funzione è 'n' ho capito che il
// primo token rappresentava il nickname
status = strtok(NULL, ""); // qui ci finirà "status" con eventuali spazi iniziali
// elimino gli spazi iniziali (e magari anche finali) da status
// faccio le mie sporche operazioni con nick e status
break;
// ...
}
}
spero di essere stato sufficientemente chiaro (dubito)..
ciao,
iuz
|
|
12-02-2009 02:15 |
|
|
|  |
 |
iuz-lab |
| [QUOTE][i]Originally posted by Benny [/i]io prima ... |
12-02-2009 02:20 |
|
 |
iuz-lab |
.amico.
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Benny io prima usavo l'originale gets e il prof me lo aveva vietato, cosi sono passato alla scanf [/B]
sia gets che scanf soffrono degli stessi problemi.. vanno evitate entrambe :-P
se le usi non sei in grado di rispettare il vincolo del progetto che dice "non devono esistere limiti alla lunghezza massima di una stringa" o qualcosa del genere (il succo comunque era quello)..
scriviti una funzione gets sicura e sei a posto..
ne trovi mille implementazioni gia' pronte in rete (probabilmente anche nei progetti passati) oltre quella che ho gia' lasciato nel post di ieri (era ieri?!?)..
|
|
12-02-2009 02:20 |
|
|
|  |
 |
xSharKMaNx |
| Grande iuz-lab ... è esattamente ciò che ho fatt ... |
12-02-2009 08:05 |
|
 |
xSharKMaNx |
un gioco della follia

Registered: Sep 2007
Posts: 1477 (0.22 al dì)
Location:
Corso: F49
Anno: Laureato
Time Online: 10 Days, 17:15:29 [...]
Status: Offline
Edit | Report | IP: Logged |
Grande iuz-lab ... è esattamente ciò che ho fatto 
ma la fgets si potrà utilizzare ?
ieri sera leggendo tutti i i punti del progetto ho notato:
Per semplicità si suppone che l’input sia sempre conforme alle specifiche delle Tabelle 1,2,3 e 4, per cui
non è necessario controllare la correttezza dell’input. Per leggere l’input si usino le funzioni standard
ANSI C getchar() e/o scanf().
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
|
|
12-02-2009 08:05 |
|
|
|  |
 |
Joy88 |
| Ragazzi io sto implementando tutto tramite liste.. ... |
12-02-2009 09:17 |
|
 |
Joy88 |
.consigliere.
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno: 3°
Time Online: 1 Day, 10:27:00: [...]
Status: Offline
Edit | Report | IP: Logged |
Ragazzi io sto implementando tutto tramite liste..
Ma avete pensato a come fare per i gradi di separazione?? 
Non so proprio dove sbatter la testa..
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
|
|
12-02-2009 09:17 |
|
|
|  |
 |
Gehur |
| be io conto tutti gli amici che ho, e ci levo 1..
... |
12-02-2009 09:57 |
|
 |
Gehur |
.grande:maestro.
Registered: Apr 2006
Posts: 519 (0.07 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 3 Days, 0:41:42 [...]
Status: Offline
Edit | Report | IP: Logged |
be io conto tutti gli amici che ho, e ci levo 1..
quindi se ho 3 mici nella lista amici, il grado di separazione sarà 2, se ho solo 1 amico, sarà infinito..
il fatto è che non sono sicuro di aver capito la specifica 
ma qualcuno è riuscito a finirlo il progetto??
|
|
12-02-2009 09:57 |
|
|
|  |
 |
Joy88 |
| No aspetta x il grado di separazione io l'ho intes ... |
12-02-2009 10:03 |
|
 |
Joy88 |
.consigliere.
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno: 3°
Time Online: 1 Day, 10:27:00: [...]
Status: Offline
Edit | Report | IP: Logged |
No aspetta x il grado di separazione io l'ho inteso così:
A amico di B amico di C amico di D
tra A e B il grado è 1
tra A e C il grado è 2
tra A e D il grado è 3
se avessi:
A amico di B amico di C amico di D e E amico di F
tra A e E il grado è infinito
tra A e F il grado è infinito

..Ho capito male io??? 
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
|
|
12-02-2009 10:03 |
|
|
|  |
 |
Gehur |
| quindi tu dici se non sono amici grado infinito,al ... |
12-02-2009 10:29 |
|
 |
Gehur |
.grande:maestro.
Registered: Apr 2006
Posts: 519 (0.07 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 3 Days, 0:41:42 [...]
Status: Offline
Edit | Report | IP: Logged |
quindi tu dici se non sono amici grado infinito,altrimenti se sono amici conta quante persone ci sono tra loro 2
e bo..io non ho capito molto bene il testo, dovrei rileggerlo ma adesso sono in sbatta per far funzionare il tutto correttamente, al max il grado di separazione lo ricalcolo, non mi sembra il problema più grosso..
|
|
12-02-2009 10:29 |
|
|
|  |
 |
Joy88 |
| [QUOTE][i]Originally posted by Joy88 [/i]
... |
12-02-2009 10:35 |
|
 |
Joy88 |
.consigliere.
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno: 3°
Time Online: 1 Day, 10:27:00: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by Joy88
No aspetta x il grado di separazione io l'ho inteso così:
A amico di B amico di C amico di D
tra A e B il grado è 1
tra A e C il grado è 2
tra A e D il grado è 3
se avessi:
A amico di B amico di C amico di D e E amico di F
tra A e E il grado è infinito
tra A e F il grado è infinito

..Ho capito male io???
Ma guarda che nel mio esempio A è amico di B ma NON di C e D..
Per quello mi sembra difficile.. tutti gli amici di A hanno grado 1 gli amici degli amici di A (che non sono miei amici) hanno grado 2, gli amici degli amici degli amici di A (non miei amici) hanno grado 3 ecc..
Ho paura di una funzione ricorsiva infinita!!!!

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
|
|
12-02-2009 10:35 |
|
|
|  |
 |
Gehur |
| io alla prima lettura l'avevo interpretata così:
... |
12-02-2009 11:39 |
|
 |
Gehur |
.grande:maestro.
Registered: Apr 2006
Posts: 519 (0.07 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 3 Days, 0:41:42 [...]
Status: Offline
Edit | Report | IP: Logged |
io alla prima lettura l'avevo interpretata così:
system ! nick nick2
nick e nick 2 devono essere amici, se sono amici conta quante persone ci sono nella lista amici di nick, se è presente solo nick2 fai grado infinito..
ripeto dovrei rileggerla visto che ho dubbi su come l'ho compresa
|
|
12-02-2009 11:39 |
|
|
|  |
 |
iuz-lab |
| [QUOTE][i]Originally posted by xSharKMaNx [/i]
... |
12-02-2009 16:01 |
|
 |
iuz-lab |
.amico.
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by xSharKMaNx
ma la fgets si potrà utilizzare ?
beh, se usata bene, fgets è sicura.. mentre scanf no..
visto che il docente aveva proibito l'uso di fgets (non è che la abbia proprio proibita.. ma tant'è) io ho (come vedi dai post precedenti) scritto una funzione safe_gets che lavora con stringhe di lunghezza arbitraria e funziona grazie alla funzione getchar (che, al contrario di fgets, il docente dice di usare)
comunque non credo sia un problema.. meglio una fgets di una scanf..
|
|
12-02-2009 16:01 |
|
|
|  |
 |
nas |
| ragazza ma è sufficiente che il progetto compilat ... |
13-02-2009 08:27 |
|
 |
nas |
.amico.
Registered: Oct 2004
Posts: 35 (0.00 al dì)
Location: milano
Corso: Informatica
Anno: 1
Time Online: 23:33:27 [...]
Status: Offline
Edit | Report | IP: Logged |
ragazza ma è sufficiente che il progetto compilato con
gcc -o faccialibro faccialibro.c
non dia nessun errorre o warning o bisogna compilarlo con le opzioni -ansi e -pedantic e quindi
gcc -o -ansi -pedantic faccialibro faccialibro.c
???????
|
|
13-02-2009 08:27 |
|
|
|  |
 |
nas |
| [QUOTE][i]Originally posted by nas [/i]
... |
13-02-2009 08:28 |
|
 |
nas |
.amico.
Registered: Oct 2004
Posts: 35 (0.00 al dì)
Location: milano
Corso: Informatica
Anno: 1
Time Online: 23:33:27 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by nas
ragazza ma è sufficiente che il progetto compilato con
gcc -o faccialibro faccialibro.c
non dia nessun errorre o warning o bisogna compilarlo con le opzioni -ansi e -pedantic e quindi
gcc -o -ansi -pedantic faccialibro faccialibro.c
???????
uhm... volevo dire ragazzi!
|
|
13-02-2009 08:28 |
|
|
|  |
 |
| All times are GMT. The time now is 02:29. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|