größte Zahl in einer Textdatei ermitteln



  • metapoint2011 schrieb:

    so würde ich ja sozusagen schon fasst wissen was die größte zahl ist.
    wenn die zahlen 0,1,2,3,4,5... halt nach der reinfolge sind.

    😕

    Und bitte lieber einen neuen Post machen als wild herumeditieren, da blickt doch kein Mensch mehr durch.



  • ja das mit dem vergleichen war jetzt doof.
    ^^habs ja noch geändert.

    der code ist ja eig in ein win 32api programm mit eingebaut. und das programm stürzt dann einfach ab, wenn es mehr als 10 sind z.b 1-20.



  • metapoint2011 schrieb:

    das programm stürzt dann einfach ab, wenn es mehr als 10 sind z.b 1-20.

    Mein Code stürzt bei mehr als 10 Zahlen in test ab??



  • ja beenden sich einfach und bei dem code von wutz kommen diese Fehler:

    f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(171): error C2040: 'p': 'char *' unterscheidet sich von 'int' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
    1>f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(174): error C2664: 'sscanf': Konvertierung des Parameters 1 von 'int' in 'const char *' nicht möglich
    1> Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    1>f:\api_tutorial\mvc++\tutorial\tutorial\tutorial.cpp(174): fatal error C1903: Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen.



  • Wutz schrieb:

    int main()
    

    Nichtmal ein klitzekleines void gefällig?

    Wutz schrieb:

    sscanf(p+=n,"%99s%n",s,&n)
    

    Magic number 99? Auch der Rest sieht irgendwie konfus aus.

    metapoint2011 schrieb:

    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

    Für C++ bitte eine Etage tiefer absteigen.



  • Du solltest mal genau schreiben, was in der Datei konkret steht und was du erreichen möchtest. Ist das Dateiformat so vorgegeben und nicht änderbar?
    Eventuell gibt es bessere Formate, mit denen du dein Problem wesentlich geschickter lösen könntest (bspw. Konfiguratonsdateien [*.ini]).

    Übrigens: Welcher Compiler beim MSVS zum Einsatz kommt, hängt einzig und allein von der Dateiendung der Dateien ab (*.c -> C-Compiler, .cpp/.cc etc. C++-Compiler).



  • metapoint2011 schrieb:

    ja beenden sich einfach

    Kann ich nicht reproduzieren. Hast du was daran verändert?



  • also eig. sollte das alles in C bleiben. soweit möglich.

    komisch das mir jetzt noch keiner helfen konnte.

    nochmal zu mngdb:

    wenn die einträge in der datei nur bis 10 gehen würden. dann läuft das programm 100%. aba sobald es mehr sind nichtmehr.

    und wir nehmen ja an das wir nicht wissen wieviele es sind.



  • Vicious Falcon schrieb:

    MSVS

    Die Hinweise darauf hatte ich übersehen.

    metapoint2011: Hol dir lieber einen zeitgemässen C-Compiler. Wir haben bald 2011.



  • metapoint2011 schrieb:

    nochmal zu mngdb:

    wenn die einträge in der datei nur bis 10 gehen würden. dann läuft das programm 100%. aba sobald es mehr sind nichtmehr.

    Nochmal: das kann ich nicht reproduzieren. Mein Code läuft imho mit jeder Anzahl von Zahlen in test .



  • habe nix verändert ausser das main usw.. weggelassen da der code nur eingebaut wird.

    Vicious Falcon schrieb:

    Du solltest mal genau schreiben, was in der Datei konkret steht und was du erreichen möchtest. Ist das Dateiformat so vorgegeben und nicht änderbar?
    Eventuell gibt es bessere Formate, mit denen du dein Problem wesentlich geschickter lösen könntest (bspw. Konfiguratonsdateien [*.ini]).

    Übrigens: Welcher Compiler beim MSVS zum Einsatz kommt, hängt einzig und allein von der Dateiendung der Dateien ab (*.c -> C-Compiler, .cpp/.cc etc. C++-Compiler).

    in der datei steht z.b das "unten". was aber immer mehr wird.
    (das format ist änderbar)

    1 , wort;
    2 , wort2;
    3 , Hallo;
    4 , Was;
    5 , Ahja;
    6 , Achso;
    7 , Blabla;
    8 , fdas;
    9 , afasf;
    10, asfas;
    12, afasf;
    13, afasf;
    14, afasf;
    15, afasf;
    16, afasf;
    17, afasf;
    18, afasf;
    19, afasf;
    20, afasf;

    ich möchte die größte zahl herrausfinden damit ich dies alles in einer lisbox ausgeben kann. mit einer for schleife

    "for(i=1; i< >>>HIER KOMMT DER WERT HIN<<<; i++)"

    dateiformat der quelldatei is .c

    compiler is microsoft visual c++ 2010 express



  • metapoint2011 schrieb:

    habe nix verändert ausser das main usw.. weggelassen da der code nur eingebaut wird.

    Da bau ich für dich ein lauffähiges Programm, und du probierst es nichtmal aus, ohne es zu verändern? Ich geb's auf.



  • mngbd schrieb:

    metapoint2011 schrieb:

    habe nix verändert ausser das main usw.. weggelassen da der code nur eingebaut wird.

    Da bau ich für dich ein lauffähiges Programm, und du probierst es nichtmal aus, ohne es zu verändern? Ich geb's auf.

    das programm macht einfach nicht das was ich möchte.

    ich möchte die größte zahl wissen, ohne zu wissen wie viele drin sind.

    und mit deim base = 10; tust du ja schon vorraussetzen das man wissen muss wieviel dadrinne ist.



  • metapoint2011 schrieb:

    ich möchte die größte zahl wissen, ohne zu wissen wie viele drin sind.

    Genau das tut mein Programm.

    metapoint2011 schrieb:

    und mit deim base = 10; tust du ja schon vorraussetzen das man wissen muss wieviel dadrinne ist.

    Nein, das ist die Basis des Zahlensystems. Hab ich aber auch schon gesagt.

    Und jetzt: EOD.



  • Vicious Falcon schrieb:

    Übrigens: Welcher Compiler beim MSVS zum Einsatz kommt, hängt einzig und allein von der Dateiendung der Dateien ab (*.c -> C-Compiler, .cpp/.cc etc. C++-Compiler).

    Unsinn.
    Dazu gibt es die Optionen /TP /TC, welche auch über Projekteigenschaften erreichbar sind.



  • Da haben wir es doch schon: Schreib die Einträge einfach untereinander in die Datei und lese zeilenweise ein:

    FILE* f = fopen("text.txt","r");
        char line[100];
        if(f)
        {
            while(fgets(line,100,f))
            {
                SendDlgItemMessage(hwnd,ID_DES_CTRLS,LB_ADDSTRING,0,(LPARAM)line);
            }
            fclose(f);
        }
    

    Aufbau der Datei dann

    Wort1
    Wort2
    Wort3
    ...
    

    Edit: @wutz: Wo denn da genau?



  • Vicious Falcon schrieb:

    [/cpp]SendDlgItemMessage(hwnd,ID_DES_CTRLS,LB_ADDSTRING,0,(LPARAM)line);[/cpp]

    Wollt ihr das nicht im Windows-Forum besprechen?



  • Kommt es dir wirklich auf die Zahl an oder brauchst du nur die Anzahl der Zeilen in der Datei?



  • brauche nur die größte zahl... mehr nicht.

    die muss dann noch -1 gerechnet werden. aba das is ja einfach.

    var-1; oder nicht?



  • Vicious Falcon schrieb:

    Edit: @wutz: Wo denn da genau?

    Bei VS 2008 Express:
    Eigenschaften / Konfigurationseigenschaften / C/C++ / Erweitert --> Kompilierungsart


Anmelden zum Antworten