Algorithme
lecedway
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
lecedway Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
lecedway Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
s'il vous plaît j'ai un exercice a faire sur DEV-C++ ou on me demande de convertir un entier en base 2(suite de 0 à 1 stockées dans un tableau d'entier ou de caractères).comment faire?
s'il vous plaît j'ai un exercice a faire sur DEV-C++ ou on me demande de convertir un entier en base 2(suite de 0 à 1 stockées dans un tableau d'entier ou de caractères).comment faire?
A voir également:
- Algorithme
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Algorithme euromillion excel gratuit - Forum Algorithmes / Méthodes
- Algorithme ajout rapide snapchat - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
13 réponses
j'ai essayé de faire le programme suivant est-il bon?sinon que doit je changer ?merci
int base2 ( int a,int T[TAILLE])
{ int i;
for(i=0;i<TAILLE;i++)
{ while (a>2)
{ if (a%2=0 or a%2=!0)
{T[i]=a%2;
}
}
}
return a;
}
int base2 ( int a,int T[TAILLE])
{ int i;
for(i=0;i<TAILLE;i++)
{ while (a>2)
{ if (a%2=0 or a%2=!0)
{T[i]=a%2;
}
}
}
return a;
}
Ta condition (a%2=0 or a%2=!0) n'est pas du C...
En C on écrirait (a%2==0 || a%2!=0) cependant ça n'a aucun sens car ce sera toujours vrai !
De plus une boucle while à l'intérieur d'une boucle for... ça ne peut être que faux !
Plus inquiétant encore : tu ne divises jamais a par 2 !
Je te donne pas la solution, essaye de le refaire avec mes remarques...
En C on écrirait (a%2==0 || a%2!=0) cependant ça n'a aucun sens car ce sera toujours vrai !
De plus une boucle while à l'intérieur d'une boucle for... ça ne peut être que faux !
Plus inquiétant encore : tu ne divises jamais a par 2 !
Je te donne pas la solution, essaye de le refaire avec mes remarques...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ok,en fait je dois stocker le resultat dans un tableau d'entier c'est pour ca que j'ai mis le while.Vous dites que je ne divise jamais par 2 pourtant je croyais que a%2 signifiait (a modulo 2) soit en quelque sorte le reste de la division de a par 2?
D'accord tu as besoin d'un tableau, donc d'une boucle... pas deux !
Garde ton for tel quel et enlève le while, il est inutile et faux...
Effectivement a%2 donne le reste, mais après il faut que tu travailles avec le quotient a/2 que tu ne calcules jamais
Garde ton for tel quel et enlève le while, il est inutile et faux...
Effectivement a%2 donne le reste, mais après il faut que tu travailles avec le quotient a/2 que tu ne calcules jamais
Merci,mais pourquoi j'aurais besoin d'une seule boucle sachant que lorsque je vais calculer le quotient,je devrais renouveler l'operation jusqu'à ce qu'il soit inferieur a 2 nn?et dans ce cas quel boucle utilisée?
Regarde "sur papier" avec par exemple 13 en binaire
Tu as donc juste besoin d'une boucle pour remplir ton tableau et tes cases T[i]
Lorsque tu auras calculer ton quotient tu renouvelleras l'opération jusqu'à ce que i>=TAILLE et c'est pour ça qu'il faut utiliser uniquement ta boucle for
13%2=1 ; 13/2=6 6%2=0 ; 6/2=3 3%2=1 ; 3/2=1 1%2=1 ; 1/2=0 0%2=0 ; 0/2=0 ... 0%2=0 ; 0/2=0Ton résultat est donc 0...01101 (avec ... qui remplace plein de 0)
Tu as donc juste besoin d'une boucle pour remplir ton tableau et tes cases T[i]
Lorsque tu auras calculer ton quotient tu renouvelleras l'opération jusqu'à ce que i>=TAILLE et c'est pour ça qu'il faut utiliser uniquement ta boucle for
ok,voici ce que j'ai fait:
int base2 ( int a,int T[TAILLE])
{ int i;
int q;
q=a/2;
do
{q/2;}
while(q>2)
for(i=1;i<TAILLE;i++)
{ if (q%2=0 || q%2!=0)
{ T[0]=a%2;
T[i]=q%2;
}
}
return a;
}
au depart je calcule le quotient jusqu'a ce qu'il soit inferieur a 2 et par la suite je fai une boucle remplissant les cases du tableau avec les reste obtenues.
Exuse moi si je me trompe tout le temp,c'est la premièe fois que je fais de l'informatique et je suis vaiment pas doué dans cette matière au contraire des autres matières ou j'ai aucun probleme.je fais une formation en Math aplliqué et l'algorithme est une option faisant partie de ma filière et en vue des exams on nous donne des exo a rendre.ca fait plus de 2 jours que je suis sur cette exercice
int base2 ( int a,int T[TAILLE])
{ int i;
int q;
q=a/2;
do
{q/2;}
while(q>2)
for(i=1;i<TAILLE;i++)
{ if (q%2=0 || q%2!=0)
{ T[0]=a%2;
T[i]=q%2;
}
}
return a;
}
au depart je calcule le quotient jusqu'a ce qu'il soit inferieur a 2 et par la suite je fai une boucle remplissant les cases du tableau avec les reste obtenues.
Exuse moi si je me trompe tout le temp,c'est la premièe fois que je fais de l'informatique et je suis vaiment pas doué dans cette matière au contraire des autres matières ou j'ai aucun probleme.je fais une formation en Math aplliqué et l'algorithme est une option faisant partie de ma filière et en vue des exams on nous donne des exo a rendre.ca fait plus de 2 jours que je suis sur cette exercice
if (q%2=0 || q%2!=0) ne sert à rien, tu dis : "q est pair ou q est impair", c'est forcément vrai !
De plus il faut que tu divises par 2 à CHAQUE tour de boucle !
Voici la réponse, si tu ne la comprends pas demande...
De plus il faut que tu divises par 2 à CHAQUE tour de boucle !
Voici la réponse, si tu ne la comprends pas demande...
int base2(int a, int T[TAILLE]) { int i; for (int i=TAILLE-1; i>=0; i--) // on va de droite à gauche { T[i]=a%2; a=a/2; } }
ah ok ok,mince je comprend merci beaucoup KX,au fait vu que c'est une fonction,l'on doit pas retourner une valeur?