Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Elessar

Aran Gondor

  • »Elessar« ist männlich
  • »Elessar« ist der Autor dieses Themas

Beiträge: 105

Wohnort: Köln

Beruf: Schüler...

  • Nachricht senden

1

17.04.2009, 20:21

[gelöst]C Programm für den GGT.

Nabend zusammen,

ich nun einmal intensiv angefangen mich mit C zu beschäftigen und benutze das Buch "Progammieren lernen mit C". Bin im Kapitel wo Algorithmen bearbeitet werden. Da habe ich nun die Aufgabe ein Programm zu schreiben, was den größten gemeinsamen Teiler errechnet, doch irgendetwas mache ich falsch, ich bekomme immer falsche Ergebnisse. Ich sehe aber einfach nicht was. Der Pseudocode ist vorgegeben:

a und b einlesen;
Wiederhole
Berechne den Rest r der Ganzzahldivision a / b.
Ersetze a durch b.
Ersetze b durch den berechneten Rest.
bis Rest r gleich Null ist.
Der letzte Wert von a ist der GGT.


Dazu habe ich jetzt folgendes geschrieben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h> 
 int main(void) 
{ 
  int a, b, r, zaehler;  
  printf("Programm zur Berechnung des GGT von 2 natürlichen Zahlen.\n\n");    
  printf("Geben Sie nacheinander 2 Zahlen an.\n");  
  printf("Zahl 1: "); scanf("%i", &a);  
  printf("Zahl 2: "); scanf("%i", &b);  

do {  
    zaehler++;  
    printf("%i. Durchgang.\n", zaehler);  
    r = a/b;   
    a = b;   
    b = r;   
    printf("Zahl 1: %i\nZahl 2: %i\nRest: %i\n\n", a, b, r);  
} while (r != 0); 

 printf("Der GGT ist %i.\n", a);  
return 0; 
}


Aber wie gesagt, ich bekomme immer falsche Ergebnisse. Kann mir jemand sagen warum? Oder ist es was total einfaches, was ich übersehe?

Grüße

Elessar

2

17.04.2009, 20:36

sorry ich habs nur ueberflogen weil ich nicht viel zeit hab, aber ich glaube, der modulo-operator % sollte dir helfen: http://de.wikipedia.org/wiki/Modulo

// edit: nebenbei koenntest du zaehler gleich mit 0 initialisieren, dann werden die durchgaenge auch richtig gezaehlt.

mfg,
julian

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-=Freaky=-« (17.04.2009, 20:39)


Elessar

Aran Gondor

  • »Elessar« ist männlich
  • »Elessar« ist der Autor dieses Themas

Beiträge: 105

Wohnort: Köln

Beruf: Schüler...

  • Nachricht senden

3

17.04.2009, 20:50

Ach ja natürlich, jetzt ist mir das klar geworden, ich soll ja den Rest r und nicht das Ergebnis in r schreiben... >.< Gott nein, ich könnt mich selber dafür in den Hintern treten....

Ich probiers jetzt so mal aus.

Danke x)

Edit: Ja, hat geklappt, musste nur "r = a/b" durch "r = a % b" ersetzen.. Jetzt funktioniert es. Super, danke x)

Und btw: Die Durchgänge wurden richtig gezählt, aber ich kann ja trotzdem einfach mal zaehler vorher auf null setzen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Elessar« (17.04.2009, 20:54)


Thema bewerten