Salve a tutti,ho appena sviluppato uno dei miei primi programmi con l'approccio Divide et Impera per la somma di n numeri...però ho un problema se voglio cambiare la quantità dei numeri ho un problema!ovvero devo cambiare il sorgente per inserire il logaritmo in base 2 del totale dei numeri!
nn so se sono stato chiaro...cmq mi servirebbe un fanction che calcola il log in base 2 di n!vi posto il mio sorgente:
//Approccio Divide et Impera
#include <stdio.h>
#include <math.h>
#define MAX_SIZE 100
int somm_radd(int [],int,int);
void main()
{
int array[8],i;
char ris;
do
{
for (i=0;i<8;i++)
{
printf("inserisci numero di indice %d\n",i);
scanf("%d",&array[i]);
}
printf("La somma e' %d\n",somm_radd(array,8,3));
printf("Vuoi ripetere il programma?(s/n)\t");
scanf(" %c",&ris);
fflush(stdin);
}while(ris=='s' || ris=='S');
}
int somm_radd(int a [],int n,int log2)
{
int k,i;
for (k=log2;k>0;k--)
{
for(i=0;i<=pow(2,(k-1));i++)
a[i-1]=a[2*i]+a[2*(i-1)];
}
return a[0];
}
grazie per l'attenzione spero che possiate darmi una mano!