Vielen Dank für eure Hilfe. #2
Und wo genau hakt es? 1. Datei öffnen
2. Zeilenweise einlesen
2a. pro Zeile die 4 Werte (mit Leerzeichen getrennt? ) extrahieren
2b. in gewünschter Datenstruktur ablegen
3. Datei schließen
4. Über Datenstruktur iterieren und berechnen
Je nach Algorithmus kannst du die Datenstruktur natürlich auch überspringen und alles on-the-fly berechnen, während du die Zeilen einliest. #3
Zum Einlesen: std::ifstream, die Frage ist, wie viel Validierung willst du machen? Hier mal ein Sample ohne Validierung. C++:
struct dataset{
int tag, monat, jahr, neuinfektion;};
int main(){
std::ifstream f("");
std::vector
Solltest du ein gutes Buch suchen kann ich dir C von A bis Z empfehlen von Jürgen Wolf kann man auch Online gratis lesen..... Dort werden Files genau durchbesprochen...... mfg mike4004 #3 Hi mike4004, erst einmal danke für die Korrekturen. Sehe nun zumindest keine Sonderzeichen mehr. =)Danke auch für den Tipp (eBook), das werde ich mir die Tage mal zu Gemüte führen. Nun habe ich nur noch das Problem, dass ich immer nur ein "g" für den Inhalt jeder Zeile erhalte. Mit folgendem Code: int i; for(i = 0; i < 10;i++) { //fseek(datei, i, SEEK_SET); printf ("%i)%c\n", i, &line);} Das Ergebnis ist dann folgendes: 0) g 1) g 2) g 3) g 4) g 5) g 6) g 7) g 8) g 9) g Hättest du evt. noch einen Tipp woran es liegen könnte? C++ - c++ Einlesen der csv-Datei. PS: Welche Umgebung ist für einen Anfänger zu empfehlen? euer MrMorpheus;-) #4 Hi bei printf ("%i)%c\n", i, line); line muss das & weg! sonst übergibst du die Adresse der Variable und nicht den Wert und dafür ist%c nicht ausgelegt.... Hi also soltest du unter Windows programmieren nim DevC++ (einfach googlen) Das ist ne super IDE und gratis und meiner Meinung nach sogar besser als Visual Studio.
Die neue Rechnug sieht also so aus: * * (816); */ stream. seekg ( ( datenSatz - 1) * sizeof ( datenStruktur)); // Als nächstes wird () ausgeführt. stream. read ( ( char *) & rDatenStruktur, sizeof ( datenStruktur)); /* * Dem ersten Parameter wurde dem binärem Operator (char*) eine Referenz von rDatenStruktur übergeben. * Der zweite Parameter besagt, wieviele Bytes ausgelesen werden sollen. Hier wurden umgerechnet 204 * übergeben was exakt eine Strukturgröße ist. Der Dateizeiger fängt also bei Byte 816 erst an und * liesst auch nur 204 Bytes bis zum 1020ten Byte. Die Strucktur wird durch die Referenz übertragen. * */ stream. close (); cout << "Name: " << rDatenStruktur. name << " \t \t " \ << "Nachname: " << rDatenStruktur. Nachname << " \t "; cout << "Nummer: " << rDatenStruktur. nummer << std:: endl;} else { stream. Datei auslesen. clear (); cout << " konnte nicht geladen werden! " << std:: endl;} getch (); return EXIT_SUCCESS;} Kommentare zu diesem Beitrag Sie müssen angemeldet sein, um eine Nachricht zu erstellen.
Bytes laden anstatt Dateien... Direkter Zugriff auf Binärdateien Der Zugriff auf die Daten einer Datei war im letzten Tutorial von C++ Grundlagen bisher immer seriell. Man musste erst die davor stehenden Daten lesen, um an die weiter hinten stehenden zu gelangen. Die Daten sind ja auf hintereinander liegenden Speicherplätzen der Festplatte angeordnet. C++ Development :: Direkter Datenzugriff auf Binärdateien. Der Zugriff erfolgt dabei über einen Datenzeiger, der bei jedem Lesen und Schreiben automatisch weitergestellt wird. Ein C++ Programmierer kann jedoch der PC Hardware ganz genau vorschreiben was sie zu tun und/oder zu lassen hat (Java ist im Vergleich dagegen noch nichtmal in der Lage, rauszufinden ob der Processor Virtuell ist oder nicht...! ) der Datenzeiger der Festplattte nunmal Bestandteil der Hardware ist, können wir somit auch den Dateizeiger gezielt auf der Platte rumtanzen lassen. Üblicherweise benutzt man in C++ Binärdateien zur Verwaltung und Speicherung von Datensätzen. Mit dem direktem Zugriff auf bestimmte Daten einer Datei (ohne vorheriges Lesen vorstehender Daten) erreichen wir folgende Vorteile: Maximale Geschwindigkeitsausnutzung - Nichts ist schneller Durch die genaue Positionierung kommt nur das zurück was wir "bestellt" haben.
Sobald die Dateigröße abgerufen ist, übergeben wir ihren Wert als Größe des Datenelements an die Funktion fread, und als Anzahl der Datenelemente geben wir 1 an. Beachten Sie, dass geöffnete Dateien mit dem Funktionsaufruf fclose geschlossen werden müssen, der als einziges Argument den Dateizeiger entgegennimmt. #include
Bei der einlese-Funktion kommt folgender Fehler:
sowie beim close: "statement kann die Adresse der überladenen Funktion nicht ausführen". Habe folgendes insg. included:
- iostream
- fstream
- vector
- stdio
- string
und dazu halt namespace std. Nur wenn ich diesen namespace std. C++ datei einlesen zeilenweise. wieder lösche bekomme ich einen fehler bei "ifstream quelle" und zwar: "ifstream wurde in diesem Gültigkeitsbereich nicht definiert" und "expected ';' before quelle" und dann bekomme ich noch einen fehler bei "(datei) und zwar: "quelle wurde in diesem Gültigkeitsbereich nicht definiert"
nochmals danke für die hilfe
cin >> tmp >> ':';
Das >> ':' ist Quatsch. Was soll das machen? Ich kann dir nicht einmal sagen, was richtig wäre, weil ich nicht begreife, warum du das dort überhaupt hingeschrieben hast. Oh, Sorry, ich dachte, das ginge so wie bei scanf:
fscanf(datei, "%f;", Zahl);
Dann würde ich es so schreiben: (diesmal auch getestet)
#include
Transistive und Intransistive Verben auf einen Blick Als transitive Verben werden Verben bezeichnet, die als Ergänzung ein Akkusativobjekt haben können oder benötigen. Mit transitiven Verben kann man außerdem das Passiv, im Speziellen das Vorgangspassiv bilden, bei dem das ursprüngliche Objekt zum Subjekt des Passivsatzes wird. Alle transitiven Verben bilden die zusammengesetzten Zeitformen im Deutschen (z. B. Perfekt, Plusquamperfekt usw. ) mit dem Hilfsverb " haben". Transitive Verben können stets mit einem Akkusativobjekt auftreten, es muss jedoch nicht immer vorhanden sein. Beispiele: "lesen, sehen, kochen, schreiben, backen. " – "Philip schreibt. " (→ intransitive Verwendung, da das Akkusativobjekt fehlt) – "Philip schreibt einen Brief. " (→ transitive Verwendung mit Akkusativobjekt) – "Philip schreibt in seinem Zimmer. " (→ intransitiver Gebrauch mit Adverbialbestimmung) Zudem ist es mit transitiven Verben möglich, das Vorgangspassiv zu bilden. Dabei wird das Akkusativobjekt des Aktivsatzes zum Subjekt des Passivsatzes: – "Der Angler fängt einen Fisch. "
Ein Beispiel für ein Verb, das auf Englisch, aber nicht auf Spanisch transitiv verwendet werden kann, ist "schwimmen", wie in "Er schwamm den Fluss". Aber das spanische Äquivalent, Nadar kann nicht auf diese Weise verwendet werden. Während Sie etwas auf Englisch schwimmen können, können Sie nicht Nadar Algo in Spanisch. Sie müssen den Satz neu formulieren: Nadó por el río. Das Gegenteil kann auch passieren. Auf Englisch kann man nicht schlafen, aber auf Spanisch kann man: La madre durmió al bebé. Die Mutter legte das Baby ein. Wenn Sie solche Verben ins Englische übersetzen, müssen Sie den Satz häufig neu formulieren. Beachten Sie, dass es einige Verben gibt, die weder als transitiv noch als intransitiv klassifiziert sind. Diese beinhalten pronominal oder reflexiv Verben (oft auf Spanisch abgekürzt als prnl), berechnend oder verlinkend Verben ( Polizist), und Hilfs- Verben ( aux). Pronomenverben werden in Wörterbüchern als endend mit aufgeführt -se. Beispiele für verwendete spanische transitive und intransitive Verben Transitive Verben: Comí tres hamburguesas.
Transitivität im weiten Sinn Transitiv(2) ist ein Verb, wenn es neben dem Subjekt noch ein Akkusativobjekt verlangt. [2] Transitivität im engsten Sinn Transitiv(3a) ist ein Verb, wenn es neben dem Subjekt ein Akkusativobjekt verlangt und dieses Akkusativobjekt außerdem im Passivsatz zum Subjekt aufrücken kann. [3] [4] (3b): Eine Variante dieser Definition, die geringfügig weiter ist, fordert ein Akkusativobjekt, das auch als Bezugswort eines adjektivischen Partizip Perfekt Passiv dienen kann. [5] Verben, bei denen sich der Unterschied zwischen Definition (2) und (3) auswirkt, sind statische Verben wie etwas haben / enthalten und Emotionsverben in Sätzen wie Das regt mich auf. Diese Typen von Verben haben Akkusativobjekte (transitiv im Sinne (2)), aber haben keine entsprechenden Passivsätze (nicht transitiv im Sinne (3a)). Manche erlauben jedoch Partizipien ("Geld in noch nie gehabten Mengen"), und würden dann nach Definition (3b) doch als transitiv bezeichnet werden. Abgesehen von Akkusativ-Objekten gibt es bei verschiedenen Verben auch adverbielle oder prädikative Ergänzungen, die ebenfalls Akkusativ tragen können.
transitive Verwendung mit Akkusativobjekt "Silke schreibt in ihrem Zimmer. " intransitiver Gebrauch mit Adverbialbestimmung Zudem ist es mit transitiven Verben möglich, das Vorgangspassiv zu bilden. Dabei wird das Akkusativobjekt des Aktivsatzes zum Subjekt des Passivsatzes: Beispielsätze: "Der Angler fängt einen Fisch. " Aktivsatz mit ' einen Fisch ' als Akkusativobjekt. " Ein Fisch wird (vom Angler) gefangen. " Passivsatz mit ' Ein Fisch ' als Subjekt, das Präpositionalobjekt 'vom Angler' ist dann optional. Beachte: Es gibt einige wenige Ausnahmen transitiver Verben, die kein Vorgangspassiv bilden können. Einige davon sind: Verben des Besitzes: wissen, haben, erhalten, kenn en, besitzen, bekommen usw. Verben, die einen Betrag oder eine Menge ausdrücken: kosten, wiegen, betragen, umfassen usw. Zusätzlich bilden die transitiven Verben im Deutschen die zusammengesetzten Zeitformen in der Vergangenheit im Aktiv immer mit dem Hilfsverb ' haben '. Vergleiche dazu: "Ich habe einen Kuchen gegessen. "
Vorsicht, der Hund beißt! Der zweite Beispielsatz hat eine verallgemeinernde Bedeutung, der erste beschreibt eine einzelne Situation. Der Begriff "transitives Verb" erfordert es also auch, dass Bedingungen bzw. Varianten angegeben werden, in denen ein Objekt weggelassen werden kann, also in denen ein "transitives" Verb in einer intransitiven Konstruktion vorkommt. Verallgemeinerung oder auch Betonung der Art und Weise eines Geschehens sind Beispiele für Faktoren, die eine Weglassung des Objekts bei an sich transitiven Verben begünstigen. [7] Der Begriff der transitiven Konstruktion wird auch deswegen eigenständig gebraucht, weil ein Akkusativobjekt bei einem intransitiven Verb vorkommen kann; dies kann zum Beispiel geschehen, wenn das Verb noch ein resultatives Adjektiv bei sich hat: Er hat den Teller leergegessen. In dieser Konstruktion liegt die intransitive Variante des Verbs essen vor, denn der Teller ist nicht das Objekt, das gegessen wird. Der Zusatz des Adjektivs leer bringt jedoch ein weiteres Argument ein, das im Akkusativ realisiert wird.
Eine wichtige Sache muss in diesem Zusammenhang noch erwähnt werden: Man kann im Spanischen oft nicht erkennen, ob das Verb einen Akkusativ oder Dativ als Ergänzung hat. Das hat folgenden Grund: Der Dativ-Markant ist normalerweise die Präposition " a ", aber eine Sonderregel besagt, dass der Akkusativ bei Personen und belebten Dingen auch mit " a " gebildet wird, der sogenannte persönliche Akkusativ. " Yo veo la casa. " (Akkusativ) Ich sehe das Haus. " Yo respondo a la carta. " (Dativ) Ich beantworte den Brief. Klarer Unterschied zwischen Dativ und Akkusativ sichtbar durch die Präposition " a ", da es sich um unbelebte Dinge handelt. " Yo veo a mi tío. " (Akkusativ) Ich sehe meinen Onkel. " Yo respondo al hombre. " (Dativ) Ich antworte dem Mann. Hier ist der Unterschied zwischen Dativ und Akkusativ nicht erkennbar; einmal persönlicher Akkusativ mit " a ", einmal Dativ mit " a ". Folgende Verben haben im Span ischen ein direktes Objekt (Akkusativ) und im Deutschen ein indirektes (Dativ) oder präpositionales Objekt: SPANISCH – direktes Objekt (Akkusativ) DEUTSCH – indirektes Objekt (Dativ) / präpositionales Objekt SPANISCHES VERB deutsche Übersetzung amena z ar a alguién (alg. )
Reflexive Verben – Lingolia Plus Übungen Du benötigst einen Lingolia Plus Zugang für diese Zusatzübungen. Reflexive Verben – Presente (Aussagesätze) A1 Reflexive Verben – Presente (Fragen) Reflexive Verben – Presente (verneinte Sätze) Reflexive Verben – Presente (gemischt) Reflexive Verben – Presente (Text) A2 Reflexive Verben – Modalverben Reflexive Verben – Pretérito perfecto Reflexive Verben – verschiedene Zeiten (Tabelle) Reflexive Verben – verschiedene Zeiten (1) B1 Reflexive Verben – verschiedene Zeiten (2) B2 A1 Anfänger A2 Anfänger (fortgeschritten) B1 Fortgeschrittene B2 sehr Fortgeschrittene C1 Profis