(gelöst) Probleme bei der Umsetzung eines C-Programms

  • C

    Probleme bei der Umsetzung eines C-Programms

    Hallo liebe Gemeinde!

    Ich habe versucht ein 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 fehlerfrei 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 welchem 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 mal der Quellcode:

    Quellcode

    1. #include <stdio.h>
    2. void ableitung(int a[11], int a_strich[11], int k)
    3. {
    4. for(int i = 11; i >= 0; i--) // Feld durchlaufen und Bildung der Ableitungskoeff.
    5. {
    6. a_strich[i - 1] = a[i] * i;
    7. }
    8. if(k > 0)
    9. {
    10. ableitung(a_strich, a, k - 1); // rekursiver Aufruf -> Bildung der erneuten Abl. der Abl.
    11. }
    12. }
    13. int main (void)
    14. {
    15. int n; // Variablen deklarieren
    16. int max_koeff;
    17. int new_koeff;
    18. int a[11]; // benoetigte Felder initialisieren
    19. int a_strich[11];
    20. // Werte der Felder auf 0 setzen
    21. for(int i = 0; i <= 11; i++)
    22. {
    23. a[i] = 0;
    24. }
    25. for(int i = 0; i <= 11; i++)
    26. {
    27. a_strich[i] = 0;
    28. }
    29. printf("Bitte den Grad n des einzulesenden Polynoms angeben (0 <= n <= 10).\n");
    30. scanf("%d", &n);
    31. for(int i = 0; i <= n; i++) // einlesen der Koeffizienten
    32. {
    33. printf("Bitte den Koeffizienten a%d eingeben: \n", i);
    34. scanf("%d", &a[i]);
    35. }
    36. printf("P(x) =");
    37. for(int i = n; i >= 0; i--) // Erzeugen der Ausgabe der eingelesenen Gesamtfunktion
    38. {
    39. if(a[i] != 0)
    40. {
    41. if(i > 1)
    42. {
    43. printf(" %d*x^%d +", a[i],i);
    44. }
    45. else if(i == 1)
    46. {
    47. printf(" %d*x +", a[1]);
    48. }
    49. else
    50. {
    51. printf(" %d\n", a[0]);
    52. }
    53. }
    54. }
    55. printf("Die wievielte Ableitung von P soll bestimmt werden?\n");
    56. scanf("%d", &max_koeff);
    57. new_koeff = max_koeff; // Hilfsvariable
    58. ableitung(a, a_strich, new_koeff); // Aufruf der Ableitungsfkt.
    59. printf("P");
    60. for(int i = 1; i <= max_koeff; i++) // Notation des Ableitungsgrades
    61. {
    62. printf("’");
    63. }
    64. printf("(x) = ");
    65. for(int i = n; i >= 0; i--) // Erzeugen der Ausgabe der abgeleiteten Funktion
    66. {
    67. if(a_strich[i] != 0)
    68. {
    69. if(i > 1)
    70. {
    71. printf(" %d*x^%d +", a_strich[i],i);
    72. }
    73. else if(i == 1)
    74. {
    75. printf(" %d*x +", a_strich[1]);
    76. }
    77. else
    78. {
    79. printf(" %d\n", a_strich[0]);
    80. }
    81. }
    82. }
    83. printf("\n");
    84. return 0;
    85. }
Botcheck