Exercice en programme c

Résolu/Fermé
titeuf.1 Messages postés 3 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012 - 28 oct. 2012 à 13:18
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 oct. 2012 à 10:36
Bonjour,
pouvez vous m'aider a résoudre ce mini problème

donner un programme c qui permet de calculer le rapport de deux nombres entier et le reste de la division en utilisant l'addition uniquement


merci d'avance ^____^


3 réponses

titeuf.1 Messages postés 3 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012 1
30 oct. 2012 à 21:56
merci a vous tous !! ^^
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
31 oct. 2012 à 10:36
Il te reste quand même à traduire d'une part le code en C.
Et d'autre part, il ne s'agit que d'un exemple vraiment pas optimisé (il y a deux boucles, alors qu'on peut le faire en 1 seule). Donc il y a encore du boulot ;-).
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 oct. 2012 à 13:24
Merci de poster ce que tu as fait pour qu'on puisse t'aider...
Ou alors dis-nous ce que tu comprends pas, et ou tu bloques.
0
titeuf.1 Messages postés 3 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 30 octobre 2012 1
28 oct. 2012 à 13:54
le problème c'est que j'ai pas trouver la méthode en utilisant l'addition.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 oct. 2012 à 14:37
Par exemple :

Tu as 19/4
étape<-0
nb<-0
nb+4<19 donc étape 1
Etape 1 : nb<-nb+4 (nb=4)
nb+4<19 donc étape 2
Etape 2 : nb<-nb+4 (nb=8)
nb+4<19 donc étape 3
Etape 3 : nb<-nb+4 (nb=12)
nb+4<19 donc étape 4
Etape 4 : nb<-nb+4 (nb=16)
nb+4 non < 19 donc :
reste<-19-nb (reste=3), et diviseur<-4

Je te laisse creuser la méthode, comprendre comment faire des boucles et faire l'algorithme.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
28 oct. 2012 à 22:10
Effectivement,
nb=0
ResteDivision=0
Nombre = 12
Coefficient = 5
BOUCLE début
. SI nb>Nombre ALORS nb=(nb-Coefficent):ResteDivision=(Nombre-nb): AFFICHER ResteDivision: SORTIR
. SINON nb+=Coefficient
FIN BOUCLE
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 oct. 2012 à 08:37
Heliotte,
Tu utilises des soustractions dans ton algorithme ;-).
De plus ton algorithme ne marche pas. Si tu fais nb=nb-Coefficient, ton nb va diminuer. De plus, la structure algorithmique de ta boucle est à revoir...

Mais, le mieux est de le laisser chercher. Avec les exemples, il doit comprendre comment cela fonctionne et trouver l'algorithme.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 09:08
fiddy,
j'ai fait une erreur lors de l'écriture.
Il faut remplacer :
- SI nb>Nombre ALORS nb=(nb-Coefficent):ResteDivision=(Nombre-nb): AFFICHER ResteDivision: SORTIR
par :
- SI nb>Nombre ALORS nb=(nb+Coefficent):ResteDivision=(Nombre-nb): AFFICHER ResteDivision: SORTIR
J'aurai dû utiliser un TANT QUE mais comme tu le dit, on ne va pas servir sur un plateau !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 oct. 2012 à 09:44
'ai fait une erreur lors de l'écriture.
Si tu mets + au lieu du -, là c'est archi faux du coup.

SI nb>Nombre ALORS nb=(nb+Coefficent):ResteDivision=(Nombre-nb): AFFICHER ResteDivision: SORTIR
. SINON nb+=Coefficient

Itération 1 : nb (0) non > Nombre (12) Donc nb+=Coefficient (nb=5)
Itération 2 : nb (5) non > Nombre (12) Donc nb+=Coefficient (nb=10)
Itération 3 : nb (10) non > Nombre (12) Donc nb+=Coefficient (nb=15)
Itération 4 : nb (15) > Nombre (12) Donc nb=nb+coefficient (nb=20) Et ResteDivision=Nombre-nb (12-20) = -8 !!!
Si tu mettais un - comme au début, tu trouvais le bon résultat. Le problème c'est que tu utilises un - à cet endroit (et puis le - pour le resteDivision). C'est donc bel et bien l'algorithme qui est à revoir.

Et enfin, un TantQue ne s'utilise pas comme ça. Il faut mettre TantQue Condition.
Sinon on se retrouve avec de moches et problématiques : while(1) en C...

Et évite de tout corriger, sinon tu vas lui faire l'exercice ;-).
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 10:51
Je reprends tout, car c'est archi embrouillé !

nb=0
ResteDivision=0
Nombre = 12
Coefficient = 5
MultipliePar = -1
'
TANT QUE nb<Nombre
.  nb+=Coefficient
.  MultipliePar+=1
FIN TANT QUE
'
nb=(nb-Coefficent)
ResteDivision=(Nombre-nb)
AFFICHER MultipliePar // rapport de deux nombres entier
AFFICHER ResteDivision // reste de la division


Encore faut-il pouvoir décoder !
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 oct. 2012 à 11:44
Tu utilises toujours des "moins" mais il y a du mieux :-).
0