Ciao,
ho dei problemi con la funzione pow. se immetto i numeri 6 per la popolazione e 3 per il campione il risultato è giusto 216. mentre se immetto 10 e 2 mi da 99 come risultato. perchè ? non riesco a capire dove sbaglio.
ecco il mio programma:

codice:
#include <time.h>
#include <stdio.h>
#include <math.h> 
#include <stdlib.h>
# include <string.h>
char *data()
{  
   time_t t;
   char *data;
   int i;
   
   t = time(&t);
   data = asctime(localtime(&t));
   data[strlen(data)-1]='\0'; 
   return(data);
}
void intestazioneFile(FILE *fp, int popolazione[], int cardinalita, int dimPop,char *nomeFile,int ampCamp)
{    int i;
     fprintf(fp,"Anna Motta  matricola:701489 \n\n");
     fprintf(fp,"Esercizio 1 (%s)\n",data());
     fprintf(fp,"Output dell'algoritmo PrimaEsercitazione.c\n");
     fprintf(fp,"Nome file uscita: %s\n", nomeFile);
     fprintf(fp,"Genera lo spazio campionario che comprende i possibili campioni \n");
     fprintf(fp,"di dimensione n=%d con campionamento casuale semplice tratti\n", ampCamp);
     fprintf(fp,"da una popolazione  finita di numerosità N=%d \n", dimPop);
     fprintf(fp,"La popolazione di riferimento è: \n");
     for(i=1;i<=dimPop;i++)
        fprintf(fp,"%2d\t",popolazione[i-1]); 
     fprintf(fp,"\n Lo spazio campionario ha dimensione: %d\n", cardinalita);
     fprintf(fp,"\n\n i Possibili campioni sono: \n\n");
}
void gestioneRiporti(int cp[], int dimVt, int valUltimo)
{ int j;
  for(j=dimVt-1;j>0;j--)
    if(cp[j] == valUltimo+1)  
     {cp[j] = 1;
      cp[j-1]++;}
}

int main()
{
 FILE *fUscita;
    char nomeFile[]="esercizio1.txt";
    int *popolazione, 
        *campione, 
        dimSpazioCamp,i,j, ampCamp,elemPop; 
    
    printf("inserisci la numerosità della popolazione: ");
    scanf("%d",&elemPop);
    popolazione=(int*)calloc(elemPop,sizeof(int));
        
   do{
        printf("ampiezza campione: ");
        scanf("%d",&ampCamp);
       } while(ampCamp<1 || ampCamp>elemPop); 
    campione = (int *)calloc(ampCamp, sizeof(int)); 
    for(i=1;i<=elemPop;i++)
      popolazione[i-1] = i;
    for(i=0;i<ampCamp;i++)
      campione[i] = 1;
    if ((fUscita=fopen(nomeFile,"w")) == NULL)
      {
        printf("errore apertura file %s!\n",nomeFile);
        exit(-1);
      }
    
    dimSpazioCamp = (int) pow(elemPop,ampCamp);
    intestazioneFile(fUscita,popolazione,dimSpazioCamp,elemPop,nomeFile,ampCamp);
      
          for(j=0; j<dimSpazioCamp; j++)
        {
    		fprintf(fUscita, "%4d: {", j+1); 
		    for (i=0; i<ampCamp-1; i++)
		 		fprintf(fUscita,"%d, ",popolazione[campione[i]-1]); 
	  	    fprintf(fUscita,"%d}\n",popolazione[campione[i]-1]);            
         campione[ampCamp-1]++;
         gestioneRiporti(campione,ampCamp,elemPop);
         }
     fclose(fUscita);
    system("pause");
    return 0;  
}