Exercice en programme c

Résolu
titeuf.1 Messages postés 3 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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. titeuf.1 Messages postés 3 Statut Membre 1
     
    merci a vous tous !! ^^
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. titeuf.1 Messages postés 3 Statut Membre 1
       
      le problème c'est que j'ai pas trouver la méthode en utilisant l'addition.
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      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
    3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      '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
    4. Heliotte Messages postés 1561 Statut Membre 92
       
      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
    5. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Tu utilises toujours des "moins" mais il y a du mieux :-).
      0