Exercice en programme c

Résolu
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

  1. merci a vous tous !! ^^
    1. Contributeur
      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 ;-).
  2. Contributeur
    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.
    1. le problème c'est que j'ai pas trouver la méthode en utilisant l'addition.
    2. Contributeur
      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.
  3. 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
    1. Contributeur
      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.
    2. 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 !
    3. Contributeur
      '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 ;-).
    4. 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 !
    5. Contributeur
      Tu utilises toujours des "moins" mais il y a du mieux :-).