Pb code please help
biohazard
-
loupius -
loupius -
Bonjour,
pourriez vous me dire pourquoi ca marche pas? Je veux faire un programme qui convertisse une chaine d'ADN en ARN. Voila mon code:
int main(void)
#include <stdio.h>
int main(void)
{
int a;
char dna[256];
scanf("%s", &dna);
for(a=0; a<256; a++)
{
if(dna[a]!='A' && dna[a]!='T' && dna[a]!='C' && dna[a]!='G')
{
printf("Invalid dna");
}
else
{
if(dna[a]=='A')
dna[a]='U';
else
if(dna[a]=='T')
dna[a]=='A';
else
if(dna[a]=='C')
dna[a]='G';
else
dna[a]='C';
}
}
return 0;
}
pourriez vous me dire pourquoi ca marche pas? Je veux faire un programme qui convertisse une chaine d'ADN en ARN. Voila mon code:
int main(void)
#include <stdio.h>
int main(void)
{
int a;
char dna[256];
scanf("%s", &dna);
for(a=0; a<256; a++)
{
if(dna[a]!='A' && dna[a]!='T' && dna[a]!='C' && dna[a]!='G')
{
printf("Invalid dna");
}
else
{
if(dna[a]=='A')
dna[a]='U';
else
if(dna[a]=='T')
dna[a]=='A';
else
if(dna[a]=='C')
dna[a]='G';
else
dna[a]='C';
}
}
return 0;
}
A voir également:
- Pb code please help
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Scanner qr code pc - Guide
8 réponses
Tu boucles de 0 à 255, est-tu ceratin que la longueur de la chaîne saisie aura cette taille... moi pas !
Je te laisses trouver une bonne solution.
Je te laisses trouver une bonne solution.
Verifie par le biait d'un affichage si le tableau DNA contient bien la chaine entrée par l'utilisateur !
La programmation est l'art de programmer des semaines pour gagner quelques microsecondes.
La programmation est l'art de programmer des semaines pour gagner quelques microsecondes.
En fait la taille c'est pas très important, ce qui m'embete le plus, c'est que le programme ne marche pas, il m'affiche toujours Invalid dna, meme si je rentre une chaine correcte d'adn.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok je vois ce qui faut faire pour la taille merci. Mais reste toujours le pb de fond qui est que le programme marche pas.
De preferable non.
Bon juste fixer une taille maximale pour la chaîne de caractères puis lorsque tu va parcourir ta chaine, tu va aller de 0 jusqua la taille rééel de ta chaine pas la taille maximal.
La programmation est l'art de programmer des semaines pour gagner quelques microsecondes.
Bon juste fixer une taille maximale pour la chaîne de caractères puis lorsque tu va parcourir ta chaine, tu va aller de 0 jusqua la taille rééel de ta chaine pas la taille maximal.
La programmation est l'art de programmer des semaines pour gagner quelques microsecondes.
Au vu du reste de ton programme, je pensais que tu connaissais un peu plus le C; mais au vu des réponses 5 et 11, j'ai l'impression que tu piges pas.
C'est pourtant très simple: Il ne faut pas tester en dehors de la chaîne; c'est une nécessité.
Alors comment faire, il y a 3 solutions:
1) Demander à l'utilisateur de saisir la longueur de la chaîne: c'est absurde, que se passera-t-il s'il se trompe ? Et puis on va pas lui demander un travail que l'on peut faire.
Il faut savoir qu'en C les chaînes de caractères sont terminées par un '\0' (caractère nul qui vaut zéro 0h):
2) Il existe une fonction (strlen) qui cherche ce zéro et qui donne la longueur de la chaîne; ainsi on va faire une boucle for (a=0; a<strlen(dna); a++)
3) Il existe une autre manière de faire une boucle, c'est avec 'while (condition)', la condition étant le caractère qui ne devra pas être nul: a=0; while (dna[a]) { ... a++; }
Ici, pour moi, la réponse la mieux adaptée est la n° 3.
Bon choix.
C'est pourtant très simple: Il ne faut pas tester en dehors de la chaîne; c'est une nécessité.
Alors comment faire, il y a 3 solutions:
1) Demander à l'utilisateur de saisir la longueur de la chaîne: c'est absurde, que se passera-t-il s'il se trompe ? Et puis on va pas lui demander un travail que l'on peut faire.
Il faut savoir qu'en C les chaînes de caractères sont terminées par un '\0' (caractère nul qui vaut zéro 0h):
2) Il existe une fonction (strlen) qui cherche ce zéro et qui donne la longueur de la chaîne; ainsi on va faire une boucle for (a=0; a<strlen(dna); a++)
3) Il existe une autre manière de faire une boucle, c'est avec 'while (condition)', la condition étant le caractère qui ne devra pas être nul: a=0; while (dna[a]) { ... a++; }
Ici, pour moi, la réponse la mieux adaptée est la n° 3.
Bon choix.