Estrela de estampa ('*') em diamante em C com loops aninhados?

Eu quero ser capaz de imprimir um diamante como este quando o usuário insere 5 para o diamante. Mas também funcionará para qualquer valor que seja ímpar e maior que 0.

Eu tenho um código que funciona para fazer um diamante para a entrada do usuário de 5, mas não funciona para todas as entradas de números ímpares.

<code> half = (size/2)+1;

 for (a=1; a <=  half ; a++) /*top to mid row of diamond*/
   {
     for (b=a; b<half;b++)
       {
     printf(" ");
       }
     for (c= size -2* a; c <=  half; c++)
       {
     printf("*");
       } 
      printf("\n");
   }
 for (a = 1; a < half;a++)
   {
     for (b = a; b>0;b--)
       {
     printf(" ");
       }
     for (c = size-2*a; c >0 ;c--)
       {
     printf("*");
       }
     printf("\n");
   }


  return 0;
}
</code>

Qualquer ajuda seria muito apreciada, obrigado.

Mike

questionAnswers(11)

yourAnswerToTheQuestion