Ho creato un programma che conta le parole in input e dispone in una matrice ( che finalmente sono riuscito a creare) tanti asterischi quante sono le parole in ingresso, e il progrmma funziona:
codice:

codice:
#include<stdio.h>
#include <math.h>
#define R 12
#define C 8

char matrix[R][C];

int getline(char[]);
int contaparole(char[]);
void crea();
void stampa(); 
void illumina(int,int);
void trovaipunti (int);

main()
{     int k;
      char vett[10000];
      printf("Inserisci una frase :\n");
      getline(vett);
      k=contaparole(vett);
      printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n");
      crea();
      trovaipunti(k); 
      stampa();
      getch();
}
       

void crea()
{
      int r,c;
      for(r=0;r<R;r++)
        for(c=0;c<C;c++)
            matrix[r][c]='.';
}

void illumina(int x,int y)
{
     matrix[x][y]='*';
}


void stampa()
{
     int c,r;
     for(r=0;r<R;r++)
     {
         for(c=0;c<C;c++)
         printf("%c\t",matrix[r][c]);
         printf("\n");
     }
}


int getline (char vettore[]){
int c,i=0;
                            while((c=getchar())!= '\n')
                                                  vettore [i++]=c;
                            if (c=='\n')
                                         vettore[i++]=c;

                            vettore[i]= '\0';
                            return i;
                            }
                            
int contaparole(char line[])
    {
        int a=0,b=1,i=0,stato,parola=0;
        stato=a;
        while(line[i]!=EOF)   
        {
        if(line[i]!=' ' && stato==a)
           {
           i++;
           parola++;
           stato=b;
           }   
        if(line[i]==' '&& stato==b)
        {
        stato=a;
        i++;
        }
        else i++;
        }
        return parola;
     }
        
 void trovaipunti (int k)
 {
      double t,o,c,r;
      int h;
      t=k/C;
      o=floor(t);
	  if(k<=C)
      {
          for(r=0;r<=0;r++)
          {
              for(c=0;c<k;c++)
              illumina(r,c);
          }
                 
      }
      
      if(k>C)
      {
          for(r=0,h=0;r<=o;r++,h++)
          {
              for(c=0;c<C && h<=k;c++,h++)
              illumina(r,c);
          }
      }
}



Ho dunque deciso di disporre gli asterischi, non piu' in riga ma in colonna.. Stavolta, se inserisco meno parole del numero di righe, o al piu' uguali, funziona.. se inserisco piu' parole non funziona..
Non riesco a trovare l'errore:

codice:
     
#include<stdio.h>
#include <math.h>
#define R 12
#define C 8

char matrix[R][C];

int getline(char[]);        //in colonna
int contaparole(char[]);
void crea();
void stampa(); 
void illumina(int,int);
void trovaipunti (int);

main()
{     int k;
      char vett[10000];
      printf("Inserisci una frase :\n");
      getline(vett);
      k=contaparole(vett);
      printf("Il numero di parole che hai inserito corrispondera' al numero di asterischi..\n");
      crea();
      trovaipunti(k); 
      stampa();
      getch();
}
       

void crea()
{
      int r,c;
      for(r=0;r<R;r++)
        for(c=0;c<C;c++)
            matrix[r][c]='.';
}

void illumina(int x,int y)
{
     matrix[x][y]='*';
}


void stampa()
{
     int c,r;
     for(r=0;r<R;r++)
     {
         for(c=0;c<C;c++)
         printf("%c\t",matrix[r][c]);
         printf("\n");
     }
}


int getline (char vettore[]){
int c,i=0;
                            while((c=getchar())!= '\n')
                                                  vettore [i++]=c;
                            if (c=='\n')
                                         vettore[i++]=c;

                            vettore[i]= '\0';
                            return i;
                            }
                            
int contaparole(char line[])
    {
        int a=0,b=1,i=0,stato,parola=0;
        stato=a;
        while(line[i]!=EOF)   
        {
        if(line[i]!=' ' && stato==a)
           {
           i++;
           parola++;
           stato=b;
           }   
        if(line[i]==' '&& stato==b)
        {
        stato=a;
        i++;
        }
        else i++;
        }
        return parola;
     }
        
 void trovaipunti (int k)
 {
      double t,o,c,r;
      int h;
      t=k/R;
      o=floor(t);
	  if(k<=R)
      {
          for(r=0;r<k;r++)
          {
              for(c=0;c<=0;c++)
              illumina(r,c);
          }
                 
      }
      
      if(k>R)
      {
          for(r=0,h=0;r<=R;r++,h++)
          {
              for(c=0;c<=o && h<=k;c++,h++)
              illumina(r,c);
          }
      }
}