volley.sil (Normal User)
Rookie
Messaggi: 39
Iscritto: 19/05/2008
|
ciao ragazzi io avrei lo steso problema di michelle 87!!!
come posso fare per farmi dare una mano
evidentemente siamo nella stessa università e abbiamo lo stesso progetto da fare..cosa mi consigliate di fare..da dove posso iniziare a modificare il file???
|
|
Misciu87 (Normal User)
Pro
Messaggi: 68
Iscritto: 01/07/2008
|
Codice sorgente - presumibilmente C++ |
void print(int *res, int i) { if(res[i]!=-1) { print(res,i+1); if (i!=0) printf("%d",res[i]); else printf("%d\n",res[i]); } }
|
|
|
volley.sil (Normal User)
Rookie
Messaggi: 39
Iscritto: 19/05/2008
|
SCrivendo n al posto di 1000000 nelle prime due righe dove viene allocata la memoria mi d segmentation fault mi sai dire gantonio perchè???
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> #include<time.h> int getlength(char *list) { int i=0; while(list[i]!='\0') i++; return i; } int getlength2(int *list) { int i=0; while(list[i]!=-1) i++; return i; } int *loadlist(char *list) { int n=getlength(list),i; int *num=(int *)malloc((n+1)*sizeof(int)); char tmp; for(i=0; i<n; i++) { tmp=list[i]; num[n-1-i]=atoi(&tmp); } num[n]=-1; return num; } void print(int *res, int i) { if(res[i]!=-1) { print(res,i+1); if (i!=0) printf("%d",res[i]); else printf("%d\n",res[i]); } } int max(int x, int y) { if(x>=y) return x; else return y; } int *add(int *num1, int *num2) { int n=max(getlength2(num1),getlength2(num2))+n; int *res=(int *)malloc((n+n)*sizeof(int)); int tmp,rest=0,i=0; while(num1[i]!=-1 && num2[i]!=-1) { tmp=(num1[i]+num2[i]+rest); res[i]=tmp%10; rest=tmp/10; i++; } if(num1[i]!=-1) { while(num1[i]!=-1) { tmp=(num1[i]+rest); res[i]=tmp%10; rest=tmp/10; i++; } } else if (num2[i]!=-1) { while(num2[i]!=-1) { tmp=(num2[i]+rest); res[i]=tmp%10; rest=tmp/10; i++; } } if(rest!=0) res[i++]=rest; res[i]=-1; return res; } int *mult(int *num1, int *num2) { int n=max(getlength2(num1),getlength2(num2))+100000; int *res=(int *)malloc((n+1000000)*sizeof(int)); int i = 0; for(i = 0; i < *num2; i++) { res = add(res, num1); } return res; } int main(int argc, const char *argv[]) { clock_t start, end; int *num1, *num2, *res; if(argc!=3) { printf("Usage: add <integer 1> <integer 2>\n"); return 1; } start=clock(); num1=loadlist((char *)argv[1]); num2=loadlist((char *)argv[2]); res=add(num1,num2); res=mult(num1,num2); end=clock(); printf("%g\n",(double)(end-start)/(double)CLOCKS_PER_SEC); print(res,0); return 0; }
|
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da volley.sil:
ciao ragazzi io avrei lo steso problema di michelle 87!!!
come posso fare per farmi dare una mano
|
Perche' non studiate insieme ? |
|
Misciu87 (Normal User)
Pro
Messaggi: 68
Iscritto: 01/07/2008
|
mi rispondi a quello che ti ho chiesto
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da Misciu87:
mi rispondi a quello che ti ho chiesto |
No ... perche' non l'ho capito ...
La printf e' inserita all'interno di una funzione (print) che viene chiamata da altre parti del programma. Come diavolo faccio a sapere perche' la printf non ti da' i risultati che ti aspetti? |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Sentite ... per concludere il discorso (almeno da parte mia) ... vi do' l'ultimo consiglio ...
Scrivete in un forum dove c'e' la possibilita' di avere scritto del codice a fronte di una retribuzione ... Indicate quanto paghereste e i tempi e penso che riuscirete ad ottenere il vostro programma.
Ad esempio
http://forum.html.it/forum/forumdisplay.php?s=&forumid=67
Buona fortuna
Ultima modifica effettuata da gantonio il 22/07/2008 alle 12:38 |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Credo che la discussione sia degenerata troppo, la segnalerò al moderatore...
|
|