fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void diamond1(int n) {
  6. int i, j;
  7. for (i = 0; i <= n / 2; ++i) {
  8. for (j = n / 2 - i; j > 0; --j) {
  9. printf(" ");
  10. }
  11.  
  12. for (j = 0; j < i * 2 + 1; ++j) {
  13. printf("*");
  14. }
  15.  
  16. puts("");
  17. }
  18.  
  19. for (i = n / 2 - 1; i >= 0; --i) {
  20. for (j = n / 2 - i; j > 0; --j) {
  21. printf(" ");
  22. }
  23.  
  24. for (j = 0; j < i * 2 + 1; ++j) {
  25. printf("*");
  26. }
  27.  
  28. puts("");
  29. }
  30. }
  31.  
  32. void diamond2(int n) {
  33. int i, j;
  34.  
  35. for (i = -n / 2; i <= n / 2; ++i) {
  36. int v = i < 0 ? -1 : 1;
  37. for (j = 0; j < i * v; ++j) {
  38. printf(" ");
  39. }
  40.  
  41. for (j = 0; j < n - 2 * i * v; ++j) {
  42. printf("*");
  43. }
  44.  
  45. puts("");
  46. }
  47. }
  48.  
  49. void diamond3(int n) {
  50. int i, j;
  51. char *a = NULL;
  52. char *s = NULL;
  53. char *d = NULL;
  54. a = calloc(n + 1, sizeof(char));
  55. if (!a) { return; }
  56. s = calloc(n + 1, sizeof(char));
  57. if (!s) { goto a_free; }
  58. d = calloc(n + 1, sizeof(char));
  59. if (!d) { goto s_free; }
  60.  
  61. for (i = 0; i < n; ++i) {
  62. strncat(s, " ", 1);
  63. strncat(a, "*", 1);
  64. }
  65.  
  66. for (i = -n / 2; i <= n / 2; ++i) {
  67. int v = i < 0 ? -1 : 1;
  68. memset(d, 0, n + 1);
  69. strncat(d, s, i * v);
  70. strncat(d, a, n - 2 * i * v);
  71. puts(d);
  72. }
  73.  
  74. if (d) { free(d); d = NULL; }
  75. s_free:
  76. if (s) { free(s); s = NULL; }
  77. a_free:
  78. if (a) { free(a); a = NULL; }
  79. }
  80.  
  81. int main(int argc, char *argv[])
  82. {
  83. diamond1(5);
  84. diamond1(7);
  85. diamond2(5);
  86. diamond2(7);
  87. diamond3(5);
  88. diamond3(7);
  89. return EXIT_SUCCESS;
  90. }
  91.  
Success #stdin #stdout 0s 1920KB
stdin
Standard input is empty
stdout
  *
 ***
*****
 ***
  *
   *
  ***
 *****
*******
 *****
  ***
   *
  *
 ***
*****
 ***
  *
   *
  ***
 *****
*******
 *****
  ***
   *
  *
 ***
*****
 ***
  *
   *
  ***
 *****
*******
 *****
  ***
   *