fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5. int H;
  6. //printf("Entrez la hauteur du diamant (nombre impair positif, ex: 9) : ");
  7. if (scanf("%d", &H) != 1) return 0;
  8.  
  9. if (H <= 0) {
  10. printf("Hauteur doit etre positive.\n");
  11. return 0;
  12. }
  13. /* Si H est pair, on l'ajuste au nombre impair supérieur */
  14. if (H % 2 == 0) {
  15. printf("Hauteur paire detectee, on utilise H+1 = %d\n", H+1);
  16. H = H + 1;
  17. }
  18.  
  19. int mid = H / 2;
  20. /* On parcourt une grille H x H centrée sur (mid,mid) */
  21. for (int i = 0; i < H; i++) {
  22. for (int j = 0; j < H; j++) {
  23. int dx = i - mid;
  24. int dy = j - mid;
  25. int manhattan = abs(dx) + abs(dy);
  26.  
  27. /* Condition : être à l'intérieur du losange */
  28. if (manhattan <= mid) {
  29. /* bordure du losange */
  30. if (manhattan == mid) {
  31. putchar('*');
  32. }
  33. /* ou sur l'une des 2 diagonales (principale ou secondaire) */
  34. else if ( (i == j) || (i + j == H - 1) ) {
  35. putchar('*');
  36. } else {
  37. putchar(' ');
  38. }
  39. } else {
  40. putchar(' ');
  41. }
  42. }
  43. putchar('\n');
  44. }
  45.  
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5316KB
stdin
9
stdout
    *    
   * *   
  *   *  
 * * * * 
*   *   *
 * * * * 
  *   *  
   * *   
    *