begin process at 2012 05 29 22:33:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

probléme de test de carractére


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probléme de test de carractére

dimanche 18 mai 2008 à 21:42:13 | probléme de test de carractére

dgac

Bonjour,
Je dois réaliser un programme réalisant les contraintes suivantes :
Algorithme:


L'algorithme proposé utilise une matrice 6x6, identique au codage et au
décodage. Elle contient 36 caractères : les lettres de A à Z, les chiffres
de 1 à 9 et l'espace. Le chiffre zéro est représenté par la lettre O.

ABCDEF
GHIJKL
MNOPQR
STUVWX
YZ 123
456789

La clef de chiffrement associée à cette matrice est la concaténation de ses
lignes :

"ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789"

Le message est chiffré par bigrammes, i.e. par groupe de 2 caractères
successifs. Le chiffrement obéit aux règles suivantes :

- Si les deux caractères du bigramme représentent deux coins d'un rectangle
dans la matrice (c'est à dire sont sur 2 lignes et colonnes différentes),
on les code par les deux coins restants, dans le sens direct.
Ainsi, avec la matrice ci-dessus:

VI --> JU
IV --> UJ
W3 --> 2X

- Si les deux caractères sont sur la même ligne, on prend leurs deux voisins de
droite, modulo la largeur de la ligne:

EF --> FA
GJ --> HK

-Si les deux caractères sont sur la même colonne, on prend les deux voisins du
dessous, modulo la hauteur de la colonne:

Y4 --> 4A
KW --> Q2

- Si les deux caractères sont identiques ou si le bigramme ne contient plus
qu'un seul caratère (message de longueur impaire), on ne code tout simplement
pas le bigramme.


Interface:

Le programme doit pouvoir s'appeller en ligne de commande, avec comme
arguments l'options -C pour coder ou -D pour décoder, la matrice de codage
mise sous la forme d'une chaîne de 36 caractères, et enfin la chaîne à coder
entre guillemets. Le résultat est afficher sur la sortie standard.

Exemple:

$ MC []TP7.EXE -C "ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789" "Bonjour"
NCPHU R

$ MC []TP7.EXE -D "ABCDEFGHIJKLMNOPQRSTUVWXYZ 123456789" "NCPHU R"
BONJOUR"

alors j'ai réussi a récupere ma matrice de codage que je stocke dans mon  tableau MATRICE mais je en vois absolument pas comment testé els carractére pour respecter l'algorythme ci dessu.

voici ma fonction codage pour le moment: mais je ne sait pas comment faire opur tester les lettres une par une dans la chaine de carractére, ni comment les tester pour obtenir la fonction de codage souhaitée:

int codage(char matrice[TAILLE_MATRICE][TAILLE_MATRICE],char *argv[])
{   int nb;

    nb=strlen(argv[3]);
    while(nb>=0)
    {
                nb=nb-2;// test si nombre multiple de 2 ou pas
    }
    switch(nb)
    {case -2: printf("chaine pair");
          break;
    case -1:
         printf("chaine impair");
         break;
    }
    return 0;
}

Toute aide sera la bienvenue parceque la je galére trop ...Merci d'avance
dimanche 18 mai 2008 à 22:39:09 | Re : probléme de test de carractére

Neo_Fr

Membre Club
Pas besoin d'une boucle pour savoir si un nombre est pair suffit de tester la valeur du deuxieme bit:
BOOL bPair = FALSE;
if(nb & 2) bPair = TRUE;

Neo_Fr
dimanche 18 mai 2008 à 23:07:03 | Re : probléme de test de carractére

jfrancois

Bonsoir,

1) C'est le premier bit (poids faible) qui correspond aux unités donc à la parité et si il est positionné alors c'est impair !
BOOL bPair = TRUE;
if (nb & 1) bPair = FALSE;

2) Ici ce n'est pas la parité de la longueur qui est cherchée mais si la longueur est multiple de 2. Il suffit de faire un modulo 2 de cette longueur (modulo = reste de la division entière). Si le résultat est 0 alors c'est un multiple de 2 :

nb = strlen(argv[3]);
if (nb % 2 == 0)
   printf("Chaîne de longeur paire\n");
else
   printf("Chaîne de longueur impaire\n");

ou en plus condensé :

nb = strlen(argv[3]);
printf("Chaîne de longueur %s\n",nb % 2 ? "impaire" : "paire");

Jean-François

dimanche 18 mai 2008 à 23:19:05 | Re : probléme de test de carractére

dgac

merci pour ces réponses mais mon probléme reste dans le codage de mon message et non pas dans le test de la parité de ma chaine qui meme si il n'est pas optimisé fonctionne.
Merci beaucoup pour votre aide
dimanche 18 mai 2008 à 23:34:07 | Re : probléme de test de carractére

BruNews

Administrateur CodeS-SourceS
if(nb & 1) fait idem à if(nb % 2)

ciao...
BruNews, MVP VC++
dimanche 18 mai 2008 à 23:37:42 | Re : probléme de test de carractére

dgac

J'ai modifié ma fonction avec le %2 pour testé si ma chaine est pair , mais je ne comprend pas comment faire pour tester les carractére saisie 1 a 1
dimanche 18 mai 2008 à 23:54:10 | Re : probléme de test de carractére

jfrancois

if(nb & 1) fait idem à if(nb % 2)
bien sûr ! mais pas le  if(nb & 2) qui a été proposé.

Jean-François

dimanche 18 mai 2008 à 23:59:24 | Re : probléme de test de carractére

BruNews

Administrateur CodeS-SourceS
ça c'est clair et net.

ciao...
BruNews, MVP VC++
lundi 19 mai 2008 à 01:24:52 | Re : probléme de test de carractére

jfrancois

Le codage de "Bonjour" donne "NCPHU R" ou "NCHPU R" ?

Jean-François

lundi 19 mai 2008 à 01:50:05 | Re : probléme de test de carractére

dgac

NCHPU R ecusez moi pour cette erreur dans l'énoncé

1 2

Cette discussion est classée dans : codage, caractères, nb, matrice, carractére


Répondre à ce message

Sujets en rapport avec ce message

Multiplication d'une matrice par un scalaire [ par skrime ] Bonjour, j'ai un exercice à faire qui consiste à multiplier une matrice par un scalaire en C (la prof ne veut pas qu'on se serve des boucles FOR), je répétition d'allocation, désallocation de mémoire sur des matrices [ par BouiB1 ] Bonjour a tous ! pour mes cours j'ai besoin de faire un petit programme de résolution de systèmes linéaires. Le problème n'est pas dans l'lgorithme de classe matrice [ par pabreto ] bonjour!je dois écrire le matrice.c d'une classe de matrice à partir d'un matrice.h que l'on me donne et que je n'a pas le droit de modifier.voici mes delete matrice c++ [ par olfamzoughi ] bonjour Je suis débutante en c/c++. j essaye de supprimer une matrice de taille 2*Nb_pt par le code suivant: //////////////////////////////////////// Trie d'une matrice [ par Nassnoussa ] Bsr tt le monde, je suis débutante en programmation jé a programmer l'algorithme de branch and bound bon o début jé a entrer une matrice qui contient tri alphabétique ultra rapide de chaines de caractères de longueur variable [ par mslider ] -- Bonjour, je sais que c'est un forum dédié au C mais je vais parler de pascal. En effet je connais bien ce langage et je l'ai utilisé pour trier a OpenGL (glut) & rafraichissement par rapport à un array [ par BirD ] Hello tout le monde, Je débute avec Glut et j'ai une petite question concernant le rafraichissement d'une animation. J'ai fait un petit algo de perc résoudre formule (a+b)^n à l'aide de la formule du binôme de Newton [ par sixiko ] Bonjour, Je dois réaliser dans l'urgence un programme sous dev++ permettant d'initialiser et créer une matrice pour gérer jusqu'à n=10 selon la formu besoin d'aide pour résoudre un exercice de matrice en C [ par saharawolf ] voila, bonjour tous le monde, j'ai besoin d'aide pour résoudre une problème de maths avec le langage C. je ne sais vraiment pas comment m'y prendre, d Manipuler des caracteres un par un avec la fonction read... [ par ROW_PyRo ] Bonjour, Je suis actuellement sur un projet, BSQ. [quote] Il s'agit de trouver le plus grand carré possible sur un plateau en évitant des obstacles.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales