par contre, faut le compiler tout seul, je ne peux pas le faire pour toi.
tu le mets dans un fichier hazard.c
et puis
gcc -o hazard.exe hazard.c
AG, dépanneur.
Brat'ac
Sébastien WILLEMIJNS a couché sur son écran :
hello,
je recherche un programme DOS en ligne de comande qui donne un nombre (si possible) entier au pif entre X et Y style
C:>number 16 32 18
Bonjour Dans une fenêtre de commandes ( cmd de XP ou W2K mais pas sous win9X) le batch suivant permet de trouver un nombre aléatoire entre deux bornes Le seul problème c'est que plus l'écart entre les deux nombres est réduit plus c'est long voir très long si écart réduit au max. ça doit être améliorable.
--------------------- copie on -------------------------- @echo off set ale IF (%1)==() GOTO USAGE IF (%2)==() GOTO USAGE :: ------------------------ :debut set /A ale=%random% if /I %2 LEQ %ale% goto debut if /I %1 GEQ %ale% goto debut goto FIN :USAGE echo Entrez deux valeurs de 0 a 32767 separées par un espace echo le premier doit etre inferieur au deuxieme echo EX: nom-du-batch 45 245 :FIN echo La valeur final du nombre est : %ale% --------------------------- copie off ------------------ GS
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Sébastien WILLEMIJNS a couché sur son écran :
hello,
je recherche un programme DOS en ligne de comande qui donne un nombre
(si possible) entier au pif entre X et Y style
C:>number 16 32
18
Bonjour
Dans une fenêtre de commandes ( cmd de XP ou W2K mais pas sous win9X)
le batch suivant permet de trouver un nombre aléatoire entre deux bornes
Le seul problème c'est que plus l'écart entre les deux nombres est réduit plus c'est
long voir très long si écart réduit au max.
ça doit être améliorable.
--------------------- copie on --------------------------
@echo off
set ale IF (%1)==() GOTO USAGE
IF (%2)==() GOTO USAGE
:: ------------------------
:debut
set /A ale=%random%
if /I %2 LEQ %ale% goto debut
if /I %1 GEQ %ale% goto debut
goto FIN
:USAGE
echo Entrez deux valeurs de 0 a 32767 separées par un espace
echo le premier doit etre inferieur au deuxieme
echo EX: nom-du-batch 45 245
:FIN
echo La valeur final du nombre est : %ale%
--------------------------- copie off ------------------
GS
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
je recherche un programme DOS en ligne de comande qui donne un nombre (si possible) entier au pif entre X et Y style
C:>number 16 32 18
Bonjour Dans une fenêtre de commandes ( cmd de XP ou W2K mais pas sous win9X) le batch suivant permet de trouver un nombre aléatoire entre deux bornes Le seul problème c'est que plus l'écart entre les deux nombres est réduit plus c'est long voir très long si écart réduit au max. ça doit être améliorable.
--------------------- copie on -------------------------- @echo off set ale IF (%1)==() GOTO USAGE IF (%2)==() GOTO USAGE :: ------------------------ :debut set /A ale=%random% if /I %2 LEQ %ale% goto debut if /I %1 GEQ %ale% goto debut goto FIN :USAGE echo Entrez deux valeurs de 0 a 32767 separées par un espace echo le premier doit etre inferieur au deuxieme echo EX: nom-du-batch 45 245 :FIN echo La valeur final du nombre est : %ale% --------------------------- copie off ------------------ GS
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
merci de ton petit programme mais il crash avec le gcc de cygwin je suis a l'instant en train de recuperer la 4.01 de GCC puis j'irais me battre avec les bz2 pour essayer de recuperer les binaires compilés :)
merci de ton petit programme mais il crash avec le gcc de cygwin
je suis a l'instant en train de recuperer la 4.01 de GCC puis j'irais
me battre avec les bz2 pour essayer de recuperer les binaires compilés
:)
merci de ton petit programme mais il crash avec le gcc de cygwin je suis a l'instant en train de recuperer la 4.01 de GCC puis j'irais me battre avec les bz2 pour essayer de recuperer les binaires compilés :)
merci de ton petit programme mais il crash avec le gcc de cygwin ? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
faut un compilo msdos. Tu ne pourras pas le faire marcher sous dos si tu compiles avec cygwin. Et encore, quand tu parles de msdos, tu veux dire une fenêtre dos, ou bien le vrai systeme d'exploitation ? Parce que si en fait c'est juste une "fenetre dos", et que t'es sous Windows, faut un compilo windows.
AG, dubitatif.
Sébastien WILLEMIJNS wrote:
On Thu, 21 Jul 2005 10:49:59 +0200, AG <ag@tb.fr> wrote:
merci de ton petit programme mais il crash avec le gcc de cygwin
? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
faut un compilo msdos. Tu ne pourras pas le faire marcher sous dos si tu
compiles avec cygwin. Et encore, quand tu parles de msdos, tu veux dire
une fenêtre dos, ou bien le vrai systeme d'exploitation ? Parce que si
en fait c'est juste une "fenetre dos", et que t'es sous Windows, faut un
compilo windows.
merci de ton petit programme mais il crash avec le gcc de cygwin ? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
faut un compilo msdos. Tu ne pourras pas le faire marcher sous dos si tu compiles avec cygwin. Et encore, quand tu parles de msdos, tu veux dire une fenêtre dos, ou bien le vrai systeme d'exploitation ? Parce que si en fait c'est juste une "fenetre dos", et que t'es sous Windows, faut un compilo windows.
AG, dubitatif.
Eric Lévénez
Le 21/07/05 10:49, dans <42df5f16$0$22531$, « AG » a écrit :
int main(int argc, char * argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans les choux.
int c = a>b ? a:b; int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire la machine. De plus même si les paramètres sont mauvais ont continue, ce qui n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être affiché sur la console (en fait il le sera car on a un printf plus loin dans le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer des milliers de fois un programme dans la même seconde et donc time a des chances d'être identique à chaque fois. Le générateur de nombre donnera toujours la même séquence si on s'en sert pour par exemple emplir un fichier de nombres. Il faudrait introduire une notion de numéro de processus (ça existe sous DOS ?) dans le calcul.
Un truc étonnant avec mon GCC 4 est que la ligne du dessus retourne toujours la même valeur. Par contre si juste après la ligne srand je rajoute un appel a un rand(), le printf marche bien. Là je ne comprends pas.
return 0; }
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 21/07/05 10:49, dans <42df5f16$0$22531$636a15ce@news.free.fr>, « AG »
<ag@tb.fr> a écrit :
int main(int argc, char * argv[])
{
int a = atoi(argv[1]);
int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument
il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans
les choux.
int c = a>b ? a:b;
int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire
la machine. De plus même si les paramètres sont mauvais ont continue, ce qui
n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être
affiché sur la console (en fait il le sera car on a un printf plus loin dans
le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer
des milliers de fois un programme dans la même seconde et donc time a des
chances d'être identique à chaque fois. Le générateur de nombre donnera
toujours la même séquence si on s'en sert pour par exemple emplir un fichier
de nombres. Il faudrait introduire une notion de numéro de processus (ça
existe sous DOS ?) dans le calcul.
Un truc étonnant avec mon GCC 4 est que la ligne du dessus retourne toujours
la même valeur. Par contre si juste après la ligne srand je rajoute un
appel a un rand(), le printf marche bien. Là je ne comprends pas.
return 0;
}
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
int main(int argc, char * argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans les choux.
int c = a>b ? a:b; int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire la machine. De plus même si les paramètres sont mauvais ont continue, ce qui n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être affiché sur la console (en fait il le sera car on a un printf plus loin dans le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer des milliers de fois un programme dans la même seconde et donc time a des chances d'être identique à chaque fois. Le générateur de nombre donnera toujours la même séquence si on s'en sert pour par exemple emplir un fichier de nombres. Il faudrait introduire une notion de numéro de processus (ça existe sous DOS ?) dans le calcul.
Un truc étonnant avec mon GCC 4 est que la ligne du dessus retourne toujours la même valeur. Par contre si juste après la ligne srand je rajoute un appel a un rand(), le printf marche bien. Là je ne comprends pas.
return 0; }
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Sébastien WILLEMIJNS
On Thu, 21 Jul 2005 17:51:45 +0200, AG wrote:
merci de ton petit programme mais il crash avec le gcc de cygwin
? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
sous une fenetre DOS ca me suffit ;)
oups, il crashe quand aucun argument n'est mis apres la ligne de commande... sinon oui il marche... merci.
-- Sébastien WILLEMIJNS, France www.willemijns.com www.nntpeng.willemijns.com (FAQ about open NNTP servers)
On Thu, 21 Jul 2005 17:51:45 +0200, AG <ag@tb.fr> wrote:
merci de ton petit programme mais il crash avec le gcc de cygwin
? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
sous une fenetre DOS ca me suffit ;)
oups, il crashe quand aucun argument n'est mis apres la ligne de
commande... sinon oui il marche... merci.
--
Sébastien WILLEMIJNS, France
www.willemijns.com
www.nntpeng.willemijns.com (FAQ about open NNTP servers)
merci de ton petit programme mais il crash avec le gcc de cygwin
? pas chez moi en tout cas. Si tu veux le faire marcher sous dos, il te
sous une fenetre DOS ca me suffit ;)
oups, il crashe quand aucun argument n'est mis apres la ligne de commande... sinon oui il marche... merci.
-- Sébastien WILLEMIJNS, France www.willemijns.com www.nntpeng.willemijns.com (FAQ about open NNTP servers)
Sébastien WILLEMIJNS
On Thu, 21 Jul 2005 18:14:46 +0200, Eric Lévénez wrote:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char * argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans les choux.
c exact sans argument il crashe...
int c = a>b ? a:b; int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire la machine. De plus même si les paramètres sont mauvais ont continue, ce qui n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être affiché sur la console (en fait il le sera car on a un printf plus loin dans le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer des milliers de fois un programme dans la même seconde et donc time a des chances d'être identique à chaque fois. Le générateur de nombre donnera toujours la même séquence si on s'en sert pour par exemple emplir un fichier de nombres. Il faudrait introduire une notion de numéro de processus (ça existe sous DOS ?) dans le calcul.
je l'ai fait bouclé "a fond" et c'est exact... mais cela me suffit...
-- Sébastien WILLEMIJNS, France www.willemijns.com www.nntpeng.willemijns.com (FAQ about open NNTP servers)
On Thu, 21 Jul 2005 18:14:46 +0200, Eric Lévénez <eric@levenez.com>
wrote:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char * argv[])
{
int a = atoi(argv[1]);
int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument
il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans
les choux.
c exact sans argument il crashe...
int c = a>b ? a:b;
int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire
la machine. De plus même si les paramètres sont mauvais ont continue, ce qui
n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être
affiché sur la console (en fait il le sera car on a un printf plus loin dans
le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer
des milliers de fois un programme dans la même seconde et donc time a des
chances d'être identique à chaque fois. Le générateur de nombre donnera
toujours la même séquence si on s'en sert pour par exemple emplir un fichier
de nombres. Il faudrait introduire une notion de numéro de processus (ça
existe sous DOS ?) dans le calcul.
je l'ai fait bouclé "a fond" et c'est exact... mais cela me suffit...
On Thu, 21 Jul 2005 18:14:46 +0200, Eric Lévénez wrote:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char * argv[]) { int a = atoi(argv[1]); int b = atoi(argv[2]);
Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument il y a des chances que argv[1] soit à NULL, et donc le atoi va partir dans les choux.
c exact sans argument il crashe...
int c = a>b ? a:b; int d = a<b ? a:b;
if(argc!=3) printf("usage : hazard.exe n1 n2");
Là argc est testé, mais trop tard car on a déjà planter le programme voire la machine. De plus même si les paramètres sont mauvais ont continue, ce qui n'est pas bien. En enfin il n'y a pas de n, et le message peut ne pas être affiché sur la console (en fait il le sera car on a un printf plus loin dans le code avec le n final.
srand(time(NULL));
C'est bien le time(), mais hélas avec les machines actuelles on peut lancer des milliers de fois un programme dans la même seconde et donc time a des chances d'être identique à chaque fois. Le générateur de nombre donnera toujours la même séquence si on s'en sert pour par exemple emplir un fichier de nombres. Il faudrait introduire une notion de numéro de processus (ça existe sous DOS ?) dans le calcul.
je l'ai fait bouclé "a fond" et c'est exact... mais cela me suffit...