bestimmte Spalte einer CSV Datei einlesen



  • ... wie müsste man die Zeile

    printf ("integers[%i]:\t%i\n",i,integers[i]);
    

    ändern, wenn nur die Integerwerte der 2.Spalte angezeigt werden sollten?
    Derzeit wird folgendes angezeigt:

    integers[0]: 2
    usw.
    
    printf ("%i\n",i,integers[i]);
    

    funktioniert leider nicht. Hierbei wird lediglich die aktuelle Zeilennr. ausgegeben.

    Viele Grüße,
    Silvi



  • Silvi21 schrieb:

    Versuche mich in C hiermit http://home.fhtw-berlin.de/~junghans/cref/index.html einzuarbeiten.

    Außer einer C-Referenz kann ich da nicht viel sehen.
    Kauf/leih dir lieber ein Buch.

    Als Online-Referenz ist http://www.cplusplus.com/reference/clibrary/ besser geeignet.

    Wenn du bei printf ("integers[%i]:\t%i\n",i,integers[i]); den Index (Zeilennummer) und den Wert siehst, und bei printf ("%i\n",i,integers[i]);
    nur den Index siehst, könnte das etwas mit den weitern Parametern zu tun haben.

    Deine Werte stehen in dem Feld integeres. Daraus kannst du folgern, dass das i, zuviel ist.

    Silvi21 schrieb:

    Der Wertebereich der 2.Spalte liegt im Interval [1;14].

    Dann brauchst du ein Feld von 15 Elementen (die 0 zählt mit, das macht es einfacher). z.B. int statistik[15];
    Alle Elemente des Feldes setzt du auf 0 (mit einer Schleife).
    Dann gehst du das Feld integers durch (wie bei beim print) und wenn du eine 1 findest, erhöhst du das Feld statistik[1] um 1. Wenn du eine 14 findest, erhöhst du das Feld statistik[14] um 1.

    int statistik[15] = {0};
        for (i=0; i<integers_count; ++i)
        {  
            if ((integers[i] >= 0) && (integers[i] < 15))
              ++statistik[integers[i]] ;
        }
        for (i=0; i<15; ++i)
        {
            printf ("%2i gibt es %3i mal \n", i, statistik[i]);
        }
    

    Ohne vernünftiges Buch Tutorial hilft dir das aber nicht weiter.
    C lernt man nicht durch Versuch und Irrtum.



  • Vielen Dank für Eure Hilfe!

    Grüße,
    Silvi



  • Silvi21 schrieb:

    Hallo ralph,

    vielen Dank für Deine Hilfe. Dein Code funktioniert super. Bei der Aufgabe handelt es sich nicht um eine Hausaufgabe. Es ist ein kleines privates Projekt und ich versuche ein wenig C zu verstehen. Habe jedoch damit so meine Problemchen.
    Wenn ich beispielsweise 8 Dateien mit je 10 Werten (in der zweiten Spalte) einlese, bekomme ich als Ausgabe 80 Arrays untereinander. Wie kann man jetzt mit diesen Werten weiter rechnen? An welcher Stelle vom Code muss man hierfür ansetzen? Würde gern zu jedem Wert die Häufigkeit des Auftretens anzeigen lassen. Weiterhin sollte jeder Wert nur einmal ausgegeben werden.

    Viele Grüße,
    Silvi

    DirkB ist mir zuvorkommen, so behalte ich meinen fast identischen Codeschnippsel für mich. 🙄

    Als ich mal blitzartig von Turbo Pascal auf C umsteigen musste, hat mir folgendes Tutorial am meisten genutzt:

    http://www2.hs-augsburg.de/informatik/vorlesungen/XX/c_cplus/tutorial/cyris/ckmain.htm

    Ich kann es auch heute noch empfehlen. Ein schneller, schnörkelloser Einstieg in C. Danach hat man einen sehr guten Überblick über die Möglichkeiten der Sprache.

    Mit den Codeschnippsel in diesem Thread hast Du eine gute Vorlage zum Selbststudium für folgende zwei Aufgaben:

    1. Gehe den Code Zeile für Zeile durch und versuche einem imaginären Zuhörer zu erklären, was hier passiert und warum. Übergehe keine Zeile, halte Dich lieber länger daran auf.

    2. Teile den Code in Funktionen auf. Ich weiß, das ist nervig, aber Du bekommst ein gutes Gefühl, welcher Block welche Informationen braucht und welche neuen Informationen Du am Ende des Blocks hast (EVA-Prinzip).

    viele grüße
    ralph



  • Silvi21 schrieb:

    http://home.fhtw-berlin.de/~junghans/cref/index.html

    Schrott.

    int func1(void);		/* Define a few functions.		*/
    int func2(void);
    
    main()
    {
    

    Der Mann beherrscht die Grundbegriffe nicht und außerdem viel von irgendwoher zusammengeklaubtes Zeug.



  • Silvi21 schrieb:

    Als ich mal blitzartig von Turbo Pascal auf C umsteigen musste, hat mir folgendes Tutorial am meisten genutzt:

    http://www2.hs-augsburg.de/informatik/vorlesungen/XX/c_cplus/tutorial/cyris/ckmain.htm

    Schrott.
    Wer im ersten Beispiel

    void main(void)
    

    vorführt, sollte selbst nochmal in die Lehre gehen.


Anmelden zum Antworten