Problem mit Array



  • Ich soll ein Programm schreiben dass aus den Kettenbruch[a0;a1,...,an] eine rationale Zahl macht.Dabei darf ich nur integer-Variablen benutzen. Bisher bin ich soweit gekommen:

    #include <stdio.h>

    int n;

    int i;
    int zaehler;
    int nenner1 = 1;
    int x;
    int main(void)
    {
    char input[100];

    printf("Bitte geben Sie die Anzahl der Ziffern an: \n");
    scanf("%i", &n);
    printf("Bitte geben Sie die Ziffern einzeln ein \n ");

    for(i = 0; i < n; i++)
    {
    scanf("%s", &input[i]);
    }
    Die rationale Zahl will ich als Zähler/Nenner darstellen. Desweiteren weiß ich dass man mit Hilfe des euklid. Algorithmus auf den Kettenbruch kommt und a0,a1 usw die "q"s aus a= q*b +r sind. Aber ich komm nicht drauf wie ich mit a0,a1 usw. wieder auf den Bruch a/b komme.

    Ich bin für jeden Rat im voraus schonmal dankbar.


  • Mod

    Die Aufgabenstellung lautet doch, den Kettenbruch als einen einzelnen Bruch darzustellen, oder? Dann brauchst du doch gar keinen euklidischen Algorithmus, sondern musst einfach nur alles auf einen gemeinsamen Nenner bringen (und vermutlich ist auch gemeint, dass der Bruch dann gegebenenfalls gekürzt werden soll).

    Zu deinem Programm:
    -Warum sind da globale Variablen?
    -Der Formatspezifizierer für char ist nicht %s
    -Was ist, wenn n > 100 ist?
    -Die Hälfte der Variablen benutzt du nicht einmal

    Falls dein Programmierversuch repräsentativ für deinen Kenntnisstand ist, dann ist die Schwierigkeit der Aufgabenstellung schon recht gehoben. Sicher, dass du die Aufgabe richtig verstanden hast oder ob es keine Hinweise zur Lösung gab? (Oder hast du in deinem Kurz nie richtig aufgepasst und bekommst nun die Rechnung?)

    Wie man seinen Beitrag lesbar formatiert

    PS: Was hat denn der Titel eines Threads mit der Frage zu tun? Hast du irgendein konkretes Problem mit deinem Array?



  • Thx erstmal für die Antwort.

    Es ist ziemlich offensichtlich dass ich in Sachen programmieren noch ein Anfänger bin (1. Semester Vorlesung Algo.Math, noch nie vorher programmiert). Bisher haben wir auch nur in den ersten paar Wochen Grundlagen wie Variablentypen, if-else und Schleifen kurz behandelt, aber der Großteil der Übungsaufgaben geht über das behandelte weit hinaus. Die Vorlesung ist was programmieren betrifft generell etwas "anfängerfeindlich".

    Der Grund warum viele ungenutzte Variablen dabei sind: es sind Überreste vom "rumprobieren".

    Alles auf einen Nenner bringen? Dann müsste ich mir ja [a0,a1,...,an] = a0 + 1/(a1+1/...) mal genauer angucken oder?


  • Mod

    Famlo schrieb:

    Alles auf einen Nenner bringen? Dann müsste ich mir ja [a0,a1,...,an] = a0 + 1/(a1+1/...) mal genauer angucken oder?

    Genau. Spontan würde ich hier an eine rekursive Lösung denken. Außerdem wirst du Funktionen brauchen, um Brüche zu addieren, auf einen Nenner zu bringen (zum Addieren sowieso nötig) und zu kürzen. Und natürlich überhaupt passende Datenstrukturen für die Brüche (ein Zahlenpaar dürfte reichen, aber man sollte eben über solche Dinge nachdenken).

    Wow, die Aufgabe ist echt anspruchsvoll für Leute, die erst ein paar Wochen programmieren. 😮



  • Um Brüche zu addieren brauche ich das kgV der Nenner und zum kürzen brauche ich den ggT wenn ich mich nicht irre. Rekursive Lösung war bei Funktionen dass diese sich wieder selbst aufrufen.

    Ich werde mal meine Programme zum kürzen und addieren von Brüchen rauskramen.


Anmelden zum Antworten