Wert mit dem letzten vergleichen!



  • Also, habe vor kurzem hier ne Hilfestellung von einigen bekommen, die mir echt geholfen hat!
    Ich habe dann noch an dem Programm ein bisschen herumgefeilt und so, aber eine frage hab ich noch! da weiß ich ned, wie ich das machen soll genau!

    Also damit lese ich nen Code ein und ich gebe mir die Zahlen wieder aus!
    Nur so wie jetzt gebe ich mir immer aus:
    X 1231231
    Y 324432
    Z 45345435
    und so weiter halt und in der nächsten Zeile wieder
    X..
    Y..
    Z..

    Jetzt, da das ganze ja Koordinaten sind, und man ja nicht immer von 0 startet würde ich gerne irgendwie den X Wert immer mit dem vorherigen und den ersten X Wert halt mit 0 dann vergleichen, dasselbe auch mit Y und Z!
    Aber hab schon versucht irgendwie mit, jedes mal wenn es X findet das ne variable um 1 erhöht wird und dann eben x stattdessen x(i) heißt, und ich dann vielleicht x=x(i)-x(i-1) machen kann, aber es ging nicht!
    könnt ihr mir vielleicht mit konkreten dingen helfen?

    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <string.h>
    
    #define NUMLENMAX 10
    
    FILE* fp = NULL;
    float x=0,y=0,z=0;
    int xx=0,yy=0,zz=0;
    
    char buf [NUMLENMAX+1]={0};
    
    float get_num()
    {
        float einlesen;
        fscanf(fp,"%f",&einlesen);
        return einlesen;
    }
    
    long get_x ()
    {
        x = get_num ();
        printf ( "\nX:%f\n", x );
        xx = (int)x*80;
        printf ( "\nX Schritte:%d\n", xx );
        getchar();
    }
    long get_y ()
    {
        y = get_num ();
        printf ( "\nY:%f\n", y );
        yy = (int)y*80;
        printf ( "\nY Schritte:%d\n", yy );
        getchar();
    }
    
    long get_z ()
    {
        z = get_num ();
        printf ( "\nZ:%f\n", z );
        zz = (int)z*80;
        printf ( "\nZ Schritte:%d\n", zz );
        getchar();
    
    }
    
    int main( int arg, char* argv[] )
    {
        int i=0;
        int c=0;
        fp = fopen ("C:\\Ich.txt", "rb");
        if ( !fp )
            return 0;
    
        while ( c != EOF )
        {
            c = fgetc (fp);
            switch (c)
            {
                case 'X':
                    get_x ();
                break;
    
                case 'Y':
                    get_y ();
                break;
    
                case 'Z':
                    get_z ();
                break;
    
            }
        }
    
        fclose(fp);
    
      return 0;
     }
    

    Beispiel Textdatei:
    Ich.txt:

    N001 G01 X1Y2Z3
    N002 G01 X4Y5Z6
    N003 G01 X7Y8Z9

    Danke im Voraus



  • speicher doch alle werte in einem array oder in einer datei. dann kannste alles vergleichen, was du willst und sooo.



  • Wie kann man nacheinanderfolgende Zahlen vergleichen aus einer Textdatei, die mit nem Abstand getrennt sind?
    verschieden lange aber!



  • Beziehungsweise, wie kann man Mehrere Zahlen in ein Array einlesen und dann immer mit der vorigen vergleichen? denn ich wollte schon immer den x wert in ein Array einlesen, ging aber nicht!



  • Alexander2183 schrieb:

    Wie kann man nacheinanderfolgende Zahlen vergleichen aus einer Textdatei, die mit nem Abstand getrennt sind?
    verschieden lange aber!

    is doch egal wie lang, float ist float. double ist double macht doch nix. du kannst die werte in ein array einlesen, filtern tust du die ja schon. oder wenns zu viele werte für ein array sind, kannst du die am besten binär immer je drei werte als struct in einer datei speichern.



  • ABer wenn ich es an ary übergeben will steht immer ein Fehler!
    Ich bin ein Anfänger das mit struct kapier ich ned, aber das mit array wär ne tolle Idee!
    Ich will ja ned nerven, aber kannst du mir vielleicht zeigen wies geht???

    ich habs so:

    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <string.h>
    
    #define NUMLENMAX 10
    
    FILE* fp = NULL;
    float x=0,y=0,z=0;
    //int xx=0,yy=0,zz=0;
    
    char buf [NUMLENMAX+1]={0};
    
    float get_num()
    {
        float einlesen;
        fscanf(fp,"%f",&einlesen);
        return einlesen;
    }
    
    int main( int arg, char* argv[] )
    {
        float ary[100];
    
        int c=0;
        fp = fopen ("C:\\Ich.txt", "rb");
        if ( !fp )
            return 0;
    
        while ( c != EOF )
        {
            c = fgetc (fp);
            switch (c)
            {
                case 'X':
                    x = get_num ();
                    x=&ary[1];
    
                    printf ( "\nX:%f\n", x );
                    //xx = (int)x*80;
                    //printf ( "\nX Schritte:%d\n", xx );
                    getchar();
                break;
    
                case 'Y':
                    y = get_num ();
                    printf ( "\nY:%f\n", y );
                    //yy = (int)y*80;
                    //printf ( "\nY Schritte:%d\n", yy );
                    getchar();
                break;
    
                case 'Z':
                    z = get_num ();
                    printf ( "\nZ:%f\n", z );
                    //zz = (int)z*80;
                    //printf ( "\nZ Schritte:%d\n", zz );
                    getchar();
                break;
    
            }
        }
    
        fclose(fp);
    
      return 0;
     }
    

    Und es geht nicht!
    Hab schon mal was eingelesen und zeichenweise an ein array übergeben, aber das hier geht irgendwie nicht!
    Bitte, wenn du mir (bestimmt gute) Tips gibst, zeig mir doch, was du genau meinst, ich versuch immer ewig allein herumzuprobieren und es klappt doch nicht!
    danke im voraus!



  • guck dir mal nen grundlagen kurs an, wie man ein array initialisiert und mit werten füllt.



  • Hi!
    Danke Mann, ich liebe dich!
    Habs mir eig. von anfang an gedacht, dass mit arrays geht, aber du hast mich bestärkt, dass ichs jetz nochmal probier!
    und auf einmal gehts!
    hab mich vorhin vertan!

    Echt vielen dank!

    Michael


Anmelden zum Antworten