Vergleichen von Zahlen aus Textdatei!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Vergleichen von Zahlen aus Textdatei!

    Hallo Leute!
    Ich bin hier neu, und nicht nur hier, auch in C mehr oder weniger!
    Brauche jedoch für ein privates Projekt eure Hilfe!

    Das Problem ist folgendes:
    Ich lese aus einer Textdatei Zahlen aus und gebe mir diese danach wieder aus, vereinfacht gesagt.
    Diese Zahlen möchte ich jedoch immer miteinander vergleichen. Also immer eine, mit der vorherigen.
    Und die erste eben mit 0. Und zusätzlich möchte ich diese Differenz mir auch ausgeben lassen.

    Hier ist mein bisheriger Code für diesen Part des Projekts:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <ctype.h>
    3. #include <stdlib.h>
    4. #include <limits.h>
    5. #include <string.h>
    6. #define NUMLENMAX 10
    7. FILE* fp = NULL;
    8. float x=0,y=0,z=0;
    9. //int xx=0,yy=0,zz=0;
    10. char buf [NUMLENMAX+1]={0};
    11. float get_num()
    12. {
    13. float einlesen;
    14. fscanf(fp,"%f",&einlesen);
    15. return einlesen;
    16. }
    17. int main( int arg, char* argv[] )
    18. {
    19. int c=0;
    20. fp = fopen ("C:\\Ich.txt", "rb");
    21. if ( !fp )
    22. return 0;
    23. while ( c != EOF )
    24. {
    25. c = fgetc (fp);
    26. switch (c)
    27. {
    28. case 'X':
    29. x = get_num ();
    30. printf ( "\nX:%f\n", x );
    31. //xx = (int)x*80;
    32. //printf ( "\nX Schritte:%d\n", xx );
    33. getchar();
    34. break;
    35. case 'Y':
    36. y = get_num ();
    37. printf ( "\nY:%f\n", y );
    38. //yy = (int)y*80;
    39. //printf ( "\nY Schritte:%d\n", yy );
    40. getchar();
    41. break;
    42. case 'Z':
    43. z = get_num ();
    44. printf ( "\nZ:%f\n", z );
    45. //zz = (int)z*80;
    46. //printf ( "\nZ Schritte:%d\n", zz );
    47. getchar();
    48. break;
    49. }
    50. }
    51. fclose(fp);
    52. return 0;
    53. }
    Alles anzeigen

    Die Textdatei Ich.txt unter C:\\ beinhaltet beispielsweise
    N001 G01 X1Y2Z3
    N002 G01 X4Y5Z6
    N003 G01 X7Y8Z9
    ...

    Die Zahlen haben jedoch auch mögliche Kommastellen und es müssen nicht immer alle drei Achsen vorkommen.
    Falls mal kein X Wert zum beispiel da ist, dann soll der neue X Wert einfach auf den letzten vorhandenen X wert gesetzt werden. (eben wie ein Koordinatensystem)
    Nun ist die Ausgabe:

    X1.000000
    Y2.000000
    Z3.000000
    X4,000000
    .....

    Und ich möchte mir auch den Unterschied zwischen dem ersten und dem zweiten .... X,Y,Z ausgeben lassen!

    Ich hoffe ihr haben etwas Zeit mir hiermit zu helfen, da ich mit einigen Tips zur Realisierung nichts anfangen konnte, da ich nicht wusste,
    wie diese umsetzbar sind. Zum Beispiel wurde mir gesagt ich könne es mittels
    einlesen der einzelnen Zahlen in Strings und anschließendes Vergleichen realisieren, dies funktionierte bei mir jedoch irgendwie nicht.
    Hab schon ewig herumprobiert und auch wo anders gefragt, aber dort habe ich immer nur so aussagen bekommen, die man vielleicht etwas versteht, aber
    als anfänger nie und nimmer umsetzen kann!
    Also wenns geht irgend ein beispiel oder eben eingebaut in den code, wies geht, damit auch ein anfänger erkennt wies geht!

    Ich danke im Voraus

    Michael
  • Also die Struktur ist anfangs immer gleich

    Immer N001 oder in der zweiten Zeile N002 und dann ein abstand und G01 oder G02 oder halt was, aber die beiden zählen nicht!
    nur die zahlen, also Koordinaten!
    und da können, müssen aber nicht ,wie du gesagt hast, welche sein!
    das einlesen geht aber an sich schon damit, nur eben vergleichen mit einer vorher, irgendwie x1 steht für erste zeile und x2 für zweite, und x2 dann mit x1 vergleichen. aber weiß ned wies geht zum schreiben halt.

    Struktur:
    N001 G01 X2131.232 Y21.21414 Z1.23