Oppure

Loading
22/07/08 9:59
gantonio
Se mi indichi nel codice di quale printf stai parlando, allora ti posso rispondere, altrimenti andiamo avanti cosi' fino a domani ...
aaa
22/07/08 9:59
volley.sil
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???
aaa
22/07/08 10:04
Misciu87
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]);     
    } 
} 


aaa
22/07/08 10:07
volley.sil
SCrivendo n al posto di 1000000 nelle prime due righe dove viene allocata la memoria mi d segmentation fault mi sai dire gantonio perchè???

#include <stdio.h> 
#include <stdlib.h> 
#include<time.h> 

int getlength(char *list) 
{ 
    int i=0; 
    while(list[i]!='SCrivendo n al posto di 1000000 nelle prime due righe dove viene allocata la memoria mi d segmentation fault mi sai dire gantonio perchè???


#include <stdio.h> 
#include <stdlib.h> 
#include<time.h> 

int getlength(char *list) 
{ 
    int i=0; 
    while(list[i]!='{parsed_message}') 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; 
}
') 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; }
aaa
22/07/08 10:08
gantonio
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 ?
aaa
22/07/08 10:09
Misciu87
mi rispondi a quello che ti ho chiesto
aaa
22/07/08 10:21
gantonio
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?
aaa
22/07/08 10:23
gantonio
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

forum.html.it/forum/…

Buona fortuna
Ultima modifica effettuata da gantonio 22/07/08 10:38
aaa