Aidez moi à detecter l 'erreur
hannou_hana
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici mon programme de chifre de vigenere en langage c aidez moi à detecter l 'erreur et merci d'avance
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
//char *alphabet = "abcdefghijklmnopqrstuvwxyz";
char texte[100]; //texte à coder
char *ptexte = texte;
char clef[10]; //la clé
char *pclef = clef;
char crypte[100];
char *p = crypte; //le texte crypte
char decrypte[100];
char *pdec=decrypte;
int lgtexte; //longueure du texte à crypter
int lgclef; //longueure de la clef
/* cryptage */
void cryptage(char* ptexte, char* pclef)
{
int i = 0;
do
{
int j = 0;
do
{
if (isalpha(*(ptexte + i))!= 0)
{
*(p + i) = (*(ptexte + i) + *(pclef + j) - 2 * 'a') % 26 + 'a';
i++;
j++;
}
else
{
*(p + i) = *(ptexte + i);
i++;
}
}
while (j < lgclef);
}
while (i < lgtexte);
gets("/*message crypte*/");
gets(crypte);
}
void decryptage(char* p, char* pclef)
{
int i = 0;
do
{
int j = 0;
do {
if (isalpha(*(p + i))!= 0)
{
*(pdec + i) =(*(p + i) - *(pclef + j))%26 +'a' ;
// *(pdec + i) =26+(*(p + i) - *(pclef + j)) +'a';
i++;
j++;
}
else
{
*(pdec+i)=*(p+i);
i++;
}
}
/* attention aux condition de sortie */
while (j < lgclef);
}
while (i < lgtexte);
gets("/*message decrypte*/");
gets(decrypte);
//fonction de majuscules de chaine
char upcase(char* ptexte)
{
if ((texte[i]>=97)&&(texte[i]<=122))
return texte[i]-32;
switch(texte[i])
{
case 'à':return 'A';
case 'â':return 'A';
case 'ä':return 'A';
case 'é':return 'E';
case 'è':return 'E';
case 'ê':return 'E';
case 'ë':return 'E';
case 'ì':return 'I';
case 'î':return 'I';
case 'ï':return 'I';
case 'ô':return 'O';
case 'ö':return 'O';
case 'ò':return 'O';
case 'ù':return 'U';
case 'ü':return 'U';
case 'ç':return 'C'
case 'ñ':return 'N';
default: return texte[i];
}
}
char * upcase_string(char *p)
{
int l=strlen(chaine),i;
char * chaine2=(char*)malloc((l)*sizeof(char));
for(i=0; i<l; i++)
chaine2[i]=upcase(chaine[i]);
return chaine2;
}
// foction qui renvoie la position de c dans chaine. -1 si inexistant //
pos(char c,char *p)
{
int i=0,l=strlen(chaine);
mots=0;
for(i=0,i<l,i++)
for(j=0,j<l,j++)
if(c==chaine[i])
{k=i}
while ((c!=chaine[i]) && (i<l))
if(chaine[i]==' ')
{mots =mots+1}
i++;
if (i==l) return ('la lettre est introuvable')
else prinf(%d éme lettre du %d ème mot de la 1ère phrase du message en clair',i,k)
}
//fonction de lecture de chaine de caractère dans un fichier 'nom_fichier'
char * lecture(char *f1)
{
FILE *f1=fopen(f1,"r");
if (fichier==NULL) return "\0";
int i=0;
char *texte=(char*)calloc(lgtexte,sizeof(char));
while ((i<lgtexte) && (fread(&chaine[i],1,sizeof(char),f1)))
i++;
fclose(fichier);
return texte;
}
//procédure d'écriture d'une chaine dans un fichier
void enregistrer(char *texte, char *f1)
{
FILE *fichier=fopen(FILE,"w");
if (f1==NULL)
{
printf("nom de fichier de sortie invalide");
}
fwrite(texte,sizeof(char), strlen(texte),f1);
fclose(f1);
return;
}
int main()
{
FILE *f1
f1=fopen("C:\\file.txt","r");
if (f1==NULL)
{
printf("L'ouverture a échouée f1\n");
exit(1);
}
else
{
printf("f1 opened\n");
}
printf("+++taper le texte à coder+++ \n");
gets(texte);
fwrite(texte,sizeof(texte),1,f1)
lgtexte = strlen(texte);
printf("+++taper la clef+++ \n");
gets(clef);
fwrite(clef,sizeof(clef),1,f1)
lgclef = strlen(clef);
cryptage(ptexte, pclef);
decryptage(p, pclef);
fclose(f1);
}
voici mon programme de chifre de vigenere en langage c aidez moi à detecter l 'erreur et merci d'avance
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
//char *alphabet = "abcdefghijklmnopqrstuvwxyz";
char texte[100]; //texte à coder
char *ptexte = texte;
char clef[10]; //la clé
char *pclef = clef;
char crypte[100];
char *p = crypte; //le texte crypte
char decrypte[100];
char *pdec=decrypte;
int lgtexte; //longueure du texte à crypter
int lgclef; //longueure de la clef
/* cryptage */
void cryptage(char* ptexte, char* pclef)
{
int i = 0;
do
{
int j = 0;
do
{
if (isalpha(*(ptexte + i))!= 0)
{
*(p + i) = (*(ptexte + i) + *(pclef + j) - 2 * 'a') % 26 + 'a';
i++;
j++;
}
else
{
*(p + i) = *(ptexte + i);
i++;
}
}
while (j < lgclef);
}
while (i < lgtexte);
gets("/*message crypte*/");
gets(crypte);
}
void decryptage(char* p, char* pclef)
{
int i = 0;
do
{
int j = 0;
do {
if (isalpha(*(p + i))!= 0)
{
*(pdec + i) =(*(p + i) - *(pclef + j))%26 +'a' ;
// *(pdec + i) =26+(*(p + i) - *(pclef + j)) +'a';
i++;
j++;
}
else
{
*(pdec+i)=*(p+i);
i++;
}
}
/* attention aux condition de sortie */
while (j < lgclef);
}
while (i < lgtexte);
gets("/*message decrypte*/");
gets(decrypte);
//fonction de majuscules de chaine
char upcase(char* ptexte)
{
if ((texte[i]>=97)&&(texte[i]<=122))
return texte[i]-32;
switch(texte[i])
{
case 'à':return 'A';
case 'â':return 'A';
case 'ä':return 'A';
case 'é':return 'E';
case 'è':return 'E';
case 'ê':return 'E';
case 'ë':return 'E';
case 'ì':return 'I';
case 'î':return 'I';
case 'ï':return 'I';
case 'ô':return 'O';
case 'ö':return 'O';
case 'ò':return 'O';
case 'ù':return 'U';
case 'ü':return 'U';
case 'ç':return 'C'
case 'ñ':return 'N';
default: return texte[i];
}
}
char * upcase_string(char *p)
{
int l=strlen(chaine),i;
char * chaine2=(char*)malloc((l)*sizeof(char));
for(i=0; i<l; i++)
chaine2[i]=upcase(chaine[i]);
return chaine2;
}
// foction qui renvoie la position de c dans chaine. -1 si inexistant //
pos(char c,char *p)
{
int i=0,l=strlen(chaine);
mots=0;
for(i=0,i<l,i++)
for(j=0,j<l,j++)
if(c==chaine[i])
{k=i}
while ((c!=chaine[i]) && (i<l))
if(chaine[i]==' ')
{mots =mots+1}
i++;
if (i==l) return ('la lettre est introuvable')
else prinf(%d éme lettre du %d ème mot de la 1ère phrase du message en clair',i,k)
}
//fonction de lecture de chaine de caractère dans un fichier 'nom_fichier'
char * lecture(char *f1)
{
FILE *f1=fopen(f1,"r");
if (fichier==NULL) return "\0";
int i=0;
char *texte=(char*)calloc(lgtexte,sizeof(char));
while ((i<lgtexte) && (fread(&chaine[i],1,sizeof(char),f1)))
i++;
fclose(fichier);
return texte;
}
//procédure d'écriture d'une chaine dans un fichier
void enregistrer(char *texte, char *f1)
{
FILE *fichier=fopen(FILE,"w");
if (f1==NULL)
{
printf("nom de fichier de sortie invalide");
}
fwrite(texte,sizeof(char), strlen(texte),f1);
fclose(f1);
return;
}
int main()
{
FILE *f1
f1=fopen("C:\\file.txt","r");
if (f1==NULL)
{
printf("L'ouverture a échouée f1\n");
exit(1);
}
else
{
printf("f1 opened\n");
}
printf("+++taper le texte à coder+++ \n");
gets(texte);
fwrite(texte,sizeof(texte),1,f1)
lgtexte = strlen(texte);
printf("+++taper la clef+++ \n");
gets(clef);
fwrite(clef,sizeof(clef),1,f1)
lgclef = strlen(clef);
cryptage(ptexte, pclef);
decryptage(p, pclef);
fclose(f1);
}
A voir également:
- Aidez moi à detecter l 'erreur
- Comment détecter un traceur sur téléphone - Accueil - Confidentialité
- Détecter clé usb - Guide
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Erreur t32 ✓ - Forum Livebox
- Une erreur s'est produite instagram ✓ - Forum Instagram
1 réponse
Bonjour,
Correction des fonctions avec le filtrage des caractères et mise en majuscules + suppression de toutes les variables globales et modifications qui vont avec, pas touché aux fonction pour l'enregistrement et la lecture dans un fichier alors à vous de les refaire à partir de ça:
Correction des fonctions avec le filtrage des caractères et mise en majuscules + suppression de toutes les variables globales et modifications qui vont avec, pas touché aux fonction pour l'enregistrement et la lecture dans un fichier alors à vous de les refaire à partir de ça:
#include<stdio.h>
#include<string.h>
/* cryptage */
char *cryptage(char *destination,char* ptexte, char* pclef)
{
int i = 0,lgclef=strlen(pclef),lgtexte=strlen(ptexte);
do
{
int j = 0;
do
{
if (isalpha(*(ptexte + i))!= 0)
{
*(destination + i) = (*(ptexte + i) + *(pclef + j) - 2 * 'A') % 26 + 'A';
i++;
j++;
}
else
{
*(destination + i) = *(ptexte + i);
i++;
}
}
while (j < lgclef);
}
while (i < lgtexte);
return destination;
}
char *decryptage(char *destination,char* p, char* pclef)
{
int i = 0,lgclef=strlen(pclef),lgtexte=strlen(p);
do
{
int j = 0;
do {
if (isalpha(*(p + i))!= 0)
{
*(destination + i) = (*(p + i) - *(pclef + j))%26 +'A' ;
i++;
j++;
}
else
{
*(destination + i) = *(p+i);
i++;
}
}
while (j < lgclef);
}
while (i < lgtexte);
}
//fonction de majuscules de chaine
char upcase(char c)
{
if ((c>=97)&&(c<=122))
return c-32;
switch(c)
{
case 'à':return 'A';
case 'â':return 'A';
case 'ä':return 'A';
case 'ã':return 'A';
case 'é':return 'E';
case 'è':return 'E';
case 'ê':return 'E';
case 'ë':return 'E';
case 'ì':return 'I';
case 'î':return 'I';
case 'ï':return 'I';
case 'ô':return 'O';
case 'ö':return 'O';
case 'ò':return 'O';
case 'õ':return 'O';
case 'ù':return 'U';
case 'ü':return 'U';
case 'û':return 'U';
case 'ç':return 'C';
case 'ñ':return 'N';
default: return c;
}
}
char * upcase_string(char *chaine)
{
int i,l=strlen(chaine);
for(i=0; i<l; i++)
chaine[i]=upcase(chaine[i]);
return chaine;
}
int main()
{
char textecrypte[256],textedecrypte[256],texte[256],cle[10];
printf("+++taper le texte à coder : ");
gets(texte);
printf("+++taper la clef : ");
gets(cle);
printf("+++Texte : %s\n+++Cle : %s\n",
upcase_string(texte),upcase_string(cle));
cryptage(textecrypte,texte,cle);
printf("\nle texte crypte : %s\n",textecrypte);
decryptage(textedecrypte,textecrypte,cle);
printf("le texte decrypte : %s\n",textedecrypte);
}