C++ Programm Array



  • Hallo danke für deine Antwort.

    Ich muss alles von Hand machen. Aber wie gesagt mit Unterlagen. Also dass ich mehr oder weniger alles 1 zu 1 abschreiben kann.

    Danke für deinen Beitrag mal schauen was ich damit machen kann

    Gruss Alex



  • Ach ja. Es muss GENAU so sein wie ich es beschrieben habe also mit einem Array und nichts anderes.



  • Ich habe mir gedacht dass es folgendermassen aussehens soll:

    Ausgabe: " Geben sie den Filenamen an"
    Eingabe: "test.txt"

    Ausgabe: "welches zeichen soll ersetzt werden"
    Eingabe: "T"

    Ausgabe: "welches zeichen soll es ersetezn"
    Eingabe: "X"

    Änderung wird in das File test.txt geschrieben

    ""mit exit wird das programm beendet""

    naja das wär mal meine idee vom programm



  • Alex Smith schrieb:

    Ich muss alles von Hand machen. Aber wie gesagt mit Unterlagen. Also dass ich mehr oder weniger alles 1 zu 1 abschreiben kann.

    Dann fallen die STL-Algorithmen wohl aus und du mußt die Manipulationen über Schleifen erledigen (zum Zeichen löschen mußt du alles hinter der Position umkopieren):

    //ersetzen:
    for(int i=0;i<len;++i)
      if(arr[i]=='A') arr[i]='t';
    
    //löschen
    for(int i=0,j=0;i<len;++i)
      if(arr[i]!=' ') arr[j++]=arr[i];
    

    Alex Smith schrieb:

    Ach ja. Es muss GENAU so sein wie ich es beschrieben habe also mit einem Array und nichts anderes.

    Und was ist in diesem Array? Zeichen? ganze Zahlen? Hundekuchen?



  • ich nehme an das jede zeile der Datei ein string ist:)

    Kannst du Programmieren? Die Löungsansatz hat nich viel mit der umsetzung des Codes z utun :xmas2:

    und ein Vector ist ein Array und nichts anderes;) Alles von Hand Programmieren ist relativ;) :xmas2:



  • "können" kann ichs nicht.

    ich kann genau mal minimalste darum bin ich mit dieser aufgabe total aufgeschmissen und total am ende.

    hab keine ahnung wie anfangen. 😞 😕



  • Nach der Aufgabe zu urteilen, erwartet aber dein Lehrer, daß du es kannst 😃 Also hast du wohl im Unterricht geschlafen.



  • Entweder geschlafen 😃 ODER

    der Lehrer kanns selber nicht, koppiert alle Aufgaben aus dem Internet und schläft die ganze Lektion selber :p



  • Alex Smith schrieb:

    Entweder geschlafen 😃 ODER

    der Lehrer kanns selber nicht, koppiert alle Aufgaben aus dem Internet und schläft die ganze Lektion selber :p

    Wie wäre es wenn du erstmal damit anfängst überhaupt etwas an Code zu schreiben, und dann mit diesem Code deine Probleme aufzeigst. Der Lehrer mag noch so schlecht sein, die Grundlagen solltest du oder andere in deiner Klasse dennoch kennen.

    cu André



  • #include<fstream>
    #include<iostream>
    #include<vector>
    #include<string>

    using namespace std;

    int main(int argc, char *argv[])
    {
    char filename[128];
    ifstream file;
    char zeile[1024];

    // Dateinamen einlesen
    cout << "Dateinamen eingeben: " << flush;
    cin.getline(filename, 127);

    // Datei öffnen
    file.open(filename, ios::in);

    if (file.good())
    {
    // Wenn die Datei geoeffnet werden konnte

    // An den Anfang der Datei springen
    file.seekg(0L, ios::beg);

    while (! file.eof())
    {
    // Die Datei zeilenweise auslesen
    file.getline(zeile, 1024);
    cout << zeile << endl;
    }
    }
    else
    {
    // Wenn die Datei nicht geoeffnet werden konnte
    cout << "Datei nicht gefunden." << endl;
    }
    system ("pause");
    return 0;
    }

    // Alex Smith
    ➡ ➡ ➡ ➡ ➡ ➡

    soweit öffnet er das file das ist klar. jetzt muss ich das file nur noch in ein array tun. sobald es im array ist weiss ich wie man die zeichen ändert da habe ich schon mal was gemacht.
    aber wie bringe ich es ins array ?

    danke und gruss Alex



  • Hey zusammen

    Diese Aufgabe würde mich auch mal interessieren. Wir hatten vor einiger Zeit auch so eine ähnlich Aufgabe in der Schule. Irgendwie sind wir dann aber abgeschweift und haben die Aufgabe nicht gelöst. 👍



  • Alex Smith schrieb:

    soweit öffnet er das file das ist klar. jetzt muss ich das file nur noch in ein array tun. sobald es im array ist weiss ich wie man die zeichen ändert da habe ich schon mal was gemacht.
    aber wie bringe ich es ins array ?

    Hast du doch schon - der Aufruf file.getline() hat den Dateiinhalt in dein Array geschrieben 😉



  • #include <cstdio>
    #include <iostream>
    using namespace std;

    int main() {
    char einZeichen;
    int ersatzZaehler = 0;
    char eingabe[20];
    FILE *meinFile;

    printf("Geben Sie den Filenamen ein: ");
    char name[60];
    scanf("%s", &name);
    meinFile = fopen(name, "r+"); /* mit dem "fopen"-Befehl öffnet man eine Datei.
    Der zweite Wert in der Klammer steht für die Berechtigung.
    Mit "r+" hat man Schreib- und Leserechte.*/
    if (!meinFile) {
    printf("Konnte %s nicht oeffnen!\n", name);
    system("PAUSE");

    }
    else {
    char eingabe[1];
    printf ("Welches Zeichen soll gesucht werden? ");
    scanf("%s", &eingabe);
    char suchZeichen = eingabe[0];

    printf("Welches Zeichen soll als Ersatz verwendet werden? ");
    scanf("%s", &eingabe);
    char ersatzZeichen = eingabe[0]; // Der Dateizeiger steht jetzt am Anfang.

    while ((einZeichen = fgetc(meinFile)) != EOF) //EOF = "End Of File". "fgetc" nimmt das erste Zeichen der Datei und speichert dieses in "einZeichen".
    {
    if (einZeichen == suchZeichen)
    {
    fpos_t position; // Deklaration von "position".
    fgetpos(meinFile, &position); // Ermittelt den Zeiger und schreibt ihn in die Variable "position".
    position--; // Da der Zeiger beim "fgetc"-Befehl nach dem speichern um eine Stelle verschoben wird, setzt ihn dieser Befehl wieder zurück.
    fsetpos(meinFile, &position); // Speichert die aktuelle Position des Zeigers in die Variable "position".
    fputc(ersatzZeichen, meinFile); // Ersetzt ein Zeichern in der Datei.
    ersatzZaehler++; // Zählt die Anzahl der ersetzten Zeichen
    position++; // Die Position verschiebt sich um eine Position nach vorne.
    fsetpos(meinFile, &position); // Hier wird wieder die aktuelle Position des Zeigers in die Variable "position" gespeichert.
    }
    }
    printf("\nEs sind %d Zeichen ersetzt worden.\n", ersatzZaehler);
    system("PAUSE");
    }
    fclose(meinFile);
    return 0;
    }
    ➡ ➡ ➡ ➡ ➡ ➡

    das ist der code vom kollegen den ich erwähnt habe
    stimmt eigentlich soweit nur ist es halt kein array.



  • Ja, so kann man es auch machen - da verwendest du nur kein Array 😉

    Der grundsätzliche Ablauf wäre so:

    if(file.good())
    {
      file.getline(array,1024);
      int len=file.gcount();//wieviele Zeichen habe ich wirklich eingelesen?
    
      //arbeite mit deinem Array
    
      file.seekp(0);
      file.write(array,len);
    }
    

    PS: Tu und einen Gefallen und lies dir mal das durch - sfds



  • CStoll schrieb:

    PS: Tu und einen Gefallen und lies dir mal das durch - <a target='_blank' href='viewtopic.php?t=39411'>So funktioniert das Syntaxcoloring:</a>

    du könntest es ausbessern 🙂 :xmas1:



  • Und der Code deines Kollegen ist kein C++ sondern pures C (auch wenn <iostream> eingebunden ist).

    Und bei deiner Version hast du doch ein Array: char zeile[1024]



  • if (!meinFile) {
            printf("Konnte %s nicht oeffnen!\n", name);
            system("PAUSE");
    


  • queer_boy schrieb:

    du könntest es ausbessern 🙂 :xmas1:

    Ja, ich könnte - wenn ich denn wollte.



  • Ich habe ein txt file.
    Das File lese ich in ein Array ein.
    Anschliessed gebe ich an welches Zeichen durch welches ersetzt werden muss.
    Hat irgendjemand ein Beispielcode.
    Es kann doch nicht sein dass es keinen anderen Fall gab ?

    Gruss



  • Mein Gott ich werde ja immer besser.
    ich glaube ich bin der geborene programmierer.

    ok das vieleicht nicht ganz...

    der letzte teil des programms habe ich auch.

    ➡ ➡

    #include <stdio.h>
    
      int main(void)
      {
        char oldname[80], newname[80];
    
        printf("Umzubenennende Datei : ");
        gets(oldname);
        printf("Neuer Name           : ");
        gets(newname);
    
        if ( rename(oldname, newname) == 0 )
          printf("%s wurde umbenannt in %s\n", oldname, newname);
        else
          perror("rename");
    
        return 0;
      }
    

    ➡ ➡ ➡ ➡

    ich brauche nur noch hilfe wie ich das txt file in ein array tue mit maximal 255 zeichen und dass dann die zeichen ersetzt werden..

    irgendjemand 😞

    vielen vielen dank

    gruss alex


Anmelden zum Antworten