Article View: fr.comp.lang.c
Article #15465Re: conjugaison et autres exos sur les chaines [Was : Un système de conj...]
From: Pierre Maurette
Date: Wed, 21 Sep 2005 19:31
Date: Wed, 21 Sep 2005 19:31
81 lines
4389 bytes
4389 bytes
candide, le 21/09/2005, a �crit :
> "Emmanuel Delahaye" <emdel@YOURBRAnoos.fr> wrote in
> news:mn.94c47d590202e83a.15512@YOURBRAnoos.fr:
>
>>
>>> $ carre 7
>>> 49
>>
>> Evidemment, si la chaine repr�sente une valeur num�rique, elle sera
>> convertie en binaire par la fonction ad�quate (sscanf(), strtoul()
>> etc.)
>>
>
> mais pour un entier (<> flottant) on peut faire comme suit, non ?
>
> /*------------- icarre.c -------------------------*/
> #include <stdio.h>
> #include <string.h>
>
> int main (int argc, char *argv[])
> {
> int entier;
>
> if (argc !=2) return;
> sscanf(argv[1],"%d",&entier);
> printf("%d\n",entier*entier);
> return(0);
> }
> /*-----------------------------------------------*/
>
>> icarre 32
> 1024
Il est d'usage d'utiliser une fonction usage() qui affiche la syntaxe
de la ligne de commande en cas de mauvais arguments. �a permet
d'ailleurs de clarifier pour soi-m�me ce qu'on attend de ces
param�tres, ce qu'on accepte, ce qqu'on modifie par une valeur par
d�faut, et ce qu'on refuse.
De plus, il faut un minimum de contr�le, particuli�rment � ce niveau,
puisque n'importe quoi peut arriver par la ligne de commande. Si
j'�cris une fonction appel�e exclusivement par du code que je ma�trise,
je pense qu'on peut ne pas multiplier les contr�les, quitte � noter en
commentaire ce qu'on suppose vrai. Pour r�pondre � l'argument habituel
de la r�utilisation de la fonction six mois plus tard. Mais ici, c'est
diff�rent.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <inttypes.h>
void usage(void)
{
puts("Syntaxe: icarre valeur (repr�sentant un entier)\nMais Auchan
vend des trucs qui le font\npour moins d'un euro, et sans
ordinateur.");
exit(EXIT_SUCCESS);
}
int main(int argc, char * argv[])
{
uintmax_t entier;
char * pvaleur = NULL;
const uintmax_t borne = sqrtl((long double)UINTMAX_MAX);
if(argc != 2) usage();
pvaleur = argv[1];
while(pvaleur[0] == '-' || isspace(pvaleur[0])) pvaleur++;
entier = strtoumax(pvaleur, NULL, 0);
if(errno || (entier > borne))
puts("Oh my God, c'est h�naurme !");
else
printf("%" PRIuMAX "\n", entier * entier);
return EXIT_SUCCESS;
}
--
Pierre Maurette
Technical Details
Message-ID:
<mn.ad0b7d59687aaf3b.31483@laposte.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!proxad.net!infeed-3.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> <mn.837a7d59123d924a.15512@YOURBRAnoos.fr> <432adddf$0$17220$8fcfb975@news.wanadoo.fr> <mn.84407d597cfa6e6e.15512@YOURBRAnoos.fr> <432b2a92$0$7861$8fcfb975@news.wanadoo.fr> <432c19e0$0$1710$8fcfb975@news.wanadoo.fr> <432cad90$0$27422$8fcfb975@news.wanadoo.fr> <432d1b7c$0$1743$8fcfb975@news.wanadoo.fr> <432d3117$0$1742$8fcfb975@news.wanadoo.fr> <mn.93877d590449a7bc.15512@YOURBRAnoos.fr> <432d7667$0$17248$8fcfb975@news.wanadoo.fr> <mn.94047d599f0cc076.15512@YOURBRAnoos.fr> <432da70c$0$1735$8fcfb975@news.wanadoo.fr> <mn.94c47d590202e83a.15512@YOURBRAnoos.fr> <43315679$0$27421$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!news4.google.com!news.glorb.com!proxad.net!infeed-3.proxad.net!news18-e.free.fr!not-for-mail
Subject: Re: conjugaison et autres exos sur les chaines [Was : Un système de conj...]
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> <mn.837a7d59123d924a.15512@YOURBRAnoos.fr> <432adddf$0$17220$8fcfb975@news.wanadoo.fr> <mn.84407d597cfa6e6e.15512@YOURBRAnoos.fr> <432b2a92$0$7861$8fcfb975@news.wanadoo.fr> <432c19e0$0$1710$8fcfb975@news.wanadoo.fr> <432cad90$0$27422$8fcfb975@news.wanadoo.fr> <432d1b7c$0$1743$8fcfb975@news.wanadoo.fr> <432d3117$0$1742$8fcfb975@news.wanadoo.fr> <mn.93877d590449a7bc.15512@YOURBRAnoos.fr> <432d7667$0$17248$8fcfb975@news.wanadoo.fr> <mn.94047d599f0cc076.15512@YOURBRAnoos.fr> <432da70c$0$1735$8fcfb975@news.wanadoo.fr> <mn.94c47d590202e83a.15512@YOURBRAnoos.fr> <43315679$0$27421$8fcfb975@news.wanadoo.fr>
Newsgroups: fr.comp.lang.c
Message-ID: <mn.ad0b7d59687aaf3b.31483@laposte.net>
X-Newsreader: MesNews/1.04.00.00
Date: Wed, 21 Sep 2005 21:31:45 +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 0538-6, 21/09/2005), Outbound message
X-Antivirus-Status: Clean
Lines: 83
Organization: Guest of ProXad - France
NNTP-Posting-Date: 21 Sep 2005 21:30:26 MEST
NNTP-Posting-Host: 84.7.249.19
X-Trace: 1127331026 news18-e.free.fr 4344 84.7.249.19:2726
X-Complaints-To: abuse@proxad.net