Για το αραίωμα του κώδικα, παραθέτω πως αραίωσα τον τελευταίο σου για να δω τι κάνει. Βέβαια εκτός από το αραίωμα έκανα και καμιά 100αριά ακόμα αλλαγές

Βασικά έτσι όπως τον έκανα κάνει ακριβώς ότι και ο δικός σου, αλλά άλλαξα ονόματα μεταβλητών, σου έβαλα εναλλακτικές υλοποιήσεις του δικού σου κώδικα (αφήνοντας μέσα σε /*** ... ***/ τις δικές σου υλοποιήσεις) κι έβαλα σχόλια που εξηγούν τι κάνει ο κώδικάς σου. Ειδικά στη main() τα σχόλια ελπίζω να σε βοηθήσουν να καταλάβεις γιατί δεν δουλεύει σωστά το πρόγραμμά σου (είναι αλγοριθμικά εσφαλμένο).
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*** DISABLED
#include <ctype.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
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'};
int i;
for (i=0; i < 40; i++)
{
if (c == s[i]) {
return 1;
}
}
return 0;
***/
}
// ---------------------------------------------------------------------------------
int main( void )
{
int i, vsum=0, osum=0, csum=0, slen; // vowels-sum, others-sum, consonants-sum
char s[256], c;
fgets(s, 256, stdin);
slen = strlen( s );
for (i=0; i < slen; i++)
{
// αν βρεις φωνήεν ενάλλαξέ το με το προηγούμενο φωνήεν που έχεις βρει
if ( is_vowel( s[i] ) ) {
c = s[ vsum ];
s[ vsum++ ] = s[ i ];
s[i] = c;
}
// αν βρεις σύμφωνο ενάλλαξέ το με το προηγούμενο σύμφωνο που έχεις βρει
else if ( is_consonant( s[i] ) ) {
c = s[ csum ];
s[ csum++ ] = s[i];
s[ i ] = c;
}
// αν βρεις άλλο ενάλλαξέ το με το προηγούμενο ομοειδές που έχεις βρει
/*** else if( isprint( s[i] ) ) { ***/
else {
c = s[ osum ];
s[ osum++ ] = s[i];
s[ i ] = c;
}
/*** c = 0; ***/
}
/*** DISABLED
slen = strlen(s);
for (i=0; i < slen; i++)
putchar( s[i] );
putchar('\n');
***/
puts( s );
return 0;
}
btw, στη C αποτελεί κοινή πρακτική μεταβλητές που αναφέρονται σε strings να ονομάζονται s ή t, μεταβλητές που αναφέρονται σε χαρακτήρα να ονομάζονται c, μεταβλητές που αναφέρονται σε μετρητές να ονομάζονται i, j, k, ακέραιοι να ονομάζονται n,m,l, πραγματικοί να ονομάζονται x,y,z ... έχει κι άλλα, αλλά θα τελειώσω... αύριο

Για την εικόνα, πρέπει να αραιώσω ξανά τον κώδικα που της αντιστοιχεί και κυρίως να βρω σε ποιον από όλους τους κώδικες που έχεις ποστάρει αντιστοιχεί
