1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ENTREE "entree.txt"
#define SORTIE "sortie.txt"
int k = 0;
int main(int argc, char *argv[]) {
char menu;
// ON AFFICHE LE MENU PRINCIPAL...
printf(" __________________ \n\n");
printf(" **MENU PRINCIPAL** \n");
printf(" __________________ \n\n\n");
printf(" Tapez 1 pour utiliser la methode CESAR\n\n");
printf(" Tapez 2 pour utiliser la methode VIGENERE \n\n");
menu = getch();
system("cls");
if (menu == '1') // On affiche le premier menu puisque l'utilisateur à taper "1"
{
char v;
printf(" _________________ \n\n");
printf(" **METHODE CESAR** \n");
printf(" _________________ \n\n\n");
printf(" Tapez 1 pour coder une phrase manuellement\n\n");
printf(" Tapez 2 pour decoder une phrase manuellement\n\n");
printf(" Tapez 3 pour coder a partir d'un fichier\n\n");
printf(" Tapez 4 pour decoder a partir d'un fichier\n\n");
scanf("%d", &v);
system("cls");
if (v == 1) {
char car;
char phrase[1000];
int i;
gets(phrase);
printf("Entrez la phrase a coder: ");
gets(phrase); // Analyse la chaîne de caractères à coder
printf("Choisissez un code entre 0 et 100: ");
scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
printf("le code : "); // Affiche le code
for (k = 0; k < strlen(phrase); k++) {
car = (phrase[k] + i); // Indique le déclage de caractère dans l'ordre alphabétique
printf("%c", car);
}
}
if (v == 2) {
char car;
char phrase[1000];
int i;
gets(phrase);
printf("Entrez la phrase a decoder: ");
gets(phrase); // Analyse la chaîne de caractères à coder
printf("Choisissez un code entre 0 et 100: ");
scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
printf("le code : "); // Affiche le code
for (k = 0; k < strlen(phrase); k++) {
car = (phrase[k] - i); // Indique le déclage de caractère dans l'ordre inversement alphabétique
printf("%c", car);
}
}
if (v == 3) {
FILE *f_in, *f_out;
int c;
{
FILE *fichier = NULL;
int caractereActuel = 0;
int i;
char car;
fichier = fopen("entree.txt", "r"); // Ouvre et lis le fichier
printf("Choisissez un code entre 0 et 100: ");
scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
if (fichier != NULL) {
// Boucle de lecture des caractères un à un
printf("votre texte : ");
do {
caractereActuel = fgetc(fichier); // On lit le caractère
// On l'affiche
printf("%c", caractereActuel);
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
}
fichier = fopen("entree.txt", "r");
if (fichier != NULL) {
printf("\nvotre texte code : ");
do {
caractereActuel = fgetc(fichier); // On lit le caractère
// On l'affiche
car = caractereActuel + i;
printf("%c", car);
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(fichier);
}
return 0;
}
}
if (v == 4) {
FILE *f_in, *f_out;
int c;
{
FILE *fichier = NULL;
int caractereActuel = 0;
int i;
char car;
fichier = fopen("sortie.txt", "r"); // Ouvre et lis le fichier
printf("Choisissez un code entre 0 et 100: ");
scanf("%d", &i); // Se prépare pour le code (selon le nombre de décalage de caractère proposé par l'utilisateur
if (fichier != NULL) {
// Boucle de lecture des caractères un à un
printf("votre texte : ");
do {
caractereActuel = fgetc(fichier); // On lit le caractère
// On l'affiche
printf("%c", caractereActuel);
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
}
fichier = fopen("sortie.txt", "r");
if (fichier != NULL) {
printf("\nvotre texte decode : ");
do {
caractereActuel = fgetc(fichier); // On lit le caractère
// On l'affiche
car = caractereActuel - i;
printf("%c", car);
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(fichier);
}
return 0;
}
}
}
if (menu == '2') {
char v;
printf(" ____________________ \n\n");
printf(" **METHODE VIGENERE** \n");
printf(" ____________________ \n\n\n");
printf(" Tapez 1 pour coder une phrase manuellement\n\n");
printf(" Tapez 2 pour decoder une phrase manuellement\n\n");
printf(" Tapez 3 pour coder a partir d'un fichier\n\n");
printf(" Tapez 4 pour decoder a partir d'un fichier\n\n");
scanf("%d", &v);
system("cls");
if (v == 1) {
char Cle[1000]; // Formé de caractères de 'A' à 'Z' uniquement !
char Ori[1000];
char Cry[100], Dec[100]; // Au moins aussi longs que Ori
int i = 0;
gets(Ori);
printf("Entrer la phrase a coder: \n");
gets(Ori);
gets(Cle);
printf("entrer le code: \n");
gets(Cle);
int nCle = strlen(Cle), nTxt = strlen(Ori);
for (int i = 0, k = -1; i < nTxt; ++i) {
int c = (int)Ori[i];
Cry[i] = ((c + Cle[(++k) % nCle]) % 26) + 26;
}
Cry[i] = '/0';
printf("voila la phrase crypter : %s", Cry);
}
if (v == 2) {
char Cle[1000]; // Formé de caractères de 'A' à 'Z' uniquement !
char Ori[1000];
char Cry[100], Dec[100]; // Au moins aussi longs que Ori
int i = 0;
gets(Ori);
printf("Entrer la phrase a decoder: \n");
gets(Ori);
gets(Cle);
printf("entrer le code: \n");
gets(Cle);
int nCle = strlen(Cle), nTxt = strlen(Ori);
for (int i = 0, k = 1; i < nTxt; ++i) {
int c = (int)Ori[i];
Cry[i] = ((c + Cle[(++k) % nCle]) % 26) + 26;
}
Cry[i] = '/0';
printf("voila la phrase decrypter : %s", Cry);
}
}
} |
Partager