fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_ELEMENTS 10
  5. #define EMPTY_ELEMVAL 0
  6.  
  7. #define ARR_ISEMPTY(arr) ( (arr)[0] == EMPTY_ELEMVAL )//εάν το πρώτο τμήμα του arr είναι 0 τότε επέστρεψε 0 αλλιώς 1
  8. #define ARR_ISFULL(arr, len) ( (arr)[(len)-1] != EMPTY_ELEMVAL )//εάν το τελευταίο τμήμα του arr είναι γεμάτο τότε επέστρεψε 0 αλλιώς 1
  9.  
  10. typedef enum { FALSE=0, TRUE } Bool;//Δημιούργησε ένα enum με τις μεταβλητές TRUE FALSE και τις τιμές 0 1 αντίστοιχα
  11.  
  12. // -------------------------------------------------------------------------------------
  13. void arr_print( int arr[], int maxelems )
  14. {
  15. register int i;
  16.  
  17. for (i=0; i < maxelems; i++)//ενώ(i=0;i είναι μικρότερο του maxelems;i++)
  18. printf("%d ", arr[i]);//Εκτύπωσε το iοστό του arr
  19. putchar('\n');//Εκτύπωσε '\n'
  20.  
  21. return;
  22. }
  23. // -------------------------------------------------------------------------------------
  24. int arr_append( int arr[], int maxelems, int val)
  25. {
  26. if ( ARR_ISFULL(arr, maxelems) )//εάν είναι γεμάτο το arr
  27. return -1;
  28.  
  29. if ( ARR_ISEMPTY(arr) ) { //εάν είναι άδειο το arr
  30. arr[0] = val; //το val εκχωρείται στο arr[0]
  31. return 0;
  32. }
  33. register int i;
  34. for (i=maxelems-1; arr[i] == EMPTY_ELEMVAL; i--)//ενώ(i=maxlems-1;το iοστό του arr = 0;i--)
  35. ;
  36. arr[++i] = val;//στο i+1 του arr εκχωρείται η τιμή του val
  37. return i;
  38. }
  39. // -------------------------------------------------------------------------------------
  40. Bool arr_prepend( int arr[], int maxelems, int val)
  41. {
  42. if ( ARR_ISFULL(arr, maxelems) )//εάν είναι γεμάτο το arr
  43. return FALSE; //επέστρεψε 1
  44.  
  45. memmove( &arr[1], &arr[0], (maxelems-1) * sizeof(int) );
  46. arr[0] = val; //το πρώτο του arr ισούται με 0
  47.  
  48. return TRUE; //επέστρψε 0
  49. }
  50. // --------------------------------------------------------------------------------------
  51. int arr_elemindex( int arr[], int maxelems, int val )
  52. {
  53. register int i;
  54. for (i=0; i < maxelems && arr[i] != val; i++)//ενώ(i=0;i είναι μικτρότερο του maxlems και το iοστό του arr δεν είναι ίσο με το val;i++)
  55. ;
  56. return i == maxelems ? -1 : i; //σε περίπτωση που το i είναι ίσο με το maxlems επέστρεψε -1 αλλιώς i
  57. }
  58. // -------------------------------------------------------------------------------------
  59. Bool arr_delete( int arr[], int maxelems, int val)
  60. {
  61. register int i;
  62. register int elem = arr_elemindex( arr, maxelems, val);
  63. if ( elem == -1 )//εάν το elem ισούται με -1
  64. return FALSE;//επέστρεψε 1
  65.  
  66. for (i=elem; arr[i+1] != EMPTY_ELEMVAL && i < maxelems-1; i++)//ενώ(i=elem;το (i+1)ιοστό του arr δεν είναι 0 και το i είναι μικρότερο του (maxlems-1);i++)
  67. arr[i] = arr[i+1];//Το iοστό του arr είναι ίσο με το επόμενό του
  68. arr[i] = EMPTY_ELEMVAL;//Το iοστό του arr είναι 0
  69.  
  70. return TRUE;
  71. }
  72. // -------------------------------------------------------------------------------------
  73.  
  74. int delete_all(int arr[],int maxelems) {
  75. register int i;
  76. for(i=0;i<maxelems;i++) { //ενώ(i=0;i είναι μικρότερο του maxelems;i++)
  77. arr[i] = 0; //το iοστό του arr = 0
  78. }
  79. return TRUE;
  80. }
  81.  
  82. int main( void )
  83. {
  84. int arr[ MAX_ELEMENTS ] = {10, 20, 30, 40, 50, 60, 70, 80, 0, 0};
  85.  
  86. arr_print( arr, MAX_ELEMENTS );
  87.  
  88. delete_all(arr,MAX_ELEMENTS);
  89.  
  90. arr_print( arr, MAX_ELEMENTS );
  91.  
  92. return 0;
  93. }
  94.  
  95.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty