Traducteur/"détraducteur" javanais version 2

Description

j'ai ajouté la possibilité de passer du JAVANAIS au FRANCAIS.

Ainsi on peut faire de véritable conversations "cryptées" :)

Le code a été amélioré en respectant les commentaires qui ont été écrits à propos de lui.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#include "auxiliaires.h"

int main(int argc, char *argv[])
{	
    FILE* fichier_ini ;
    FILE* fichier_fin ;
    
    char premiere_lettre ;
    short choix ;
    
    printf("%s","traduction Francais => Javanais : tapper 1\ntraduction Javanais => Francais : tapper 2\nConfirmer par Entree\n\nchoix :");

    scanf("%d",&choix);
    
    fichier_ini = fopen("initial.txt","r");
    
    if(fichier_ini == NULL) // si le fichier initial n'existe pas on renvoie une erreur
    {
        fprintf(stderr, "Erreur lors de l'ouverture du fichier initial\n") ;
        attendre();
    }
    else
    {
        fichier_fin = fopen("final.txt","w"); // flot entrant
        premiere_lettre = fgetc( fichier_ini ) ;
        
        if( premiere_lettre == EOF )
        {
                printf("%s","le fichier a traiter est vide\n");
                attendre();
        }
        else
        {
                if( choix == 1) Traduire_Javanais( fichier_ini , fichier_fin , premiere_lettre ) ;
                else Traduire_Francais( fichier_ini , fichier_fin , premiere_lettre ) ;
        }
        
        fclose( fichier_fin );
    }
    
    fclose( fichier_ini );   
    return( 0 );
}

//-------------------------------------------------------------------------------

short EstVoyelle( char lettre )
{
    if( lettre == 'a' ||
        lettre == 'e' ||
        lettre == 'i' ||
        lettre == 'o' ||
        lettre == 'u' ||
        lettre == 'y' ||
        lettre == 'A' ||
        lettre == 'E' ||
        lettre == 'I' ||
        lettre == 'O' ||
        lettre == 'U' ||
        lettre == 'Y'  )
    {
        return( 1 ) ; // en C le booleen vrai est un entier = à 1.
    }
    else
    {
        return( 0 ) ;
    }
}

//------------------------------------------------------------------------------

short EstConsonne( char lettre )
{
    if( (( lettre >= 'a' && lettre <= 'z' )||( lettre >= 'A' && lettre <= 'Z' )) && !EstVoyelle( lettre ) )
    {
        return( 1 ) ;
    }
    else
    {
        return( 0 ) ;
    }
}
//------------------------------------------------------------------------------

void Traduire_Javanais( FILE* fichier_ini , FILE* fichier_fin , char premiere_lettre )
{

    char lettre1,lettre2 ;
    short debut ;

    debut = 1 ;
    do
        {
                if( debut )
                {
                                lettre1 = premiere_lettre ;
                                debut = 0 ;
                }
                else
                {
                                lettre1 = lettre2 ;
                }
                            
                lettre2 = fgetc( fichier_ini ) ;
                    
                fprintf( fichier_fin ,"%c", lettre1 );
                    
                if( EstConsonne( lettre1 ) && EstVoyelle( lettre2) )
                {
                                fprintf( fichier_fin ,"%s", "av" );
                }
                
        }while( lettre2 != EOF );
        
}
//------------------------------------------------------------------------------

void Traduire_Francais( FILE* fichier_ini , FILE* fichier_fin , char premiere_lettre )
{
    
    char lettre1,lettre2 ;
    short debut, traite ;
    
    debut = 1 ;
    traite = 1 ;
    
    do
    {
        if( debut )
        {
                lettre1 = premiere_lettre ;
                debut = 0 ;
        }
        else
        {
                lettre1 = lettre2 ;
        }
        
        lettre2 = fgetc( fichier_ini ) ;
        
        traite++ ;
        
        if( lettre1 == 'a' && lettre2 == 'v' )
        {
                if( traite == 1 )
                {
                                fprintf( fichier_fin ,"%c", lettre1 );
                }               
                else
                {
                                lettre2 = fgetc( fichier_ini );
                                traite = 0 ; // pour ne pas supprimer des "av" initialement présents.
                }
        }
        else
        {
                fprintf( fichier_fin ,"%c", lettre1 );
        }
    }while( lettre2 != EOF );

}
//------------------------------------------------------------------------------

void attendre( void )
{
    int quit ;
    fflush( stdin ) ; // vide le buffer de saisie du clavier ( stdin ).
    scanf("%c",&quit ) ;
}

Conclusion :


merci aux intéressés :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.