1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Probleme bei der Umsetzung eines weiteren C-Programms

  • Ramrod
  • 18. Dezember 2017 um 02:14
  • Unerledigt
  • Ramrod
    2
    Ramrod
    Mitglied
    Punkte
    25
    Beiträge
    3
    • 18. Dezember 2017 um 02:14
    • #1

    Hallo liebe Gemeinde!

    Ich habe nun verscuht ein weiteres C Programm zu schreiben. Dabei sollen die Ableitungen von Polynomen nten Grades (wobei n <= 10) gebildet werden. Das Ganze soll über einen rekursiven Funktionsaufruf geschehen. Das Programm lässt sich ebenfalls kompilieren und ist lauffähig, allerdings versemmelt es mir die Ausgabe der Ableitung. Ich finde den Fehler leider nicht und weiß auch ehrlich gesagt nicht an werlchem Schräubchen ich drehen könnte, so dass es mir die richtige Ausgabe erzeugt. Falls jemand gnädigerweise etwas Zeit über hat und einen Blick drauf werfen könnte, wäre ich sehr dankbar :-)...

    Hier der Quellcode:

    Code
    #include <stdio.h>
    
    
    void ableitung(int a[11], int a_strich[11], int k)
    {
      for(int i = 11; i >= 0; i--)      // Feld durchlaufen und Bildung der Ableitungskoeff.
      {
        a_strich[i - 1] = a[i] * i;
      }
    
    
      if(k > 0)  
      {
        ableitung(a_strich, a, k - 1);      // rekursiver Aufruf -> Bildung der erneuten Abl. der Abl.
      }
    }
    
    
    int main (void)
    {
      int n;        // Variablen deklarieren
      int max_koeff;
      int new_koeff;
    
      int a[11];        // benoetigte Felder initialisieren
      int a_strich[11];
    
      // Werte der Felder auf 0 setzen
    
      for(int i = 0; i <= 11; i++)
      {
        a[i] = 0;
      }
    
      for(int i = 0; i <= 11; i++)
      {
        a_strich[i] = 0;
      }
    
      printf("Bitte den Grad n des einzulesenden Polynoms angeben (0 <= n <= 10).\n");
      scanf("%d", &n);
    
      for(int i = 0; i <= n; i++)       // einlesen der Koeffizienten
      {
        printf("Bitte den Koeffizienten a%d eingeben: \n", i);
        scanf("%d", &a[i]);
      }
    
      printf("P(x) =");
    
      for(int i = n; i >= 0; i--)       // Erzeugen der Ausgabe der eingelesenen Gesamtfunktion
      {
        if(a[i] != 0)
        {
          if(i > 1)
          {
            printf(" %d*x^%d +", a[i],i);
          }
          else if(i == 1)
          {
            printf(" %d*x +", a[1]);
          }
          else
          {
            printf(" %d\n", a[0]);
          }
        }
      }
    
      printf("Die wievielte Ableitung von P soll bestimmt werden?\n");
      scanf("%d", &max_koeff);
    
      new_koeff = max_koeff;        // Hilfsvariable
    
      ableitung(a, a_strich, new_koeff);        // Aufruf der Ableitungsfkt.
    
      printf("P");
    
      for(int i = 1; i <= max_koeff; i++)       // Notation des Ableitungsgrades
      {
          printf("’");
      }
    
      printf("(x) = ");
    
      for(int i = n; i >= 0; i--)       // Erzeugen der Ausgabe der abgeleiteten Funktion
      {
        if(a_strich[i] != 0)
        {
          if(i > 1)
          {
            printf(" %d*x^%d +", a_strich[i],i);
          }
          else if(i == 1)
          {
            printf(" %d*x +", a_strich[1]);
          }
          else
          {
            printf(" %d\n", a_strich[0]);
          }
        }
      }
    
      printf("\n");
    
      return 0;
    }
    Alles anzeigen
  • stackoverflow
    5
    stackoverflow
    Mitglied
    Reaktionen
    8
    Punkte
    258
    Beiträge
    49
    • 21. Dezember 2017 um 23:57
    • #2

    drei Dinge, die mir aufgefallen sind, kann sein dass noch weitere Sachen nicht passen:

    1. Array hat Länge 11. Die Schleifen greifen aber auf die Elemente 0...11 zu, das heißt auf insgesamt 12 Elemente! Statt <= also < verwenden.
    int a[11];
    for(int i = 0; i <= 11; i++)

    2. Verwende ein normales,einfaches Hochkomma. Du kannst auch auf puts statt printf zurückgreifen, wenn du nur Text ausgibst (also ohne Formatstrings).
    printf("'");

    3. definiere die Arraygröße irgendwo zentral als Variable bzw. Konstante, das macht den Code lesbarer und macht Änderungen einfacher. (das ist eher stilistischer Natur und kein Fehler)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung