fork download
  1. /************************************************************************
  2. * Το πρόγραμμα υπολογιζει τις εμφανίσεις(πανω απο μια φορα) των γραμμάτων
  3. * σε μια πρόταση. Αν ένα γραμμα εμφανίζεται παραπανω απο μια φορα τυπώνονται
  4. * ο αριθμος εμφάνισης καθως και το γράμμα. Σε αντιθετη περίπτωση τυπώνεται
  5. * ενα μήνυμα οτι δεν υπάρχουν παραπανω εμφανισεις . Το πρόγραμμα δεν επεξεργάζεται
  6. * κενές ή άκυρες προτάσεις . */
  7. #include <stdio.h>
  8. #include <ctype.h>
  9. #include <stdbool.h>
  10. #include <stdlib.h>
  11. #define ALPH_LEN 26
  12. #define EXITCHAR '#'
  13.  
  14. void process_input(int [] , char []);
  15. void check( int [] , char []);
  16. void clear( int [] , char []);
  17.  
  18. int main(void)
  19. {
  20. int check_letters[ALPH_LEN]={0};
  21. char letters[ALPH_LEN]= {0};
  22.  
  23. for(;;)
  24. {
  25. puts(" Δώσε πρόταση ( # για τερματισμό ) : ");
  26. process_input(check_letters , letters);
  27. check(check_letters , letters);
  28. clear(check_letters , letters);
  29. }
  30.  
  31. return 0;
  32. }
  33.  
  34. //---Διάβασμα εισόδου + επεξεργασία(αύξηση κάθε στοιχείου αναλογα την εμφανιση του -----------------------------------
  35. void process_input(int check_letters[ALPH_LEN] , char letters[ALPH_LEN])
  36. {
  37. char ch;
  38. bool sentimel = true;
  39.  
  40. while((ch=tolower(getchar()))!='\n')
  41. {
  42. if( ch == EXITCHAR )
  43. {
  44. puts("Bye!");
  45. exit(EXIT_SUCCESS);
  46. }
  47.  
  48. if( isalpha(ch) )
  49. {
  50. letters[ch-'a']= ch;
  51. check_letters[ch -'a']++;
  52. sentimel = false;
  53. }
  54.  
  55. if( !isalpha(ch) && sentimel )
  56. {
  57. puts(" Δεν υπάρχει έγκυρη προταση. ");
  58. exit(EXIT_SUCCESS);
  59. }
  60. } // Εκτός loop
  61.  
  62. if( sentimel )
  63. {
  64. puts(" Kενή προταση. ");
  65. exit(EXIT_SUCCESS);
  66. }
  67.  
  68. return;
  69. }
  70.  
  71. //-- Τσεκάρισμα για παραπάνω απο μια εμφανίσεις των γραμμάτων-----------
  72. void check( int check_letters[ALPH_LEN] , char letters[ALPH_LEN])
  73. {
  74. bool count = false;
  75. int i;
  76.  
  77. for(i=0; i<ALPH_LEN; i++)
  78. {
  79. if( check_letters[i] > 1 )
  80. {
  81. printf("\nEμφάνιση γράμματος %c : %d φορές\n" , letters[i] , check_letters[i] );
  82. count = true ;
  83. }
  84. }
  85. if( !count )
  86. printf("\n Καμια εμφάνιση πανω απο μια φορα.");
  87.  
  88. return;
  89. }
  90.  
  91. //--- Καθαρισμός της μνήμης---------------------------------------------
  92. void clear( int check_letters[ALPH_LEN] , char letters[ALPH_LEN] )
  93. {
  94. int i=0;
  95.  
  96. while (i < ALPH_LEN)
  97. {
  98. check_letters[i] = 0;
  99. letters[i] = 0;
  100. ++i;
  101. }
  102. return;
  103. }
  104.  
Success #stdin #stdout 0.02s 1680KB
stdin
Standard input is empty
stdout
 Δώσε πρόταση ( # για τερματισμό ) : 
 Δεν υπάρχει έγκυρη προταση.