Probleme nombres aléatoires tous differents [C] - C - Programmation
Marsh Posté le 13-03-2005 à 12:17:00
faut que tu imbriques une deuxieme boucle
Code :
|
Marsh Posté le 13-03-2005 à 14:02:51
Tout d'abord , merci
J'ai essayer d'intégrer ce que tu viens de me dire a ma separation de mon programme
Mais je ne comprends absolument pas le coup du if ds la boucle for
Je vais quand mm reepliquer mon pb :
Il faut mettre dans un tableau de c cases des chiffres aleatoire ( ex : X ) allant de 0 à n-1
aprés , il me faut remplacer la valeur de la case X par un chiffre aléatoire compris entre 0 et 3
Voilou
Je met cette fois le code entier avec mes dernieres modification : Le probleme vient au niveau des deux boucles for imbriqués , l'affichage de la sequence a la fdin ainsi que le passage de chiffre a lettre, marche ss pb
VOICI le programme a jour :
#include <stdlib.h>
void mutation(char chaine[], int n,int memo[])
{
int i,j,t,k,b,h,o,c,mem,vrai,var,q,g;
printf("Maintenant, saisissez le pourcentage de taux de mutation qui affecte la chaîne d'ADN : " );
scanf("%d",&b);
if (b==0)
{
printf("Aucune mutation\n" );
printf("\n" );
}
else
{
c=(int)(n*b/100);
if(c==0)
{
c=1;
printf("%d mutation(s) sur la chaîne de %d bases\n",c,n);
}
else
{
printf("%d mutation(s) sur la chaîne de %d bases\n",c,n);
}
printf("\n" );
for(i=0;i<c;i++)
{
vrai=1;
while(vrai=1) //on met un chiffre aleatoire different ds chaque case de memo
{
var=(int)((double)rand()/((double)RAND_MAX+1.0)*n);
for(o=0;o<i-1 && var!=memo[o];o++)
{
if( i==o )
{
memo[i]=var;
vrai=0;
}
}
}
}
for(i=0;i<c;i++)
{
memo[i]=k;
q=chaine[k];
chaine[k]=(int)(4.0*rand()/(RAND_MAX+1.0));
if (q==chaine[k])
{
g=g+1;
}
if (chaine[k]==0)
{
chaine[k]='A';
}
if (chaine[k]==1)
{
chaine[k]='C';
}
if (chaine[k]==2)
{
chaine[k]='G';
}
if (chaine[k]==3)
{
chaine[k]='T';
}
}
printf("\nVoici la chaine ADN ayant subi les %d mutations dont %d muette (substitution de la base par la meme base :\n",c,g);
mem=0;
for(j=0;j<n;j++)
{
printf("%c",chaine[j]);
mem++;
if(mem==3)
{
printf(" " );
mem=0;
}
}
}
printf("\n" );
printf("\n" );
}
Marsh Posté le 13-03-2005 à 15:09:23
si je comprends bien
tu as un tableau que tu dois remplir avec des nombres. Chaque case doit avoir un numéro différent de tous les autres, c'est bien ça?
ex: tab[5] = 2, 1, 3, 4, 0
c'est bien ça que tu veux? si c'est le cas, copie tel quel mon code... ça doit fonctionné...
Marsh Posté le 13-03-2005 à 22:31:17
Simple problème d'algorithme.
|
Marsh Posté le 13-03-2005 à 22:38:20
printf ("\n" );
j'ai toujours trouvé que c'était écraser une mouche avec un marteau
longue vie a putchar
Marsh Posté le 13-03-2005 à 22:47:00
C'est super compliqué pour moi
j'vais passer bcp de temps a essayer de déchiffrer , merci
Mais c'est dommage car je pense qu'on pouvait en modifiant u peu , faire marcher ce que moi23372
ps : taz , je suis un gros newbies .... j'étudie de la biochimie/chimie moi , pas l'info
Marsh Posté le 13-03-2005 à 22:53:28
Touche pas à l'ADN. Mange bio.
Marsh Posté le 14-03-2005 à 10:36:38
Emmanuel Delahaye a écrit : Touche pas à l'ADN. Mange bio. |
Merde, une blague d'informaticien
Sinon , j'ai réfléchit a ce que tu as posté , et je comprends rien du tout
Marsh Posté le 14-03-2005 à 11:04:49
Ok, j'ajoute les commentaires.
Marsh Posté le 14-03-2005 à 14:36:23
Emmanuel Delahaye a écrit : Ok, j'ajoute les commentaires. |
Il y a une légende urbaine qui dit que les commentaires sont utiles... mais ce n'est bien sûr qu'une légende !!!
Marsh Posté le 14-03-2005 à 18:06:19
J'ai envoyé le code par msg privé qui est nettement plus court et testé sous MS VISUAL STUDIO 6.0
Code :
|
Marsh Posté le 14-03-2005 à 18:19:04
# time_t time (time_t *timer);
# void srand (unsigned int);
# int rand (void);
?
Marsh Posté le 14-03-2005 à 19:32:32
moi23372 a écrit : J'ai envoyé le code par msg privé qui est nettement plus court et testé sous MS VISUAL STUDIO 6.0
|
Sinon, c'est vrai que l'algo est plus compact.
Marsh Posté le 13-03-2005 à 11:20:34
Voila,
J'ai un pb :
Je veux rentrer dans un tableau de n cases des chiffres aléatoires
Mais tous differents et borné entre 0 et n.
Mais le gros pb, c'est que je suis pas doué
Donc si vous pouviez m'aider un peu
Voici la partie en question
merci
J'ai mis a jour ce que j'avais fait , 3 post plus bas
Message édité par Profil supprimé le 14-03-2005 à 10:25:53