Advertisement
Guest User

Untitled

a guest
Dec 11th, 2011
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4.  
  5. void eingabe(int*, int);
  6.  
  7. int ggt(int*, int);
  8.  
  9. int main(void)
  10. {
  11.     int wdh = 0, werte[100] = {0}, anzahl_werte, index, ggt_wert = 0;
  12.  
  13.     do
  14.     {
  15.         printf("Wieviele Werte moechten sie eingeben?\n"); //Eingabe der Anzahl der Werte
  16.         scanf("%i", &anzahl_werte);
  17.  
  18.         eingabe(werte, anzahl_werte);
  19.  
  20.         ggt_wert = ggt(werte, anzahl_werte);
  21.  
  22.         printf("Der ggT lautet: %i\n", ggt_wert); //Ausgabe vom ggT
  23.  
  24.         printf("Fuer erneuten Programmdurchlauf 1 eingeben.\n"); //erneuter programmdurchlauf
  25.         scanf("%i", &wdh);
  26.     }
  27.     while(wdh==1);
  28.     return(1);
  29. }
  30.  
  31. void eingabe(int *werte, int anzahl_werte)
  32. {
  33.     int index;
  34.     printf("Geben Sie die Werte ein:\n");
  35.         for(index = 0; index < anzahl_werte; index++) //Eingabe aller Werte
  36.         {
  37.             scanf("%i", &werte[index]);
  38.         }
  39. }
  40.  
  41. int ggt(int *werte, int anzahl_werte)
  42. {
  43.     int index, r = 1, m, n, ggt1;
  44.  
  45.     m = werte[0]; //Bestimmung des ggT's von den ersten beiden Werten
  46.     n = werte[1];
  47.  
  48.     if(n>m) //Weil beim Euklid gelten muss: m>n
  49.     {
  50.         n = m;
  51.         m = werte[1];
  52.     }
  53.    
  54.     while(r != 0) //Euklid
  55.     {
  56.         r = m % n;
  57.         m = n;
  58.  
  59.         if(r == 0)
  60.         {
  61.             ggt1 = n;
  62.         }
  63.  
  64.         n = r;
  65.     }
  66.  
  67.     for(index = 2; index <= anzahl_werte; index++) //Fortlaufend wird jeweils ggT(ggT(a,b),c) bestimmt
  68.     {
  69.         if(ggt1 < werte[index]) //Es muss gelten m>n
  70.         {
  71.             n = ggt1;
  72.             m = werte[index];
  73.         }
  74.         else
  75.         {
  76.             m = ggt1;
  77.             n = werte[index];
  78.         }
  79.  
  80.         while(r != 0) //Euklid
  81.         {
  82.             r = m % n;
  83.             m = n;
  84.  
  85.             if(r == 0)
  86.             {
  87.                 ggt1 = n;
  88.                 r = 1;
  89.             }
  90.  
  91.             n = r;
  92.         }
  93.     }
  94.     return(ggt1);
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement