Στο τελευταίο else απλά απενεργοποίησα τον έλεγχο για printable char (δλδ το is_print(c) ) ... δεν ήταν λάθος όπως το είχες, ίσα-ίσα ένας έξτρα έλεγχος δεν βλάπτει.
ΥΓ. Τον κώδικα του screenshot δεν έχω προλάβει να τον κοιτάξω ακόμα
Συντονιστής: konnn

migf1 έγραψε:
...
ΥΓ. Τον κώδικα του screenshot δεν έχω προλάβει να τον κοιτάξω ακόμα
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ------------------------------------------------------------------------------
int is_vowel( char c )
{
char *s = "aAEeIioOUuYy"; // ορισμός του s με όλα τα φωνήεντα
while ( *s ) // όσο το *s διαφέρει του '\0'
if ( c == *s++ ) // ... αν το c βρεθεί στο s
return 1; // ... ... επέστρεψε TRUE
return 0; // επέστρεψε FALSE
/*** DISABLED
int i;
char s[] = {'a','A','E','e','I','i','o','O','U','u','Y','y','\0'};
for (i=0; i < 12; i++)
if ( c == s[i] )
return 1;
return 0;
***/
}
// ------------------------------------------------------------------------------
int is_consonant( char c )
{
// ορισμός του s με όλα τα σύμφωνα
char *s = "bBcCdDfFgGhHjJkKlLmMnNpPqQrRsStTvVwWxXzZ";
while ( *s ) // όσο το *s διαφέρει του '\0'
if ( c == *s++ ) // ... αν το c βρεθεί στο s
return 1; // ... ... επέστρεψε TRUE
return 0; // επέστρεψε FALSE
/*** DISABLED
int i;
char s[] = {'b','B','c','C','d','D','f','F','g','G','h','H','j','J','k','K','l','L','m','M','n','N','p','P','q','Q','r','R','s','S','t','T','v','V','w','W','x','X','z','Z','\0'};
for (i=0; i < 40; i++)
if ( c == s[i] )
return 1;
return 0;
***/
}
// ------------------------------------------------------------------------------
int main( void )
{
int i, i2=0, i3=0, i4=0, slen;
char s[256] = "";
char vows[255] = "", cons[255] = "", othr[255] = "";
fgets(s, 256, stdin);
slen = strlen( s );
for (i=0; i < slen; i++)
{
if ( is_consonant( s[i] ) ) {
cons[ i2++ ] = s[ i ];
}
else if ( is_vowel( s[i] ) ) {
vows[ i3++ ] = s[ i ];
}
else {
if ( s[i] > 31 && s[i] <= 64 )
othr[ i4++ ] = s[ i ];
}
}
/*** DISABLED for (i=0; i < strlen( s ); i++)
s[i] = 0;
***/
s[0] = '\0'; // σβήσιμο των περιεχομένων του s
strncat(s, vows, 255);
strncat(s, othr, 255);
strncat(s, cons, 255);
/*** DISABLED
for (i=0; i < strlen( s ); i++)
printf("%c", s[i]);
putchar('\n');
***/
puts( s ); // τύπωμα του s στην οθόνη
return 0;
}

migf1 έγραψε:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// ------------------------------------------------------------------------------
int is_vowel( char c )
{
char *s = "aAEeIioOUuYy"; // ορισμός του s με όλα τα φωνήεντα
while ( *s ) // όσο το *s διαφέρει του '\0'
if ( c == *s++ ) // ... αν το c βρεθεί στο s
return 1; // ... ... επέστρεψε TRUE
return 0; // επέστρεψε FALSE
/*** DISABLED
int i;
char s[] = {'a','A','E','e','I','i','o','O','U','u','Y','y','\0'};
for (i=0; i < 12; i++)
if ( c == s[i] )
return 1;
return 0;
***/
}
// ------------------------------------------------------------------------------
int is_consonant( char c )
{
// ορισμός του s με όλα τα σύμφωνα
char *s = "bBcCdDfFgGhHjJkKlLmMnNpPqQrRsStTvVwWxXzZ";
while ( *s ) // όσο το *s διαφέρει του '\0'
if ( c == *s++ ) // ... αν το c βρεθεί στο s
return 1; // ... ... επέστρεψε TRUE
return 0; // επέστρεψε FALSE
/*** DISABLED
int i;
char s[] = {'b','B','c','C','d','D','f','F','g','G','h','H','j','J','k','K','l','L','m','M','n','N','p','P','q','Q','r','R','s','S','t','T','v','V','w','W','x','X','z','Z','\0'};
for (i=0; i < 40; i++)
if ( c == s[i] )
return 1;
return 0;
***/
}
// ------------------------------------------------------------------------------
int main( void )
{
int i, i2=0, i3=0, i4=0, slen;
char s[256] = "";
char vows[255] = "", cons[255] = "", othr[255] = "";
fgets(s, 256, stdin);
slen = strlen( s );
for (i=0; i < slen; i++)
{
if ( is_consonant( s[i] ) ) {
cons[ i2++ ] = s[ i ];
}
else if ( is_vowel( s[i] ) ) {
vows[ i3++ ] = s[ i ];
}
else {
if ( s[i] > 31 && s[i] <= 64 )
othr[ i4++ ] = s[ i ];
}
}
/*** DISABLED for (i=0; i < strlen( s ); i++)
s[i] = 0;
***/
s[0] = '\0'; // σβήσιμο των περιεχομένων του s
strncat(s, 255, vows);
strncat(s, 255, othr);
strncat(s, 255, cons);
/*** DISABLED
for (i=0; i < strlen( s ); i++)
printf("%c", s[i]);
putchar('\n');
***/
puts( s ); // τύπωμα του s στην οθόνη
return 0;
}




clepto έγραψε:Off topic:
εγώ το κάνω σε bash, με την βοήθεια του encfs

έγραψε:ειναι σαν να τρως λαχανικά απο τον κήπο σου!!!!!!!!!


migf1 έγραψε:Καλημέρα,
την αντιμετάθεση την έχουμε κάνει ήδη, 2-3 σελίδες πιο πριν (αλλά κρατούσαμε σταθερά τον 1ο και τον τελευταίο χαρακτήρα): viewtopic.php?p=203469#p203469
