Oppure

Loading
16/07/08 21:38
Misciu87
n+n
aaa
16/07/08 21:46
gantonio
Okay ... quindi come riscrivi le prime due righe di codice ?
aaa
16/07/08 21:51
Misciu87
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;
}


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))+n;
   int *res=(int *)malloc((n+n)*sizeof(int));
  
   int i = 0;
   for(i = 0; i < *num2; i++) 
   {
      res = add(res, num1);
   }
   return res;
}
Ultima modifica effettuata da Misciu87 16/07/08 21:52
aaa
16/07/08 21:58
gantonio
Non interessa TUTTO il codice ... ti avevo detto solo le prime due righe della nuova funzione ... quindi

int n=max(getlength2(num1),getlength2(num2))+n; 
int *res=(int *)malloc((n+n)*sizeof(int)); 


la seconda va bene perche' allochi n+n interi ... ma la prima no ... rileggila e correggila.
aaa
16/07/08 22:00
Misciu87
la funziona add va bene o no? è sbagliata loadlist?
aaa
16/07/08 22:02
Misciu87
 int n=max(getlength2(num1),getlength2(num2))+1;
   int *res=(int *)malloc((n+n)*sizeof(int));
aaa
16/07/08 22:06
gantonio
No ... non ci siamo ...

In una moltiplicazione puoi avere due numeri, uno lungo ad esempio 3 cifre e l'altro 5 cifre ... quindi

999 x 99999

il risultato e' 99899001 ed e' di 8 cifre quindi di 3+5 cifre ...

Quindi non e' sempre detto che e' di lunghezza n+n ma devi calcolare la lunghezza del primo e la lunghezza del secondo e metterlo nella variabile n e poi utilizzare la variabile n nella malloc ...
aaa
16/07/08 22:08
Misciu87
va bè dai è lo stesso ho già capito..non so fare..
aaa