![]() |
Pages (28): « First ... « 5 6 7 8 [9] 10 11 12 13 » ... Last » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- Progetto "FACCIALIBRO" (http://www.dsy.it/forum/showthread.php?threadid=37551)
Originally posted by iuz-lab
io ho scelto questa soluzione (vedi allegato)..
scusate se non si capisce un c***o ma non sono un grande scrittore..
mm, io ho fatto un grafo con liste di adiacenza orientato quando una persona aggiunge un'altra finisce nel vettore degli amici. se anche l'altra persona ha il puntatore della persona che ha fatto la richiesta di amicizia allora sono amici, in caso contrario la richiesta resta sempre pendente.
ora dubbio, volevo fare un inserimento ordinato utilizzando la ricerca binaria modificata che mi restituisca il puntatore in cui fare l'inserimento. solo che sono sempre costretto a fare la scansione di tutta la lista per trovare il nickname da cercare ![]()
esempio:
___1______2____3_____4_____5____
| andrea | azul | beta | darwin | growl |
---------------------------------------------
@cerca darwin
G->V / 2 # divido in due il numero dei vertici
__________________
Tutti gli uomini sono mortali.
Socrate era mortale.
Dunque, tutti gli uomini sono Socrate.
(Woody Allen)
ops come non detto si può -.-'' scusate
__________________
Tutti gli uomini sono mortali.
Socrate era mortale.
Dunque, tutti gli uomini sono Socrate.
(Woody Allen)
come hai pensato di gestire la funzionalità di "consigliare nuovi amici" ???
Ciao a tutti, qualcuno di voi mi saprebbe dire come diavolo si resetta una stringa(puntatore char) in questo malefico linguaggio?
le sto provando tutte il problema mio è che uso scanf e strcat che concatena due puntatori stringa, ma all'iterazione successiva il puntatore è quasi pieno e non fa un tubo o fa cazzate..
aggiungere un \0 non fa nulla, anzi da errore
non è bello come java quindi non si può fare stringa=""
funzioni standard non ci sono
fare free e riallocare non fa una mazza
insomma o mi metto io a grattare i dischi magnetici per pulire la stringa o non si da una mossa sta maledetta stringa...
io ancora devo fare un casino di roba e mi sento come prince of persia solo che ho una clessidra piu piccola anche se devo consegnare il 9 marzo
__________________
Se non credi in te stesso, chi ci crederà?
il tuo problema è leggere una la stringa di input??
per esempio nick n nick2
comunque se ti può essere utile e se ho capito il problema:
char* stringa = calloc(30,sizeof(char));
ti crea una stringa di 30 caratteri, se non bastano basta fare realloc
string = (char*)realloc(string, (i+1)*sizeof(char));
sui vari progetti vecchi c'è la funzione readstring che fa questo
no gehur il problema e leggere system ? nick1 nick2 gruppo
dove gruppo puo avere degli spazi bianchi, e in generale in tutti i comandi dove ci sta o gruppo o status che implicano spazi bianchi..
provero a vedere questa readstring..
comunque nel realloc, si estende la stringa corrente, io devo renderla di nuovo vuota
ovvero dopo un comando il puntatore e sporco del vecchio comando, se io ne immettessi un altro, lo metterebbe in coda fino al totale riempimento o a delle schifezze...
i passi sono:
comando carattere qualcosa gruppo(o status)
le stringhe sono piene
devo renderle vuote(gruppo=vuoto)
grazie
controllero quella funzione
__________________
Se non credi in te stesso, chi ci crederà?
 
magari farlo puntare a NULL??
__________________
by Ð@rk§h@ÐØw
gia fatto, quando alla prossima iterazione ci riscrivo sopra, riscriverei su un puntatore a null, quindi errore ecc...
__________________
Se non credi in te stesso, chi ci crederà?
 
cmq non capisco a cosa ti serve azzerare la stringa. quando ti serve basta ke la fai punatre a la nuova stringa.
__________________
by Ð@rk§h@ÐØw
per leggere una riga del tipo nick n st dove nick non ha spazi mentre st si potete fare in questo modo..
code:
line = gets(); nickname = strtok(line, " "); command = strtok(NULL, " "); status = strtok(NULL, "");
code:
[cut] #define BLK " \t" [cut] cmd->w0 = cmd->w1 = cmd->w2 = NULL; cmd->w0 = s_strtok(line, BLK); if (cmd->w0 == NULL) { // uscita con errore } cmd->w1 = s_strtok(NULL, BLK); if (cmd->w1 == NULL) { // uscita con errore } if (strlen(cmd->w1) != 1) { // uscita con errore } switch (cmd->w1[0]) { [cut] case 'n': free(cmd->w1); cmd->w2 = s_strtok(NULL, ""); cmd->w1 = s_trim(cmd->w2, BLK); if (cmd->w1 != NULL) { cmd->action = USR_CH_STATUS; return cmd; } [cut]
giusto per chiarire le idee a chi ne ha bisogno..
per gestire input di lunghezza arbitraria si usano le funzioni malloc, realloc, free, getchar..
esempio per la memoria (lettura di 9 caratteri):
code:
int i; char *str; str = malloc((size_t) 10); // allocazione dello spazio per 9 caratteri (piu' 1 per il '\0') for (i = 0; i < 9; i++) { // leggo 9 caratteri str[i] = getchar(); } str[9] = '\0'; // metto il carattere di fine stringa (non servirebbe ma è sempre bene) // codice che elabora la mia stringa free(str); // libero la memoria allocata all'inizio
code:
static int __eofflag = 0; char *s_gets () { char *line; int i, s = 16; char c; if (__eofflag) { return NULL; } line = malloc(sizeof(char) * s); for (i = 0; 1; i++) { if (i + 1 >= s) { s *= 2; line = realloc(line, s); } c = getchar(); switch (c) { case '\n': line[i] = '\0'; return line; case EOF: __eofflag = 1; if (i == 0) return NULL; line[i] = '\0'; return line; default: line[i] = c; break; } }
Ciao!
ragazzi qui il progetto va male.......!!!
Ora sono alle prese con il nick c...... mah.... ho seri dubbi.....
Domanda:
Mi sono fatta una virtual machine x linux dato che uso windows solo che mi mancano le librerie.. anche quelle standard x il gcc!!
quindi non funziona niente.. quindi chiedo a voi guru di linux: sapete dove posso scaricarle e dove le devo mettere???
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
 
ma perchè ti 6 fatto la VM?? guarda che c'è gcc anche per winzokz!!
__________________
by Ð@rk§h@ÐØw
Ho scritto con il Dev C++ ma dalle lezioni di lab ho scoperto che alcune cose sono incompatibili con il gcc.. ad esempio la getch(); che equivale alla system ("PAUSE")..
quindi ho dedotto che non stavo scrivendo in ANSI C...
In ogni caso.. su windowz cosa devo fare?? i comandi son gli stessi????
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
| All times are GMT. The time now is 14:36. | Pages (28): « First ... « 5 6 7 8 [9] 10 11 12 13 » ... Last » Show all 417 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.