Division numerator denominator mit Rest!



  • guten tag,
    Ich besuche einen Programmierkurs den ich im Studiumfach Mathe belegen muss.

    Leider habe ich keine blassen schimmer wie man damit umgeht.
    Aufgabe:

    Aufgabe 1 (Ganzzahliger Rest).

    Schreiben Sie eine C-Funktion
    int mod( int numerator , int denominator )
    {
    int result ;
    . . .
    return result ;
    }
    Die Funktion soll den Rest der Ganzzahldivision von
    ,,numerator´´ durch ,,denominator´´ berechnen,
    ohne auf die C-Operatoren % und / zuruckzugreifen. Testen Sie Ihre Implementierung anhand
    der Beispiele
    1. 13 : 17;
    2. 193 : 45;
    3. -207 : (-13);
    4. 47 : (-45);
    5. 459 : 27:
    Geben Sie jeweils das Ergebnis mittels
    "printf ()" im Hauptprogramm - also in der "main()"-Funktion - aus.
    Hinweis:
     Statt "%d" kann auch "%i" zur Ausgabe von Ganzzahlen verwendet werden.
     Da die Rechenbeispiele konkret gegeben sind, kann man zur Ausgabe z.B.
    printf ( " Rest bei Division von 13 durch 17 : %d/n" , mod(13 , 1 7 ) ) ;
    verwenden und die Zeile fur die vier anderen Beispiele entsprechend modifziert kopieren.
    Ein Programm mit 5 printf ()-Aufrufen reicht dann aus.

    Dazu muss ich auch die Operatoren while do,while,for,if else benutzen.
    Wäre sehr dankbar wenn einer helfen könnte
    danke!



  • Wie würdest du es mit Stift und Papier machen?



  • int mod(int a,int b)
    {
      int vza=a<0, x;
      a=abs(a);
      x=b=abs(b);
      while( (x+b)<=a )
        x+=b;
      return (vza?-1:1)*(x>a?a:a-x);
    }
    

Log in to reply