#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#define MAXLEN (200+1)
void phrase_rev( char [ ] ) ;
void phrase_fill( char [ ] ) ;
int main( void )
{
char input[ MAXLEN ] = { '\0 ' } ;
phrase_fill( input) ;
phrase_rev( input) ;
return 0 ;
}
void phrase_fill( char input[ ] )
{
int c ;
int i ;
for ( i
= 0 ; i
< MAXLEN
- 1 && '\n ' != ( c
= getchar ( ) ) && c
!= '.' && c
!= '?' ; i
++ ) { printf ( "\n Character %c ignored " , c
) ; -- i;
continue ;
}
input[ i] = c;
}
input[ i] = '\0 ' ;
return ;
}
void phrase_rev( char input[ ] )
{
int i ;
bool onspace = false ;
//int c;
printf ( " The reversal of the sentence: " ) ;
for ( i= MAXLEN- 1 ; i > - 1 ; i-- ) {
if ( isspace ( input
[ i
] ) && ! onspace
) { /* Σε σημείο κενού */ printf ( "%s%c" , & input
[ i
+ 1 ] , input
[ i
] ) ; input[ i] = '\0 ' ;
onspace = true ;
}
else if ( isspace ( input
[ i
] ) ) /* space-area has >1 chars*/ putchar ( input
[ i
] ) ; /* For two consecutive spaces*/ else /* Σε περιοχη που δεν εχει κενό */
onspace = false ;
}
printf ( "%s" , input
) ; // printf αντι της puts επειδη η τελευταία προσαρτά και έναν χαρακτήρα αλλαγής γραμμής. //putchar(c);
return ;
}
//----------------------------------------------------------------------------------------------
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CiNkZWZpbmUgTUFYTEVOICAgICAgICAoMjAwKzEpCgp2b2lkIHBocmFzZV9yZXYoIGNoYXIgW10pOwp2b2lkIHBocmFzZV9maWxsKCBjaGFyIFtdKTsKCmludCBtYWluKCB2b2lkICkKewogICAgICAgIGNoYXIgaW5wdXRbIE1BWExFTiBdID0geydcMCd9OwogCiAgICAgICAgcHJpbnRmKCIgR2l2ZSBhIHNlbnRlbmNlOiAiKTsKICAgICAgICAKICAgICAgICBwaHJhc2VfZmlsbChpbnB1dCk7CiAgICAgICAgcGhyYXNlX3JldihpbnB1dCk7CiAgICAgICAgCiAgICAgICByZXR1cm4gMDsKfQp2b2lkIHBocmFzZV9maWxsKCBjaGFyIGlucHV0W10pCnsKICAgIGludCBjIDsKICAgIGludCBpIDsKICAgCiAgICBmb3IgKGk9MDsgaSA8IE1BWExFTi0xICYmICdcbicgIT0gKGMgPSBnZXRjaGFyKCkpICYmIGMgIT0gJy4nICYmIGMgIT0gJz8nOyBpKyspIHsKCQlpZiggaXNwdW5jdChjKSkgewoJCQlwcmludGYoIlxuIENoYXJhY3RlciAlYyBpZ25vcmVkICIgLCBjKTsKCQkJLS1pOwoJCQljb250aW51ZTsKCQl9CgkJaW5wdXRbaV0gPSBjOwoJfQogICAgICAgICAgICAgICAgCiAgICAgICAgaW5wdXRbaV0gPSAnXDAnOwogICAgICAgIAogICAgICAgIHJldHVybiA7Cn0KCQp2b2lkIHBocmFzZV9yZXYoIGNoYXIgaW5wdXRbXSkKewoJaW50ICAgICBpIDsKICAgIGJvb2wgICAgb25zcGFjZSA9IGZhbHNlOwogICAvL2ludCBjOwoKICAgICAgICBwcmludGYoIiBUaGUgcmV2ZXJzYWwgb2YgdGhlIHNlbnRlbmNlOiAiKTsKICAgICAgICAgICAKICAgICAgICBmb3IgKGk9IE1BWExFTi0xIDsgaSA+IC0xOyBpLS0pIHsKICAgICAgICAKICAgICAgICAgICAgICAgIGlmICggaXNzcGFjZShpbnB1dFtpXSkgJiYgIW9uc3BhY2UgKSB7ICAgICAgICAgIC8qIM6jzrUgz4POt868zrXOr86/IM66zrXOvc6/z40gKi8KICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCAiJXMlYyIsICZpbnB1dFtpKzFdICwgaW5wdXRbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFtpXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgICAgIG9uc3BhY2UgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoIGlzc3BhY2UoIGlucHV0W2ldICkgKSAgICAgICAgICAgICAgICAgLyogc3BhY2UtYXJlYSBoYXMgPjEgY2hhcnMqLwogICAgICAgICAgICAgICAgICAgICAgIHB1dGNoYXIoIGlucHV0W2ldICk7ICAgICAgICAgICAgICAgICAgICAgLyogRm9yIHR3byBjb25zZWN1dGl2ZSBzcGFjZXMqLwogICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogzqPOtSDPgM61z4HOuc6/z4fOtyDPgM6/z4UgzrTOtc69IM61z4fOtc65IM66zrXOvc+MICAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgb25zcGFjZSA9IGZhbHNlOyAKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlcyIgLCBpbnB1dCApOyAgICAgICAgICAgIC8vIHByaW50ZiDOsc69z4TOuSDPhM63z4IgcHV0cyDOtc+AzrXOuc60zrcgzrcgz4TOtc67zrXPhc+EzrHOr86xIM+Az4HOv8+DzrHPgc+EzqwgzrrOsc65IM6tzr3Osc69IM+HzrHPgc6xzrrPhM6uz4HOsSDOsc67zrvOsc6zzq7PgiDOs8+BzrHOvM68zq7Pgi4KICAgICAgIC8vcHV0Y2hhcihjKTsKICAgICAgICAKCXJldHVybiA7Cn0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCg==