/************************************************************************
* Το πρόγραμμα υπολογιζει τις εμφανίσεις(πανω απο μια φορα) των γραμμάτων
* σε μια πρόταση. Αν ένα γραμμα εμφανίζεται παραπανω απο μια φορα τυπώνονται
* ο αριθμος εμφάνισης καθως και το γράμμα. Σε αντιθετη περίπτωση τυπώνεται
* ενα μήνυμα οτι δεν υπάρχουν παραπανω εμφανισεις . Το πρόγραμμα δεν επεξεργάζεται
* κενές ή άκυρες προτάσεις . */
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <stdlib.h>
#define ALPH_LEN 26
#define EXITCHAR '#'
void process_input(int [] , char []);
void check( int [] , char []);
void clear( int [] , char []);
int main(void)
{
int check_letters[ALPH_LEN]={0};
char letters[ALPH_LEN]= {0};
for(;;)
{
puts(" Δώσε πρόταση ( # για τερματισμό ) : "); process_input(check_letters , letters);
check(check_letters , letters);
clear(check_letters , letters);
}
return 0;
}
//---Διάβασμα εισόδου + επεξεργασία(αύξηση κάθε στοιχείου αναλογα την εμφανιση του -----------------------------------
void process_input(int check_letters[ALPH_LEN] , char letters[ALPH_LEN])
{
char ch;
bool sentimel = true;
{
if( ch == EXITCHAR )
{
}
{
letters[ch-'a']= ch;
check_letters[ch -'a']++;
sentimel = false;
}
{
puts(" Δεν υπάρχει έγκυρη προταση. "); }
} // Εκτός loop
if( sentimel )
{
}
return;
}
//-- Τσεκάρισμα για παραπάνω απο μια εμφανίσεις των γραμμάτων-----------
void check( int check_letters[ALPH_LEN] , char letters[ALPH_LEN])
{
bool count = false;
int i;
for(i=0; i<ALPH_LEN; i++)
{
if( check_letters[i] > 1 )
{
printf("\nEμφάνιση γράμματος %c : %d φορές\n" , letters
[i
] , check_letters
[i
] ); count = true ;
}
}
if( !count )
printf("\n Καμια εμφάνιση πανω απο μια φορα.");
return;
}
//--- Καθαρισμός της μνήμης---------------------------------------------
void clear( int check_letters[ALPH_LEN] , char letters[ALPH_LEN] )
{
int i=0;
while (i < ALPH_LEN)
{
check_letters[i] = 0;
letters[i] = 0;
++i;
}
return;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIM6kzr8gz4DPgc+MzrPPgc6xzrzOvM6xIM+Fz4DOv867zr/Os865zrbOtc65IM+EzrnPgiDOtc68z4bOsc69zq/Pg861zrnPgijPgM6xzr3PiSDOsc+Azr8gzrzOuc6xIM+Gzr/Pgc6xKSDPhM+Jzr0gzrPPgc6xzrzOvM6sz4TPic69IAoqIM+DzrUgzrzOuc6xIM+Az4HPjM+EzrHPg863LiDOkc69IM6tzr3OsSDOs8+BzrHOvM68zrEgzrXOvM+GzrHOvc6vzrbOtc+EzrHOuSDPgM6xz4HOsc+AzrHOvc+JIM6xz4DOvyDOvM65zrEgz4bOv8+BzrEgz4TPhc+Az47Ovc6/zr3PhM6xzrkKKiDOvyDOsc+BzrnOuM68zr/PgiDOtc68z4bOrM69zrnPg863z4IgzrrOsc64z4nPgiDOus6xzrkgz4TOvyDOs8+BzqzOvM68zrEuIM6jzrUgzrHOvc+EzrnOuM61z4TOtyDPgM61z4HOr8+Az4TPic+Dzrcgz4TPhc+Az47Ovc61z4TOsc65CiogzrXOvc6xIM68zq7Ovc+FzrzOsSDOv8+EzrkgzrTOtc69IM+Fz4DOrM+Bz4fOv8+Fzr0gz4DOsc+BzrHPgM6xzr3PiSDOtc68z4bOsc69zrnPg861zrnPgiAuIM6kzr8gz4DPgc+MzrPPgc6xzrzOvM6xIM60zrXOvSDOtc+AzrXOvs61z4HOs86szrbOtc+EzrHOuQoqIM66zrXOvc6tz4Igzq4gzqzOus+Fz4HOtc+CIM+Az4HOv8+EzqzPg861zrnPgiAuICovCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8Y3R5cGUuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojZGVmaW5lIEFMUEhfTEVOIDI2CiNkZWZpbmUgRVhJVENIQVIgJyMnCgp2b2lkIHByb2Nlc3NfaW5wdXQoaW50IFtdICwgY2hhciBbXSk7CnZvaWQgY2hlY2soIGludCBbXSAsIGNoYXIgW10pOwp2b2lkIGNsZWFyKCBpbnQgW10gLCBjaGFyIFtdKTsKCglpbnQgbWFpbih2b2lkKQoJewoJCWludCBjaGVja19sZXR0ZXJzW0FMUEhfTEVOXT17MH07IAoJCWNoYXIgbGV0dGVyc1tBTFBIX0xFTl09IHswfTsKCQkKCQlmb3IoOzspCgkJewoJCXB1dHMoIiDOlM+Oz4POtSDPgM+Bz4zPhM6xz4POtyAoICMgzrPOuc6xIM+EzrXPgc68zrHPhM65z4POvM+MICkgOiAiKTsKCQlwcm9jZXNzX2lucHV0KGNoZWNrX2xldHRlcnMgLCBsZXR0ZXJzKTsKCQljaGVjayhjaGVja19sZXR0ZXJzICwgbGV0dGVycyk7CgkJY2xlYXIoY2hlY2tfbGV0dGVycyAsIGxldHRlcnMpOwoJCX0KICAgIAoJCXJldHVybiAwOwkKCX0KCQovLy0tLc6UzrnOrM6yzrHPg868zrEgzrXOuc+Dz4zOtM6/z4UgKyDOtc+AzrXOvs61z4HOs86xz4POr86xKM6xz43Ovs63z4POtyDOus6szrjOtSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrHOvc6xzrvOv86zzrEgz4TOt869IM61zrzPhs6xzr3Ouc+Dzrcgz4TOv8+FIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZvaWQgcHJvY2Vzc19pbnB1dChpbnQgY2hlY2tfbGV0dGVyc1tBTFBIX0xFTl0gLCBjaGFyIGxldHRlcnNbQUxQSF9MRU5dKQp7CgljaGFyIGNoOwoJYm9vbCBzZW50aW1lbCA9IHRydWU7CiAgICAKCXdoaWxlKChjaD10b2xvd2VyKGdldGNoYXIoKSkpIT0nXG4nKQoJewoJCWlmKCBjaCA9PSBFWElUQ0hBUiApCgkJCXsKCQkJCXB1dHMoIkJ5ZSEiKTsKCQkJCWV4aXQoRVhJVF9TVUNDRVNTKTsKCQkJfQoJCgkJaWYoIGlzYWxwaGEoY2gpICkKCQkJewoJCQkJbGV0dGVyc1tjaC0nYSddPSBjaDsJCgkJCQljaGVja19sZXR0ZXJzW2NoIC0nYSddKys7CgkJCQlzZW50aW1lbCA9IGZhbHNlOwoJCQl9CiAgICAKCQlpZiggIWlzYWxwaGEoY2gpICAmJiBzZW50aW1lbCApIAoJCQl7CgkJCQlwdXRzKCIgzpTOtc69IM+Fz4DOrM+Bz4fOtc65IM6tzrPOus+Fz4HOtyDPgM+Bzr/PhM6xz4POty4gIik7CgkJCQkJZXhpdChFWElUX1NVQ0NFU1MpOwoJCQl9CQkKCQkJfSAgLy8gzpXOus+Ez4zPgiBsb29wCgoJCWlmKCBzZW50aW1lbCApCgkJCXsKCQkJCXB1dHMoIiBLzrXOvc6uIM+Az4HOv8+EzrHPg863LiAiKTsKCQkJCWV4aXQoRVhJVF9TVUNDRVNTKTsKCQkJfQoJCglyZXR1cm47Cn0KCi8vLS0gzqTPg861zrrOrM+BzrnPg868zrEgzrPOuc6xIM+AzrHPgc6xz4DOrM69z4kgzrHPgM6/IM68zrnOsSDOtc68z4bOsc69zq/Pg861zrnPgiDPhM+Jzr0gzrPPgc6xzrzOvM6sz4TPic69LS0tLS0tLS0tLS0Kdm9pZCBjaGVjayggaW50IGNoZWNrX2xldHRlcnNbQUxQSF9MRU5dICwgY2hhciBsZXR0ZXJzW0FMUEhfTEVOXSkKewoJCWJvb2wgY291bnQgPSBmYWxzZTsKCQlpbnQgaTsKCQoJCWZvcihpPTA7IGk8QUxQSF9MRU47IGkrKykKCQl7CQoJCQlpZiggY2hlY2tfbGV0dGVyc1tpXSA+IDEgKQoJCQkJeyAgICAKCQkJCQlwcmludGYoIlxuRc68z4bOrM69zrnPg863IM6zz4HOrM68zrzOsc+Ezr/PgiAlYyA6ICVkIM+Gzr/Pgc6tz4JcbiIgLCBsZXR0ZXJzW2ldICwgY2hlY2tfbGV0dGVyc1tpXSApOwoJCQkJCWNvdW50ID0gdHJ1ZSA7CgkJCQl9CgkJCX0JCgkJCWlmKCAhY291bnQgKQoJCQkJcHJpbnRmKCJcbiDOms6xzrzOuc6xIM61zrzPhs6szr3Ouc+Dzrcgz4DOsc69z4kgzrHPgM6/IM68zrnOsSDPhs6/z4HOsS4iKTsKCglyZXR1cm47Cgl9CgkKLy8tLS0gzprOsc64zrHPgc65z4POvM+Mz4Igz4TOt8+CIM68zr3Ors68zrfPgi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKdm9pZCBjbGVhciggaW50IGNoZWNrX2xldHRlcnNbQUxQSF9MRU5dICwgY2hhciBsZXR0ZXJzW0FMUEhfTEVOXSApCnsKCQlpbnQgaT0wOyAKCQoJCXdoaWxlIChpIDwgQUxQSF9MRU4pCgkJewoJCQljaGVja19sZXR0ZXJzW2ldID0gMDsKCQkJbGV0dGVyc1tpXSA9IDA7CgkJCSsraTsKCQl9IAoJcmV0dXJuOwp9Cgk=