csvread funktioniert nicht

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
*IT-Lady*
Beiträge: 3
Registriert: Mi Mai 18, 2016 8:54 pm

csvread funktioniert nicht

Beitrag von *IT-Lady* » Mi Mai 18, 2016 9:07 pm

Hallo Zusammen!

versuche gerade ein Programm zu schreiben um 10 Studentennamen aus einer csv mit csvread zu holen . Aber irgendwie kann oder sieht Compiler diese nicht . :(

hier ist mein Code:

Code: Alles auswählen

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;





int main()
{

	struct Student
	{
		string firstname;
		string lastname;
		char sex;
		int matriculation_number;
		float final_mark;

	};

	Student students[10];

	ifstream csvread;
	csvread.open("data.csv", ios::in);

	if (csvread)
	{
		string s = "";
		int counter_field = 0;
		int counter_student = 0;

		while (getline(csvread, s, ';'))
		{

			if (counter_field == 0)
				students[counter_student].firstname = s;

			if (counter_field == 1)
				students[counter_student].lastname = s;

			if (counter_field == 2)
				students[counter_student].sex = s.at(0);

			if (counter_field == 3)
				students[counter_student].matriculation_number = atoi(s.c_str());

			if (counter_field == 4)
				students[counter_student].final_mark = atof(s.c_str());

			counter_field++;

			if (counter_field > 4)
			{
				counter_field = 0;
				counter_student++;
			}
		}

		csvread.close();
	}
	else
	{
		cout << "Fehler beim Lesen!" << endl;
	}




	for (int i = 0; i < 10; i++)
	{
		cout << "Student " << i << endl;
		cout << "  Firstname            => " << students[i].firstname << endl;
		cout << "  Lastname             => " << students[i].lastname << endl;
		cout << "  Sex                  => " << students[i].sex << endl;
		cout << "  Matriculation Number => " << students[i].matriculation_number << endl;
		cout << "  Final mark           => " << students[i].final_mark << endl;
		cout << endl << endl;
	}



	return 0;
fehlt hier vielleicht ne Bibliothek ? :?

Edit by Xin: Codetags hinzugefügt

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: csvread funktioniert nicht

Beitrag von Xin » Mi Mai 18, 2016 10:29 pm

Ich vermisse eine Frage!?
Der Quelltext kompiliert. Zum Testen habe ich keine passende Daten.

Sicher, dass das stimmt:

Code: Alles auswählen

     while (getline(csvread, s, ';'))
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

*IT-Lady*
Beiträge: 3
Registriert: Mi Mai 18, 2016 8:54 pm

Re: csvread funktioniert nicht

Beitrag von *IT-Lady* » Do Mai 19, 2016 11:43 am

Der Quelcode ist von unseren Proff . Er wollte uns bei der Aufgabe bisschen helfen. Bin leider noch nicht so fit in der Programmierung. Meiner Meinung nach fehlen da nach s die Atribute mit Vorname , etc. Damit csvread weist was sie in der Datei " Data.vsv" genau lesen soll.
Ist das ein richtiger Weg ?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: csvread funktioniert nicht

Beitrag von cloidnerux » Do Mai 19, 2016 12:16 pm

Aber irgendwie kann oder sieht Compiler diese nicht .
Der Compiler kann und sieht auch nichts. Das einzige was der Compiler macht, ist Quellcode in Maschinenbfehle umwandeln. Der Compiler hat keine Intelligenz, er kann mit irgendwelchen Namen außerhalb der Sprachnomenklatur nichts Anfangen, er weiß nicht das du eine csv Datei lesen möchtest und weiß auch nicht, welche Felder es in der CSV Datei gibt.
Du musst diese Informationen wissen und ein Programm schreiben, dass diese Aufgabe erfüllt.
Meiner Meinung nach fehlen da nach s die Atribute mit Vorname , etc. Damit csvread weist was sie in der Datei " Data.vsv" genau lesen soll.
"csvread" ist ein Name einer Instanz des Typs "ifstream". "ifstream" ist ein Input File Stream, ein Datenstrom aus einer Datei. Dieses Objekt liefert dir Daten, aber wertet sie nicht aus. Auch hier hat der Code keinerlei Intelligenz, diese muss der Programmierer haben.

Wie Xin schon geschrieben hat, fehlt hier die Frage. Was erwartest du, was bekommst du stattdessen heraus? Hast du schon versucht deinen Code nachzuvollziehen, was die einzelnen Zeilen machen. Auch mal ein paar cout's einfügen um den Inhalt diverser Variablen anzuschauen oder mal den Debugger bemühen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

*IT-Lady*
Beiträge: 3
Registriert: Mi Mai 18, 2016 8:54 pm

Re: csvread funktioniert nicht

Beitrag von *IT-Lady* » Do Mai 19, 2016 12:38 pm

Wenn ich den Code so lasse wie es ist . Es kompiliert aber gibt die Fehlermeldung : Fehler beim Lesen !.
Das Programm soll 10 Studenten mit Vornamen ,Geschlecht , Matrikelnummer und Abschlussnote rausgeben

PS: Meiner Meinung nach ist in diesen Programm alles vorhanden außer die Informationen zu den 10 Studenten . Ich möchte das die getline () in diese Data.scv geht und die Infos daraus gelesen werden. Es ist das einzige was nicht funkt :cry: . Wie man es zum Leben erweckt, bisher nicht herausgefunden :?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: csvread funktioniert nicht

Beitrag von cloidnerux » Do Mai 19, 2016 3:03 pm

Wenn ich den Code so lasse wie es ist . Es kompiliert aber gibt die Fehlermeldung : Fehler beim Lesen !.
Das ist doch schonmal was, womit man arbeiten kann.
Schauen wir uns doch mal an, wann diese Meldung erscheint:

Code: Alles auswählen

if (csvread)
{
[...]
}
else
{
      cout << "Fehler beim Lesen!" << endl;
}
Die Meldung kommt, wenn "csvread" nicht "wahr" ist, wann ist das den der Fall?
Dazu können wir uns die Doku von ifstream anschauen:
http://www.cplusplus.com/reference/ios/ ... ator_bool/
Dort steht geschrieben, dass ifstream als "false" evaluiert wird, sollte ein Fehler aufgetreten sein.
Was kann also alles Schiefgehen: Im einfachsten Fall ist die Datei nicht vorhanden.

Es folgt daraus => Ist in dem Ordner, in dem dein Programm ausgeführt wird eine Datei mit Namen "data.csv", dass die gewünschten Informationen im CSV Format enthält?
Meiner Meinung nach ist in diesen Programm alles vorhanden außer die Informationen zu den 10 Studenten . Ich möchte das die getline () in diese Data.scv geht und die Infos daraus gelesen werden. Es ist das einzige was nicht funkt :cry: . Wie man es zum Leben erweckt, bisher nicht herausgefunden :?
Die Informationen kommen aus einer Datei, natürlich sind sie nicht im Quelltext. Was du möchtest und was der Computer macht sind zwei verschiedene Dinge. Du musst lernen, dich besser (programmiertechnisch) auszudrücken, damit das was du programmierst auch das ist, was der Computer macht. Auf der anderen Seite musst du dir auch Gedanken machen, was der Computer tatsächlich macht. In deinem Fall ist alles richtig. Es kann keine Datei gefunden werden, also wird auch nichts ausgelesen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: csvread funktioniert nicht

Beitrag von Xin » Do Mai 19, 2016 3:21 pm

*IT-Lady* hat geschrieben:Der Quelcode ist von unseren Proff . Er wollte uns bei der Aufgabe bisschen helfen.
Welcher Aufgabe...?

Und damit meine ich nicht das was im ersten Posting steht, sondern die Frage: Ob die Aufgabe ist, dieses Programm irgendwie ans Laufen zu bekommen oder zu verstehen, wie man ein Programm ans Laufen bekommt.
*IT-Lady* hat geschrieben:PS: Meiner Meinung nach ist in diesen Programm alles vorhanden außer die Informationen zu den 10 Studenten . Ich möchte das die getline () in diese Data.scv geht und die Infos daraus gelesen werden. Es ist das einzige was nicht funkt :cry: . Wie man es zum Leben erweckt, bisher nicht herausgefunden :?
Ich habe die Vermutung, dass euer Prof euch den Quelltext nicht gibt, um einen Meinungsaustausch zu starten und Wünsche zu äußern.

Ich gehe davon aus, dass das Ziel ist, sich damit zu beschäftigen und das Programm dann "zum Leben zu erwecken".
Dazu muss man dann auch klarstellen, dass das Board hier sich an diejenigen richtet, die lernen wollen und nicht als Kontaktbörse für diejenigen dient, die irgendjemand suchen, um deren Hausaufgaben zu machen.

Daher kann ich Dir eigentlich nur raten, Dich mit dem Problem auseinander zu setzen und bei Verständnisschwierigkeiten bei der Programmierung hier zu fragen. "Hilfe, tut's nicht, mach mal" wäre im Bereich "Stellenangebote" möglich, dann allerdings mit Angabe einer Vergütung.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten