Article View: fr.comp.lang.c
Article #15236Re: rot13 [Was : Re: conjugaison et autres ...]
From: Pierre Maurette
Date: Sun, 02 Oct 2005 20:31
Date: Sun, 02 Oct 2005 20:31
73 lines
3901 bytes
3901 bytes
candide, le 02/10/2005, a �crit :
> "Emmanuel Delahaye" <emdel@YOURBRAnoos.fr> wrote in
> news:mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr:
>
>
>> Lid�e est de cr�er 2 tables avec tous les caract�res (A-Z) et (a-z),
>> et de chercher dedans la position 'i' du caract�re avec strchr().
>> Ensuite, on va chercher le caract�re � (i + 13) % 26...
>>
>> Pour chercher dans la bonne table, on utilise les filtres isprint(),
>> isnum(), ispunct(), isupper() (<ctype.h>) etc. Jamais la valeur des
>> caract�res.
>>
>
> Chaud / froid ?
[snip le code]
> /*----------------------------------------------------------*/
Correct, il me semble.
Les tableaux augment�s de 13 �l�ments constituent une solution
astucieuse voire �l�gante.
Mon petit doigt me dit que vous l'avez peut-�tre adopt�e en raison de
la difficult� d'appliquer le modulo %26 � un pointeur.
L'arithm�tique des pointeurs est tr�s logique, est possible tout ce qui
a du sens, et rien d'autre. On ne pourra pas additionner deux
pointeurs, en revanche la diff�rence entre eux a un sens, celui d'un
offset. Cette op�ration renvoie donc non pas un pointeur, mais un
size_t, c'est � dire un type entier pouvant �tre un indice de tableau,
ou la taille d'une zone.
Je vous propose donc une solution qui colle � l'algorithme, mais qui ne
pr�tend pas invalider la votre.
Le code dans le if est correctement d�compos� et lisible, celui dans
les else est caca (si je mets des {} dans le if, je dois en mettre dans
les else).
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
char minus[]="abcdefghijklmnopqrstuvwxyz";
char majus[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char phrase[200]="Preface : The computing world has undergone a
revolution since the publication of \"The C Programming Language\" in
1978.";
int i=0;
size_t pos;
while (phrase[i]!='\0')
{
if (islower(phrase[i]))
{
pos = strchr(minus,phrase[i]) - minus;
pos = (pos + 13) % 26;
putchar(minus[pos]);
}
else if (isupper(phrase[i]))
putchar(majus[(strchr(majus,phrase[i]) - majus + 13) % 26]);
else
putchar(phrase[i]);
i++;
}
putchar('\n');
return 0;
}
--
Pierre Maurette
Technical Details
Message-ID:
<mn.15477d5ad6837d6d.31483@laposte.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!infeed-2.proxad.net!news18-e.free.fr!not-for-mailReferences:
<1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43402c57$0$1702$8fcfb975@news.wanadoo.fr>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,b21b26167a936e28
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!infeed-2.proxad.net!news18-e.free.fr!not-for-mail
Subject: Re: rot13 [Was : Re: conjugaison et autres ...]
From: "Pierre Maurette" <maurettepierre@wanadoo.fr>
References: <1126342327.583568.21420@g43g2000cwa.googlegroups.com> <4329e5d4$0$7846$8fcfb975@news.wanadoo.fr> <dge4b6$fqa$1@reader1.imaginet.fr> <432ab809$0$1734$8fcfb975@news.wanadoo.fr> <mn.84b07d59016a857b.31483@laposte.net> <433f16ac$0$27406$8fcfb975@news.wanadoo.fr> <mn.10907d5a55119e84.15512@YOURBRAnoos.fr> <433f9cb1$0$7821$8fcfb975@news.wanadoo.fr> <mn.128c7d5aa5238de0.15512@YOURBRAnoos.fr> <43402c57$0$1702$8fcfb975@news.wanadoo.fr>
Newsgroups: fr.comp.lang.c
Message-ID: <mn.15477d5ad6837d6d.31483@laposte.net>
X-Newsreader: MesNews/1.04.00.00
Date: Sun, 02 Oct 2005 22:31:32 +0200
MIME-Version: 1.0
X-Face: cmi$3R1_J{[}5K|8d'LDiJ$SsZ*gn,j*PhJ#KVGt+45,E_N9O}GrhhQ>fb&q<&lz=g%PEv' u"m)N|KrBMux?2:E?N7Uw3L#H>L#GwM}<qH-?#_Y$B9]$q1"~iUGtN#HVy?}7.`m&iKF>gY:.`W.qu z`1'W'h-AXPmB]#7~<+@H.<0M`-jBkCWbmkcT_*LBVD3|p1a?h1H;cHq{$-vbeP@Hdcqp5z~lwU7ZK `~
Reply-To: maurettepierre@wanadoo.fr
Content-Type: text/plain; charset="iso-8859-15"; format=flowed
Content-Transfer-Encoding: 8bit
X-Antivirus: avast! (VPS 0539-4, 02/10/2005), Outbound message
X-Antivirus-Status: Clean
Lines: 75
Organization: Guest of ProXad - France
NNTP-Posting-Date: 02 Oct 2005 22:29:51 MEST
NNTP-Posting-Host: 84.7.239.93
X-Trace: 1128284991 news18-e.free.fr 4712 84.7.239.93:1546
X-Complaints-To: abuse@proxad.net