Karte auslesen



  • Hallo,

    Stellt euch folgendes Problem vor: Ich möchte eine Fahrfunktion eines Roboters mit Werten füllen. Die Werte müssen oft angepasst werden (wegen Tests) und ich möchte nicht immer wieder die Funktion mit neuen Werten schreiben. Besser wäre eine seperate Datei, in der ich die Werte anpassen kann. Es sollte ausserdem möglichst übersichtlich sein.

    Nun zu meiner Idee:
    Es bestehen immer Wertepaare:
    1a) geradeausfahren oder drehen
    1b) distanz oder winkel

    nun habe ich daran gedacht die abzufahrende Strecke in einem 2-dimensionalen Array zu speichern, und die Werte mit Hilfe einer Schleife in die Funktion zu füllen.

    Kennt da jemand eine bessere Variante, oder ist dieser Weg der einfachste?

    Bin über jede Antwort froh, da ich noch nicht soviel Ahnung von Programmierung habe. 😃



  • Ich würde die Wertepaare zu einer struct zusammenfassen und aus einer Textdatei per Schleife einlesen:

    //Prinziplösung:
    typedef struct
    {
      char type; //'f' für Fahren, 'r' für drehen
      double val;//evt. reicht auch int
    } move_data;
    
    FILE* infile = fopen("data.txt","r");
    int count;
    move_data* mydata;
    fscanf(infile,"%d",&count);
    mydata = malloc(count * sizeof(move_data));
    for(int i = 0;i<count && !feof(infile);++i)
      fscanf("%c%lf",&mydata[i].type,&mydata[i].val);
    

    Die Datei sieht dann etwa so aus (ohne die Kommentare):

    47               //Anzahl der Datensätze
    f10              //Fahren - Distanz in Metern
    r45              //Drehen - Winkel in Grad
    f5.5
    r0.5
    ...
    

Log in to reply