C Programm für Parabel



  • Zeile 20 Syntaxfehler 🙄 ich bin so doof, dennoch
    kommen diese Kompilierfehler:

    graphi.c:30: error: array subscript is not an integer
    graphi.c:32: error: array subscript is not an integer
    graphi.c:44: error: array subscript is not an integer
    graphi.c:52: error: array subscript is not an integer
    graphi.c:61: error: array subscript is not an integer
    graphi.c:99: error: array subscript is not an integer



  • In function 'main':
    Line 27: error: array subscript is not an integer
    Line 29: error: array subscript is not an integer
    Line 40: error: array subscript is not an integer
    Line 48: error: array subscript is not an integer
    Line 57: error: array subscript is not an integer
    Line 61: error: array subscript is not an integer

    Das sind die richtigen Zeilen sorry.



  • Nimm mal xi und yi als index für plot. Das müssen int sein. 🙄

    int xi;
    int yi;
    ...
    
    for (yi=0;y<ANZ_Y;yi++)
    { for(xi=0;x<ANZ_X;xi++)
      {
        plot[yi][xi] = ' '; // Leerzeichen einstellen
      }
      plot[y][ANZ_X] = '\0'; // Damit es ein String wird
    }
    .....
    
    for (yi=0;yi<25;yi++){
      puts(plot[yi]);}
    


  • Auf meinem Rechner psiert nichts, außer eine sehr lange Ladezeit.
    Und so sieht es hier aus: http://codepad.org/jYBVA3m7



  • Was mich noch wundert ist: Wie man Das Ergebniss von 2 Double-Werten in einem Integer Speichern kann.

    xi = (x-x_min) * ANZ_X /(x_max-x_min);



  • Hier mal ein funktionierendes Beispiel. Du solltest aber unbedingt vergleichen, was du anders machst.

    http://codepad.org/xYs1uxB0



  • Meine x_skaliert Funktion ist offensichtlich fehlerhaft. Der Rest sollte aber wie die Ausgabe passen.



  • Ein Fehler ist beim befüllen:

    //for (yi=0;y<ANZ_Y;yi++) FEHLER da steht y< statt yi kleiner
      for (yi=0;yi<ANZ_Y;yi++) 
    { 
    //for(xi=0;x<ANZ_X;xi++)  dito
      for(xi=0;xi<ANZ_X;xi++)
      {
        plot[yi][xi] = ' '; // Leerzeichen einstellen
      }
      plot[yi][ANZ_X] = '\0'; // Damit es ein String wird
    }
    

    Hab ich auch nicht gleich gesehen



  • Also bei Pauls programm kommt ein "STATUS_ACCESS_VIOLATION" Fehler

    @Dirk.B das ist ja jetzt das Koordinatensystem oder?
    An welcher Stelle hast du denn geplant wo der Teil mit der Parabel hinkommen soll?



  • Der Quellcode von euren Programmen sehen mir ziemlich "Profimäßig" aus.

    Wenn es dir hilft @Paul, es wird jedenfalls bei mir einfach nur ein "Stackdump" erstellt
    und anschließend das Programm beendet, und das liegt an der funktion x_skaliert?



  • Nein, das ist der Teil der die Leerzeichen einsetzt. (Bei dir Zeile 26 - 31)

    Für die Parabel musst du noch a, b und c mit werten besetzen.
    Z.B.: a = 1.0; b = 0.0; c = -8.0;

    Die Parabel wird in den Zeilen 54 - 61 berechnet



  • Das Problem ist schon längst gefixt.

    int x_skaliert(int x, int min, int max)
    {
      int offset = min < 0 ? min : 0;	/* Offset verschiebt den Ursprung */
      x -= offset;				/* Betrag von offset addieren */ 
      min -= offset;
      max -= offset;
      x = (x - min) * (X_MAX-1) / (max - min);
      return x;
    }
    


  • 1. Dasselbe auch bei y_skaliert?
    2. Wow, danke für eure tolle Hilfe / Unterstützung und Arbeit 🙂 👍



  • Ich hab nun noch etwas dazugeschrieben für die Eingabe von a, b und c

    printf("\nGeben Sie a ein: ");
    scanf("%d\0", &a);
    printf("\nGeben Sie b ein: ");
    scanf("%d\0", &b);
    printf("\nGeben Sie c ein: ");
    scanf("%d\0", &c);
    


  • Nein y_skaliert ist so in Ordnung. Da wird kein Offset berechnet, weil mit der gegebenen Funktion kein negativer Funktionswert raus kommen kann.
    Allgemein ist mein Programm auf x² spezialisiert. Für eine Verallgemeinerung müsstest du die min- und max-Parameter für y_skaliert vorher richtig ermitteln und auch die Offset-Funktionalität von x_skaliert mit übernehmen. Momentan vereinfache ich die Wertwahl durch mein Wissen, dass keine negativen Werte raus kommen können und die größten Funktionswerte bei x_min und x_max liegen müssen.
    Bis auf die Parameter für die Y-Skalierung ist es aber flexibel gestaltet und sollte auch mit anderen Funktionen funktionieren.



  • Danke für die Infos und die Unterstützung von euch.



  • Codepad findet doch noch Fehler ^^

    Line 16: error: unterminated comment
    In function 'main':
    Line 43: error: expected declaration or statement at end of input
    Line 43: error: expected declaration or statement at end of input



  • Okay die ab 40 sind mein Mist sorry 😛



  • Ne passt doch alles, war nur dieser Kommentarfehler von mir!



  • Wenn du schon mit Codepad testest, solltest du gleich den Vorteil nutzen und uns den Link mitteilen. So sehen wir deinen konkreten Code und die Fehlerbeschreibung. Einfach nur Zeilennummern zu posten, wenn wir nicht wissen was du verändert hast, ist reines Ratespiel.


Anmelden zum Antworten