[C] Nombre aléatoires

Fermé
Niklas - 24 mai 2006 à 08:48
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 26 mai 2006 à 09:54
Bonjour,

j'aurais besoin d'aide pour coder une fonction qui fasse ceci.

Cette fonction doit donner 3 nombres aléatoires compris entre 0 et 100 puis mettre les nombres sortis dans une chaine de caractères séparés par des virgules.
La fonction renverra la chaine crée.

Par exemple :
si on a comme chiffre : 3 7 78
La chaine crée devra être chaine = "3,7,78"

Merci d'avance

2 réponses

kurushi Messages postés 16 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 5 mars 2007 20
26 mai 2006 à 00:43
Bonsoir niklas!

je viens t'apporter ta solution!!!!!
j'ai développé une fonction répondant à tes besoins!

Cependant, on pourait l'améliorer comme la paramétrer avec le nombre de valeurs voulues et l'espace de génération aléatoire...
mais je te l'ai codée en brut avec le main qui va avec. La voici (testée sous dos avec builder c++ 5.02 mais compatible tout bon ide de c respectant la norme ANSI) :
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

char * randomize3numbers(void)
{

char buffer[11];
char tmp1[3];
char tmp2[3];
char tmp3[3];
int number = 0;

int numValeur = 1;
bool chaineOk = false;


while(!chaineOk)
{
switch(numValeur)
{
case 1:
randomize();
number = rand() % 101;/*valeur entre 0 et 100*/
itoa(number,tmp1,10);
printf("number1 = %d",number);
strcpy(buffer,tmp1);
strcat(buffer,",");
numValeur++;
break;
case 2:
number = rand() % 101;
itoa(number,tmp2,10);
printf("number2 = %d",number);
strcat(buffer,tmp2);
strcat(buffer,",");
numValeur++;
break;

case 3:
number = rand() % 101;/*valeur entre 0 et 100*/
itoa(number,tmp3,10);
printf("number3 = %d",number);
strcat(buffer,tmp3);
strcat(buffer,"\0");
chaineOk = true;
break;

}/* fin switch */
}/* fin de ton test si chaine constituée */

return buffer;
} /* fin de ta fonction */


/* ton test :) */
int main(void)
{

char machaine[11];
char * chaine_recue = randomize3numbers();
strcpy(machaine,chaine_recue);
printf("ma chaine est : %s",machaine);
free(chaine_recue);
getch();
return 0;

}
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
26 mai 2006 à 08:08
0
kurushi Messages postés 16 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 5 mars 2007 20
26 mai 2006 à 09:33
Bonjour Jipicy,

Sans vouloir vous contredire,l'exemple que vous fournissez, n'est il pas quelque peu "juste"?

Et puis fournir la structure et le code encapsulé dans une fonction peut faciliter la compréhension...

Il ne s'agit pas du tout d'une offense, Jipicy, soyez en sur mais d'une remarque toute basique...

Respectueusement à Niklas & Jipicy, kurushi
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896 > kurushi Messages postés 16 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 5 mars 2007
26 mai 2006 à 09:54
Salut kurushi,

Pas d'offense, loin de là même ;-))

Je ne faisais juste que donner un lien vers un problème similaire. A notre ami Niklas de faire son choix parmi celle qui lui apportera le plus de satisfaction.

Je n'y connais rien en "langage C" et je ne doute pas un seul instant que ta proposition est de loin la plus instructive et la plus adéquate...

Bonne journée ;-))
0